首先有自己的项目仓库,项目的composr.json配置如下
代码语言:javascript复制{
"name": "test/packag1",
"description": "私有仓库创建测试",
"type": "library",
"license": "proprietary",
"minimum-stability": "dev",
"require": {
"ext-curl": "*",
"ext-redis": "*",
"ext-fileinfo": "*",
"ext-libxml": "*",
"ext-simpleXml": "*",
"ext-json": "*",
"monolog/monolog": "^1.25",
},
"keywords": [
"test,library"
],
"authors": [
{
"name": "joshua317",
"email": "joshua317@joshua317.com",
"role": "Master"
}
],
"repositories": {
"composer.joshua317": {
"type": "composer",
"url": "http://composer.joshua317.com"
}
},
"prefer-stable": true,
"config": {
"optimize-autoloader": true,
"preferred-install": "dist",
"sort-packages": true,
"secure-http": false,
"process-timeout": 120
},
"require-dev": {
"phpunit/phpunit": "^9.0"
}
}
一、使用 Satis 搭建私有仓库
使用 Composer 自带的建项目功能,这个相当于git clone composer install 运行 post-install 脚本。
私有仓库的创建很简单,直接通过使用下面命令创建就可以
代码语言:javascript复制cd /data/wwwroot/
composer create-project composer/satis --stability=dev --keep-vcs --no-secure-http
二、建立satis.json配置文件
上面命令完成后,进入到目录,进行satis.json文件的创建
代码语言:javascript复制{
"name": "My Repository",
"homepage": "http://composer.joshua317.com",
"repositories": [
{
"type": "vcs",
"url": "http://gitlab.joshua317.com/test/package1.git"
}],
"require":
{
"test/package1": "dev-master"
},
"require-all": false,
"archive":
{
"directory": "dist",
"format": "tar",
"skip-dev": true
}
}
配置文件详解
代码语言:javascript复制name:仓库名字
homepage:主页地址
repositories:包所在地址
require:指定获取哪些包及对应的版本,获取所有包使用”require-all”: true,与包中composer.json中的名称相同,不同会出现问题
二、生成仓库及更新仓库列表
使用下面命令会生成一个public目录,里面有生成的所有包的信息,然后把这个目录设置到可以用域名访问的地方,比如 composer.joshua317.com
代码语言:javascript复制cd /data/wwwwoot/
php bin/satis build satis.json public/
也可以使用下面命令行生成指定包的信息
代码语言:javascript复制php bin/satis build satis.json public/ test/test1 test/test2
三、NGINX配置
代码语言:javascript复制server {
listen 80;
server_name composer.joshua317.com;
index index.html index.php;
root /home/wwwroot/satis/public;
access_log /data/log/composer-access.log default_access;
error_log /data/log/composer-error.log error;
location ~ .php$ {
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
服务起来后,浏览器输入:http://composer.joshua317.com 进行访问
四、使用私有仓库包
在自己项目中的composer.json中添加类似如下内容
代码语言:javascript复制{
"require":
{
"test/package1": "*"
}
"config":
{
"secure-http": false
}
"repositories":
{
"packagist":
{
"type": "composer",
"url": "http://composer.joshua317.com"
}
}
}