Satis搭建composer私有库(自定义下载目录)
在我们的日常php开发中需要使用大量的第三方包和类库, 怎么管理是一个问题,
我们用的Yii2框架, 但是并没有把composer用起来, 由于最近更换为docker部署项目, 于是想起来用composer来管理包并降低部署代码的时间
安装composer(在你当做私有库的服务器上以及开发环境)
参考 https://www.phpcomposer.com/ (有国内镜像使用方法)
安装satis (在你当做私有库的服务器上)
mkdir /data #我是在根目录下
cd data/
mkdir satis
cd satis/
composer create-project composer/satis --stability=dev --keep-vcs
mv satis mypackages.com
cd mypackages.com/
vim satis.json #配置文件需要手动创建satis.json文件内容如下, 可以复制后修改成你的参数
{
"name": "MyRepository",
"homepage": "http://mydandan.wang",
"repositories": [
{ "type": "vcs", "url": "https://github.com/LIzheng1993/test.git"},
{ "type": "vcs", "url": "https://git.oschina.net/1129103472/ceshi.git"}
],
"require-all" : true,
"archive":{
"directory":"dist",
"format":"tar",
"prefix-url":"http://mydandan.wang",
"skip-dev":true
}
}其中部分配置的含义
- repositories: 包的存储路径,这里可以是内网, 为了演示, 我用github来存储代码
require:具体的包的名称,后面的版本号实际就是git里的tag 。也可以直接使用 require-all:true 的配置获取全部。
archive:下载远端项目到本地存储,会自动生成tar包保存在dist里,可以加快后续composer的速度。
PS:如果git使用的是ip访问,需要设置 composer config -g secure-http false 再PS:如果设置了archive,对于nginx用户请注意nginx用户与php-fpm的执行用户相同,否则会导致下载tar包无效
生成(类似于build) 一般出问题的话都是目录的权限问题
php bin/satis build satis.json public/
配置Nginx
server {
listen 80;
server_name mydandan.wang;
root /data/satis/mypackages.com/public;
index index.php index.html;
access_log /var/log/nginx/mypackages.com.log;
error_log /var/log/nginx/mypackages.com.log.err debug;
rewrite_log on;
location ~* \.php$ {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass unix:/var/run/php-cgi.sock;
fastcgi_index index.php;
}
location = /favicon.ico {
log_not_found off;
access_log off;
}
}
成功后进入mydandan.wang 会出现这样的页面
使用
在自己的项目中添加composer.json文件
{
"repositories": [
{
"type": "composer",
"url": "https://packagist.phpcomposer.com"
},
{
"type": "composer",
"url": "http://mydandan.wang"
}
],
"require": {
"sapolang/ceshi": "*",
"test/helloworld": "*"
},
"config": {
"secure-http": false
}
}
"secure-http": false 是检查是否https, 设置false就可以使用http地址作为仓库了, 否则会报错
然后执行composer install 或 composer update
也可以添加 -vvv选项来观察运行的详情
自定义路径
在这里我仅说明作为一个包使用者时如何把包下载到我们想安装的任何位置
仅需要在composer.json文件中的 requires 中添加这个包 "composer/installers": "*" 并在 extra 下设置 installer-paths 属性。(extra和require是同级别的)
Drupal 的多站点设置就是一个很好的例子,其中的资源包应该被安装到各自网站的子目录。
在这里我们使用 composer/installers 来覆盖安装路径:
{
"extra": {
"installer-paths": {
"sites/example.com/modules/{$name}": ["vendor/package"]
}
}
}
上面的 "sites/example.com/modules/{$name}": ["vendor/package"] 中 sites/example.com/modules/ 可以是你项目中的任何目录, {$name} 会被 : 后面的["vendor/package"] 替换掉
至此,可以用于公司内部的私有仓库就搭建完成了
总结
本地 : 只需配置composer.json使用就行, 最多设置下目录, 设置下https检查为false
用作私有库的服务器 : 主要是起了一个packagist的作用, 但是它是我们自己私有的, 而packagist是公开的, 如不理解可以看下packagist网站 https://packagist.org/
需要做也很简单, 安装satis, 配置satis.json文件, 配置Nginx, 然后Build生成代码库
真正代码存放的地方:
可以是github也可以是你们公司本地的gitlab,应该也可以直接存到私有库的服务器上(这里笔者没尝试)
Satis搭建composer私有库(自定义下载目录)的更多相关文章
- satis 搭建 Composer 私有库的方法
安装 satis 命令行下执行: php create-project composer/satis --stability=dev --keep-vcs . 配置 创建 satis.json 文件, ...
- 在 Docker 搭建 Maven 私有库
在 Docker 搭建 Maven 私有库 小引 If you are developing software without a repository manager you are likely ...
- docker学习---搭建Docker私有库及删除库内镜像
环境准备系统: cat /etc/redhat-release CentOS Linux release (Core) 主机两台,分别是docker私有库服务器(IP 192.168.121.121) ...
- 使用 satis 搭建 composer 本地仓库
环境 windows nginx php composer 安装 拉取 satis 项目包,并拉取项目依赖 composer create-project composer/satis --stabi ...
- 创业公司十分钟简单搭建GIT私有库
欢迎关注老码农的微信公共账号,与CSDN博客同步 一.背景 小公司.协同开发的人不多,建gitlab比較麻烦,仅仅须要在Server端建立一个简单的git共享库就OK. 二.建立仓库 Server端: ...
- maven私有库搭建
一.在企业中基本上都会有自己的maven私有库,主要的目的就是方便依赖包的下载.如果采用远程的方式来实现的话,很多时候会考虑网速问题.如果自己活着公司搭建的私有库,这一样在使用上面会效率更高. 二.私 ...
- Dubbo入门到精通学习笔记(四):持续集成管理平台之Maven私有库和本地库的安装与配置
文章目录 介绍 Maven私有库和本地库的安装与配置 Nexus安装 Nexus 配置(登录后) 介绍 如果构建的Maven项目本地仓库没有对应的依赖包,那么就会去Nexus私服去下载, 那么如果Ne ...
- 安装Maven并搭建Maven私有仓库
一.说明 Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具.我们在进行Java代码开发的时候,Eclipse+Maven+Jetty是一个十 ...
- 使用 satis 搭建一个私有的 Composer 包仓库
在我们的日常php开发中可能需要使用大量的composer包,大部份都可以直接使用,但在公司内部总有一小部份包是不能公开的,这时候我们就需要搭建一个公司内部使用的composer仓库,好在compos ...
随机推荐
- MySQL高级知识(十三)——表锁
前言:锁是计算机协调多个进程或线程并发访问某一资源的机制.在数据库中,除传统的计算机资源(如CPU.RAM.I/O等)的争用外,数据也是一种供许多用户共享的资源.如何保证数据并发访问的一致性.有效性是 ...
- MySQL高级知识系列目录
MySQL高级知识(一)——基础 MySQL高级知识(二)——Join查询 MySQL高级知识(三)——索引 MySQL高级知识(四)——Explain MySQL高级知识(五)——索引分析 MySQ ...
- MySQL高级知识(九)——慢查询日志
前言:慢查询日志是MySQL提供的一种日志记录,它记录MySQL中响应时间超过阈值的语句,具体指运行时间超过long_query_time值的sql语句,该sql语句会被记录到慢查询日志中.慢查询日志 ...
- 因PHP漏洞,超过4.5万个中国网站被攻击
因PHP漏洞,超过4.5万个中国网站被攻击 日前据外媒ZDNet了解,超过4.5万个中国网站受到了试图进入网络服务器的不法分子攻击. 此次黑客利用中国网络安全公司VulnSpy在ExploitDB上发 ...
- 缓存数据库Memcache
为什么用缓存数据库 MySQL:将数据存储在磁盘上,数据写入读取相对较慢 Memcached:将数据存在内存中的数据库,数据读写都快,但是数据容易丢失 数据存储,数据仓库选择MySQL这种磁盘的数据库 ...
- 创建线程时如果既传入了runnable对象,又继承thread重写了run方法,会执行的哪里的代码
1 使用线程的方式,继承thread类,重写run方法 new Thread() { @Override public void run() { System.out.println("我是 ...
- [matlab] 4.M函数
函数文件的编写 新建一个函数文件 函数的第一行的格式 :function [输出的参数] =函数名 (输入的参数) 输入和输出的参数可以有多个 保存函数文件的时候,注意文件名要和函数名一样 函数头和函 ...
- SpringBoot-06:SpringBoot增删改查一套完整的考试案例
本此博客记录一套考试题,随后我把项目以及题目发到github上,简单的说一下springboot的开发 本此考试题用Spring+SpringMVC+MyBatis+SpringBoot+MySQL+ ...
- 转载:linux同步时间信息
Linux - CentOS7上的时间同步 1. 时区的概念 1.1 时区简介 地球是自西向东自转,东边比西边先看到太阳,东边的时间也比西边的早.东边时刻与西边时刻的差值不仅要以时计,而且还要以分和秒 ...
- 仿照wtform自定义Form组件
仿照wtforms自定义Form组件 1.wtforms 点击查看源码分析及使用方法 2.自定义Form组件 #!usr/bin/env python # -*- coding:utf-8 -*- f ...
