成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Composer 中國(guó)全量鏡像開源了,一起讓 PHP 社區(qū)更繁榮

oneasp / 2367人閱讀

摘要:所以的鏡像,所有的包都是和官方一致的,可以比對(duì),沒有任何修改。所以做鏡像最大的難點(diǎn),是穩(wěn)定性的保障。開源是全量鏡像,包含了對(duì)部分的處理。

先上鏈接:https://github.com/zencodex/c...

ZComposer 鏡像誕生于2017年3月份,至今已經(jīng)運(yùn)行2年多了,這不是一個(gè)多么有技術(shù)含量的東西,所以簡(jiǎn)單聊一些開發(fā)和解決問題的思路,希望能對(duì)你有一點(diǎn)啟發(fā)。如果你覺得有些收獲,請(qǐng)點(diǎn)下鼠標(biāo),在 github 上給我1個(gè) star(支持下),謝謝。

安全性,不對(duì)原有的json,zip做修改,否則會(huì)引起 hash 變化,重新計(jì)算 hash 沒問題(之前第三方有這么做的),這樣帶來的問題是,無法對(duì)包的安全性做校驗(yàn),假如有惡意黑鏡像,對(duì)數(shù)據(jù)做了修改,就無法判斷了。所以 ZComposer 的鏡像,所有的包都是和 packagist.org 官方一致的,可以比對(duì) hash ,沒有任何修改。

穩(wěn)定性,因?yàn)椴婚g斷的采集數(shù)據(jù),上傳數(shù)據(jù),中間有一個(gè)環(huán)節(jié)出現(xiàn)差錯(cuò),就可以導(dǎo)致有問題,所以務(wù)必對(duì)采集完的包,通過 hash 值做完整性檢查。有時(shí)候第三方的API策略,或者CDN線路都可能導(dǎo)致出現(xiàn)問題。所以做鏡像最大的難點(diǎn),是穩(wěn)定性的保障。

Webysther/packagist-mirror(官方推薦的鏡像開源) fork 自 hirak/packagist-crawler,但這些鏡像開源都沒有處理dist包,而dist包才是最大/最多的,最值得CDN處理的。ZComposer 開源是全量鏡像,包含了對(duì) dist 部分的處理。dist 包還有個(gè) 65000上限子目錄數(shù) 的問題,1年的時(shí)間,包的數(shù)量都是成倍的增加。軟連接的方案是我原創(chuàng)出來的,或許隨著包的無限增加,還需要設(shè)計(jì)其他方案。

ZComposer 鏡像的安裝部署

推薦運(yùn)行主機(jī)配置:

[x] 內(nèi)存最好不低于4G

[x] 剩余磁盤空間不低于30G

$ apt install beanstalkd
$ cd composer-mirror
$ composer install
修改配置參數(shù)
通常根據(jù)自己部署的實(shí)際環(huán)境,修改參數(shù)。詳細(xì)配置說明詳見 config.default.php

cp config.default.php config.php,修改 config.php 中的如下參

    /**
     * distdir 用于存儲(chǔ) zip 包
     */
    "distdir" => __DIR__ . "/dist/",

    /**
     * 指向 mirrorUrl 對(duì)應(yīng)的 web 實(shí)際目錄
     */
    "cachedir" => __DIR__ . "/cache/",

    /**
     * packagistUrl:官方采集源
     */
    "packagistUrl" => "https://packagist.org",

    /**
     * 鏡像包發(fā)布站點(diǎn), packages.json 入口根域名
     */
    "mirrorUrl" => "https://packagist.laravel-china.org",

    /**
     * .json 中 dist 分發(fā) zip 包的CDN域名
     */
    "distUrl" => "https://dl.laravel-china.org/",
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,默認(rèn) false
stdout_logfile_maxbytes = 10MB  ; stdout 日志文件大小,默認(rèn) 50MB
stdout_logfile_backups = 5      ; stdout 日志文件備份數(shù)
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,默認(rèn) false
stdout_logfile_maxbytes = 10MB  ; stdout 日志文件大小,默認(rèn) 50MB
stdout_logfile_backups = 5      ; stdout 日志文件備份數(shù)
stdout_logfile = /tmp/composer_daemon_stdout.log
crontab 定時(shí)任務(wù)
# sudo crontab -e
# 根據(jù)自己環(huán)境代碼的位置,替換 /home/zencodex/composer-mirror 
# getcomposer 是獲取最新的 composer,上傳到 CDN 云存儲(chǔ)

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
常用命令
# 執(zhí)行抓取任務(wù)
$ php ./bin/console app:crawler

# 后臺(tái)多進(jìn)程模型同步又拍云
$ php ./bin/console app:daemon

# 清理過期垃圾文件
$ php ./bin/console app:clear --expired=json

# 掃描并校驗(yàn)所有json和zip文件的hash256
$ php ./bin/console app:scan
For Developers

沒有使用數(shù)據(jù)庫(kù)存儲(chǔ),完全是按目錄結(jié)構(gòu)存儲(chǔ)

每個(gè)包的 dist/zip 文件存儲(chǔ)的是對(duì)應(yīng) github url的下載地址,因磁盤空間有限,不在本地存儲(chǔ),直接推送到云端

清理過期文件,判斷是否有更新,是否過期的依據(jù)是文件的時(shí)間戳,所以不要手動(dòng)對(duì)文件做 touch,或引起時(shí)間戳變化的操作

如果使用非又拍云的其他平臺(tái),需要注意以下代碼,需要自行實(shí)現(xiàn)

