加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 移动互联 > 正文

Composer 中国全量镜像开源了,一起让 PHP 社区更繁荣

发布时间:2019-05-29 19:44:02 所属栏目:移动互联 来源:WantoDel
导读:先上链接:https://github.com/zencodex/composer-mirror ZComposer 镜像降生于 2017 年 3 月份,至今已不中断不变运行 2 年多了。怎样担保Composer 镜像的不变性,是面对的最浩劫题,以是简朴聊一些开拓息争决题目的思绪,但愿能对你有一点开导。假如你觉
副问题[/!--empirenews.page--]

 Composer 中国全量镜像开源了,一路让 PHP 社区更繁荣

先上链接:https://github.com/zencodex/composer-mirror

ZComposer 镜像降生于 2017 年 3 月份,至今已不中断不变运行 2 年多了。怎样担保Composer 镜像的不变性,是面对的最浩劫题,以是简朴聊一些开拓息争决题目的思绪,但愿能对你有一点开导。假如你认为有些收成,请点下鼠标,在 github 上给我 1 个 star(支持下),感谢。

  1. 安详性,差池原有的 json,zip 做修改,不然会引起 hash 变革,从头计较 hash 没题目(之前第三方有这么做的),这样带来的题目是,无法对包的安详性做校验,若是有恶意黑镜像,对数据做了修改,就无法判定了。以是 ZComposer 的镜像,全部的包都是和 packagist.org 官方同等的,可以比对 hash ,没有任何修改。

  2. 不变性,由于不中断的收罗数据,上传数据,中间有一个环节呈现过错,就可以导致有题目,以是务必对收罗完的包,通过 hash 值做完备性搜查。偶然辰第三方的 API 计策,可能 CDN 线路都也许导致呈现题目。以是做镜像最大的难点,是不变性的保障。

  3. Webysther/packagist-mirror(官方保举的镜像开源) fork 自 hirak/packagist-crawler,但这些镜像开源都没有处理赏罚 dist 包,而 dist 包步崆最大 / 最多的,最值得 CDN 处理赏罚的。ZComposer 开源是全量镜像,包括了对 dist 部门的处理赏罚。dist 包尚有个 65000 上限子目次数 的题目,1 年的时刻,包的数目都是成倍的增进。软毗连的方案是我原创出来的,或者跟着包的无穷增进,还必要计划其他方案。
ZComposer 镜像的安装陈设

保举运行主机设置:

  • [x] 内存最好不低于 4G
  • [x] 剩余磁盘空间不低于 30G
  •  
    1. $ apt install beanstalkd 
    2. $ cd composer-mirror 
    3. $ composer install 
修改设置参数

凡是按照本身陈设的现真相形,修改参数。具体设置声名详见 config.default.php

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

  1. /** 
  2.    * distdir 用于存储 zip 包 
  3.    */ 
  4.   'distdir' => __DIR__ . '/dist/', 
  5.  
  6.   /** 
  7.    * 指向 mirrorUrl 对应的 web 现实目次 
  8.    */ 
  9.   'cachedir' => __DIR__ . '/cache/', 
  10.  
  11.   /** 
  12.    * packagistUrl:官方收罗源 
  13.    */ 
  14.   'packagistUrl' => 'https://packagist.org', 
  15.  
  16.   /** 
  17.    * 镜像包宣布站点, packages.json 进口根域名 
  18.    */ 
  19.   'mirrorUrl' => 'https://packagist.laravel-china.org', 
  20.  
  21.   /** 
  22.    * .json 中 dist 分发 zip 包的CDN域名 
  23.    */ 
  24.   'distUrl' => 'https://dl.laravel-china.org/', 

supervisor 设置

sudo vim /etc/supervisor/supervisord.conf,添加如下设置信息:

  1. [program:crawler] 
  2. command=php ./bin/console app:crawler 
  3. directory=/home/zencodex/composer-mirror/  ;陈设代码的位置,自行替代 
  4. autostart=true 
  5. autorestart=true 
  6. redirect_stderr = true  ; 把 stderr 重定向到 stdout,默认 false 
  7. stdout_logfile_maxbytes = 10MB  ; stdout 日记文件巨细,默认 50MB 
  8. stdout_logfile_backups = 5      ; stdout 日记文件备份数 
  9. stdout_logfile = /tmp/composer_crawler_stdout.log 
  10.  
  11. [program:composer_daemon] 
  12. command=php ./bin/console app:daemon 
  13. directory=/home/zencodex/composer-mirror/  ;陈设代码的位置,自行替代 
  14. autostart=true 
  15. autorestart=true 
  16. redirect_stderr = true  ; 把 stderr 重定向到 stdout,默认 false 
  17. stdout_logfile_maxbytes = 10MB  ; stdout 日记文件巨细,默认 50MB 
  18. stdout_logfile_backups = 5      ; stdout 日记文件备份数 
  19. stdout_logfile = /tmp/composer_daemon_stdout.log 

crontab 按时使命

  1. # sudo crontab -e 
  2. # 按照本身情形代码的位置,替代 /home/zencodex/composer-mirror  
  3. # getcomposer 是获取最新的 composer,上传到 CDN 云存储 
  4.  
  5. 0 */2 * * * /usr/bin/php /home/zencodex/composer-mirror/bin/console app:clear --expired=json 
  6. 0 1 * * * /usr/bin/php /home/zencodex/composer-mirror/getcomposer.php 
常用呼吁
  1. # 执行抓取使命 
  2. $ php ./bin/console app:crawler 
  3.  
  4. # 靠山多历程模子同步又拍云 
  5. $ php ./bin/console app:daemon 
  6.  
  7. # 整理逾期垃圾文件 
  8. $ php ./bin/console app:clear --expired=json 
  9.  
  10. # 扫描并校验全部json和zip文件的hash256 
  11. $ php ./bin/console app:scan 

For Developers

  • 没有行使数据库存储,完满是按目次布局存储
  • 每个包的 dist/zip 文件存储的是对应 github url 的下载地点,因磁盘空间有限,不在当地存储,直接推送到云端
  • 整理逾期文件,判定是否有更新,是否逾期的依据是文件的时刻戳,以是不要手动对文件做 touch,或引起时刻戳变革的操纵

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读