先上連接: 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/...