ClientHandlerPlugin 需要 Flysystem 的對(duì)應(yīng) Adapter 有對(duì)應(yīng)接口,本例中只有 zencodex/flysystem-upyun 實(shí)現(xiàn)了,其他第三方包,可以參照樣例自行實(shí)現(xiàn)

Cloud::refreshRemoteFile,作用是刷新 CDN 緩存的文件,這個(gè)每日有調(diào)用頻率限制,所以只刷新 package.json 時(shí)使用

Cloud::refreshRemoteFile,如果使用非又拍云的平臺(tái),需要替換為自己平臺(tái)刷新代碼。或者參照 ZenCodexSupportFlysystemAdapterUpyunAdapter 封裝 getClientHandler。

Cloud::prefetchDistFile 和 refreshRemoteFile 類似,調(diào)用的是云平臺(tái)特殊接口,無法統(tǒng)一封裝在 Flysystem,所以也通過 getClientHandler 處理

注意最大子目錄數(shù)的坑

代碼詳情見 src/Commands/PatchCommand.php

/*
|--------------------------------------------------------------------------
| linux ext4 支持的最大子目錄數(shù)有上限,大約 64000 ~ 65000,目前包的數(shù)量已經(jīng)超過上限
|--------------------------------------------------------------------------
|
| 有三種解決方法,前2種基本不現(xiàn)實(shí)。所以自己通過嘗試,找到了3 (軟連接不計(jì)數(shù)的方案)
|
|   1. 更換沒有子文件夾數(shù)量限制的文件系統(tǒng),比如 xfs 
|   2. 或者更改相關(guān)代碼,重新編譯 ext4 內(nèi)核
|   3. 切割大的文件夾,分散不同字母開頭的文件。在主文件夾里面使用軟連接,軟連接并不計(jì)數(shù)
|
*/

ZComposer 鏡像早期是 ?@Summer? 提出的構(gòu)想,期間也得到了 ?@overtrue? 和LC社區(qū)小伙伴們的大力支持,開源也是 Overtrue 提的建議,一并感謝大家們的鼓勵(lì)和支持。大俠們會(huì)在 2019 年 8 月 3 - 4 日,舉辦國(guó)內(nèi) 第一屆 Laravel Conf China 大會(huì),可謂華山論劍,高手云集的盛會(huì),趕緊通過官網(wǎng)報(bào)名吧:http://laravelconf.cn

文章首發(fā)于:https://learnku.com/articles/...

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/31603.html

相關(guān)文章

  • Composer 中文鏡像 / Packagist 中國(guó)全量鏡像正式發(fā)布!

    摘要:中國(guó)全量鏡像是由社區(qū)聯(lián)合又拍云與優(yōu)帆遠(yuǎn)揚(yáng)共同合作推出的公益項(xiàng)目,旨在為廣大用戶提供穩(wěn)定和高速的國(guó)內(nèi)鏡像服務(wù)。致謝中國(guó)全量鏡像的由國(guó)內(nèi)領(lǐng)先服務(wù)商又拍云提供,相信這次聯(lián)合合作能給鏡像提供穩(wěn)定快速的支持。 showImg(https://dn-phphub.qbox.me/uploads/images/201704/21/1/dDANSZZbWZ.jpg); 『Composer 中國(guó)全量鏡像...

    icyfire 評(píng)論0 收藏0
  • PHP回顧之創(chuàng)建自己的Composer

    摘要:想要更好的利用協(xié)同工作,學(xué)會(huì)創(chuàng)建自己的包是一項(xiàng)必不可少的技能。編輯項(xiàng)目的或,增加一項(xiàng)配置,例如以上配置使用中國(guó)全量鏡像網(wǎng)站作為默認(rèn)中央倉(cāng)庫(kù)。創(chuàng)建自己的包創(chuàng)建一個(gè)包只需兩步填寫包描述信息寫代碼。通過簡(jiǎn)單兩步,我們創(chuàng)建的自己的包。 轉(zhuǎn)載請(qǐng)注明文章出處:https://tlanyan.me/php-review... PHP回顧系列目錄 PHP基礎(chǔ) web請(qǐng)求 cookie web響應(yīng) ...

    KoreyLee 評(píng)論0 收藏0
  • 月光寶盒之網(wǎng)站資源收錄

    摘要:開源的論壇網(wǎng)站開源的論壇源代碼接口管理接口環(huán)境下環(huán)境一鍵安裝軟件二前端資源中國(guó)淘寶鏡像在國(guó)內(nèi),由于墻的原因,安裝包速度很慢,所以,這里建議使用淘寶提供的鏡像安裝前端資源。 為者常成,行者常至。 一、PHP資料 1、V2EX way to explore 分享和探索的地方2、Laravel China 中國(guó)最大的 Laravel 和 PHP 開發(fā)者社區(qū)3、Composer使用方法4、Pa...

    learning 評(píng)論0 收藏0
  • 月光寶盒之網(wǎng)站資源收錄

    摘要:開源的論壇網(wǎng)站開源的論壇源代碼接口管理接口環(huán)境下環(huán)境一鍵安裝軟件二前端資源中國(guó)淘寶鏡像在國(guó)內(nèi),由于墻的原因,安裝包速度很慢,所以,這里建議使用淘寶提供的鏡像安裝前端資源。 為者常成,行者常至。 一、PHP資料 1、V2EX way to explore 分享和探索的地方2、Laravel China 中國(guó)最大的 Laravel 和 PHP 開發(fā)者社區(qū)3、Composer使用方法4、Pa...

    2bdenny 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<