先上连接: https://github.com/zencodex/c...
ZComposer 镜像诞生于2017年3月份,至今已经运行2年多了,这不是一个多么有技术含量的东西,因此简单聊一些开发和解决问题的思路,但愿能对你有一点启发。若是你以为有些收获,请点下鼠标,在 github 上给我1个 star(支持下),谢谢。php
推荐运行主机配置:linux
$ apt install beanstalkd $ cd composer-mirror $ composer install
一般根据本身部署的实际环境,修改参数。详细配置说明详见 config.default.php
cp config.default.php config.php
,修改 config.php 中的以下参laravel
/** * distdir 用于存储 zip 包 */ 'distdir' => __DIR__ . '/dist/', /** * 指向 mirrorUrl 对应的 web 实际目录 */ 'cachedir' => __DIR__ . '/cache/', /** * packagistUrl:官方采集源 */ 'packagistUrl' => 'https://packagist.org', /** * 镜像包发布站点, packages.json 入口根域名 */ 'mirrorUrl' => 'https://packagist.laravel-china.org', /** * .json 中 dist 分发 zip 包的CDN域名 */ 'distUrl' => 'https://dl.laravel-china.org/',
sudo vim /etc/supervisor/supervisord.conf
,添加以下配置信息:git
[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
# sudo crontab -e # 根据本身环境代码的位置,替换 /home/zencodex/composer-mirror # getcomposer 是获取最新的 composer,上传到 CDN 云存储 0 */2 * * * /usr/bin/php /home/zencodex/composer-mirror/bin/console app:clear --expired=json 0 1 * * * /usr/bin/php /home/zencodex/composer-mirror/getcomposer.php
# 执行抓取任务 $ php ./bin/console app:crawler # 后台多进程模型同步又拍云 $ php ./bin/console app:daemon # 清理过时垃圾文件 $ php ./bin/console app:clear --expired=json # 扫描并校验全部json和zip文件的hash256 $ php ./bin/console app:scan
若是使用非又拍云的其余平台,须要注意如下代码,须要自行实现
ZenCodex\Support\Flysystem\Adapter\UpyunAdapter
封装 getClientHandler。代码详情见 src/Commands/PatchCommand.php
github
/* |-------------------------------------------------------------------------- | linux ext4 支持的最大子目录数有上限,大约 64000 ~ 65000,目前包的数量已经超过上限 |-------------------------------------------------------------------------- | | 有三种解决方法,前2种基本不现实。因此本身经过尝试,找到了3 (软链接不计数的方案) | | 1. 更换没有子文件夹数量限制的文件系统,好比 xfs | 2. 或者更改相关代码,从新编译 ext4 内核 | 3. 切割大的文件夹,分散不一样字母开头的文件。在主文件夹里面使用软链接,软链接并不计数 | */
ZComposer 镜像早期是 @Summer 提出的构想,期间也获得了 @overtrue 和LC社区小伙伴们的大力支持,开源也是 Overtrue 提的建议,一并感谢你们们的鼓励和支持。大侠们会在 2019 年 8 月 3 - 4 日,举办国内 第一届 Laravel Conf China 大会,可谓华山论剑,高手云集的盛会,赶忙经过官网报名吧:http://laravelconf.cnweb
文章首发于: https://learnku.com/articles/...