一、说明
Composer 是 PHP5.3以上 的一个依赖包管理工具。它允许你声明项目所依赖的代码库,它会在你的项目中为你安装他们。Composer 不是一个包管理器。是的,它涉及 “packages” 和 “libraries”,但它在每个项目的基础上进行管理,在你项目的某个目录中(例如 vendor)进行安装。默认情况下它不会在全局安装任何东西。因此,这仅仅是一个依赖管理。
我们企业在使用各种服务的时候,首要的肯定是安全,composer虽然有公共的服务提供给全球用户,但是企业还是需要有自己的私有服务,主要有以下几点考虑:下载速度要快,允许个性化定制,有全部掌控权限,足够稳定。
二、安装
2.1:生成satis项目
cd /data/www/ //自定义安装目录
composer create-project composer/satis --stability=dev --keep-vcs //创建satis项目
如果系统没有安装composer命令,可以使用离线版composer.phar程序,下载地址见:ComposerA Dependency Manager for PHP
https://getcomposer.org/download/
2.2:配置satis
cd /data/www/satis
vim satis.json
....
{
"name": "repo/dev",
"homepage": "http://192.168.90.234:9099",
"repositories": [
{
"type": "composer",
"url": "https://mirrors.aliyun.com/composer/"
},
{
"type":"git",
"url":"http://git.wjh.com/wjh/pinyin.git"
},
{
"type":"git",
"url":"http://git.wjh.com/wjh/aliyun-log-sdk.git"
},
{
"type":"git",
"url":"http://git.wjh.com/wjh/qywx-sdk.git"
}
],
"config":{
"secure-http":false
},
"archive": {
"directory": "dist",
"format": "tar",
"prefix-url": "http://192.168.90.234:9099",
"skip-dev": true
},
"require": {
"php": ">=7.0.0",
"yiisoft/yii": "1.1.19",
"predis/predis":"1.1.1",
"guzzlehttp/guzzle":"6.3.0",
"aliyuncs/oss-sdk-php": "2.3.0",
"alibabacloud/client": "1.5.4",
"gregwar/captcha": "1.1.7",
"aliyunmq/mq-http-sdk": "1.0.1",
"elasticsearch/elasticsearch": "7.2.0",
"endroid/qr-code": "3.6.1",
"picqer/php-barcode-generator": "0.3",
"overtrue/pinyin": "4.0.3",
"phpoffice/phpspreadsheet":"1.12.0",
"phpoffice/phpexcel": "1.8.2",
"wjh/pinyin":"4.0.7",
"wjh/aliyun-log-sdk":"0.6.2",
"alibabacloud/polardb": "1.8.402",
"alibabacloud/sdk":"1.8.402",
"wjh/qywx-sdk":"1.0.1"
},
"require-dependencies": true,
"require-dev-dependencies": true
}
我们简单解释一下这个json文件:
name:仓库的名字,可以随便定义
homepage:仓库建立之后的的主页地址
repositories:指定去哪获取包,url中需要带.git
require:指定获取哪些包,如果想获取所有包,使用require-all: true, 一般不需要全获取
secure-http:如果你没有ssl证书配置https,请设置为false
2.3:初始化satis
php bin/satis build satis.json web/ //依照配置文件生成服务目录,服务目录为 ./web/
或
php bin/satis build satis.json web/ this/package that/other-package //追加包名,完成下载
使用上面的命令不出意外就会在web目录下生成相应的文件,如果出错,根据错误提示去解决即可,常见的错误可能是权限问题,或是git版本过低等。
2.4:启动satis服务(2种方式)
2.4.1:使用php启动一个服务器
php -S 0.0.0.0:9099 -t web/
2.4.2:将web目录配置到nginx服务器进行访问
server {
listen 9099;
server_name 0.0.0.0;
root /data/www/satis/web;
index index.php index.html;
access_log /var/log/nginx/packages.dev.com.log main;
error_log /var/log/nginx/packages.dev.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;
}
}
2.5:使用satis服务
2.5.1:浏览器直接访问:http://ip:9099,可以进入包管理后台界面,你可以查询你想要的包是否存在
2.5.2:通过 composer.json文件,composer自动进行包下载:
vim composer.json
....
{
"repositories": [
{ "type": "composer", "url": "http://192.168.90.234:9099/"}, //设置访问私服地址
{"packagist": false} //这一步一定要,否则每次都会校验是否有新版本,过程会很慢
],
"config":{
"secure-http":false //使用http,不使用https (因为我们没有证书)
},
"require": {
"php": ">=7.0.0",
"yiisoft/yii": "1.1.19",
"predis/predis":"1.1.1",
"guzzlehttp/guzzle":"6.3.0",
"aliyuncs/oss-sdk-php": "2.3.0",
"alibabacloud/client": "1.5.4"
}
}
....
php composer.phar install
2.6:安装可能遇到的问题
问题:生成项目过程中,遇到缺少php扩展的错误
解决:第一步composer生成satis项目时,需要依赖于部分php的基础扩展,比如php-mbstring等,如果没有安装扩展需要先安装所依赖的php扩展
:使用 satis 搭建一个私有的 Composer 包仓库-博客园https://www.cnblogs.com/maxincai/p/5308284.html
Handling private packageshttps://getcomposer.org/doc/articles/handling-private-packages.md
Github上有一个基于satis的开源web版composer私服,感兴趣的可以自己动手搭建一下,我们公司实际使用体验还不错:project-satisfy/satisfy
https://github.com/project-satisfy/satisfy