ZComposer 镜像的安装部署
推荐运行主机配置:
- 内存最好不低于4G
- 剩余磁盘空间不低于30G
1 | $ apt install beanstalkd |
修改配置参数
通常根据自己部署的实际环境,修改参数。详细配置说明详见 config.default.php
cp config.default.php config.php
,修改 config.php 中的如下参数
1 | /** |
supervisor 配置
sudo vim /etc/supervisor/supervisord.conf
,添加如下配置信息:
[program:crawler]
command=php ./bin/console app:crawler
directory=/home/zencodex/composer-mirror/ ;部署代码的位置,自行替换
autostart=true
autorestart=true
redirect_stderr = true ; 把 stderr 重定向到 stdout,默认 false
stdout_logfile_maxbytes = 10MB ; stdout 日志文件大小,默认 50MB
stdout_logfile_backups = 5 ; stdout 日志文件备份数
stdout_logfile = /tmp/composer_crawler_stdout.log
[program:composer_daemon]
command=php ./bin/console app:daemon
directory=/home/zencodex/composer-mirror/ ;部署代码的位置,自行替换
autostart=true
autorestart=true
redirect_stderr = true ; 把 stderr 重定向到 stdout,默认 false
stdout_logfile_maxbytes = 10MB ; stdout 日志文件大小,默认 50MB
stdout_logfile_backups = 5 ; stdout 日志文件备份数
stdout_logfile = /tmp/composer_daemon_stdout.log
crontab 定时任务
1 | # sudo crontab -e |
常用命令
1 | # 执行抓取任务 |
For Developers
- 没有使用数据库存储,完全是按目录结构存储
- 每个包的 dist/zip 文件存储的是对应 github url的下载地址,因磁盘空间有限,不在本地存储,直接推送到云端
- 清理过期文件,判断是否有更新,是否过期的依据是文件的时间戳,所以不要手动对文件做 touch,或引起时间戳变化的操作
如果使用非又拍云的其他平台,需要注意以下代码,需要自行实现
- ClientHandlerPlugin 需要 Flysystem 的对应 Adapter 有对应接口,本例中只有 zencodex/flysystem-upyun 实现了,其他第三方包,可以参照样例自行实现
- Cloud::refreshRemoteFile,作用是刷新 CDN 缓存的文件,这个每日有调用频率限制,所以只刷新 package.json 时使用
- Cloud::refreshRemoteFile,如果使用非又拍云的平台,需要替换为自己平台刷新代码。或者参照
ZenCodex\Support\Flysystem\Adapter\UpyunAdapter
封装 getClientHandler。 - Cloud::prefetchDistFile 和 refreshRemoteFile 类似,调用的是云平台特殊接口,无法统一封装在 Flysystem,所以也通过 getClientHandler 处理
注意最大子目录数的坑
代码详情见 src/Commands/PatchCommand.php
1 | /* |