部署packagist 搭配gitlab使用
源码地址:composer/packagist
笔者在写这篇文章的时候对应的commit sha :aa0d63fd6ebbfd991aa3ab652d33c6c8e463543a
因为
packagist没有版本的概念 所以使用commit sha的方式来记录一下
环境安装
由于最新版使用的是php8.0,所以来安装一下8.0
使用apt安装php8.0
|  |  | 
安装过程比较简单,基本如上
在安装完成后,composer install 时出现
unrecognised compile-time option bit(s)按照这个issure 只用执行以下命令即可(如果你没有出现任何问题,无视即可)sudo apt-get install --only-upgrade libpcre2-16-0 libpcre2-32-0 libpcre2-8-0 libpcre2-dev libpcre2-posix2
项目部署
git clone https://github.com/composer/packagist.git && cd packagist
项目配置
拉取代码之后,先配置一下redis,database 等等
打开.env文件
|  |  | 
apcu缓存错误
config/packages/cache.yaml 文件里的system ,使用的apcu,由于我的php没有装这个扩展导致缓存报错
|  |  | 
recaptcha2的问题
查阅以下代码。 templates/registration/register.html.twig templates/reset_password/request.html.twig
我们会发现这个设置了一个 set requiresRecaptcha = true,这个会让我们上面.env中所设置的APP_RECAPTCHA_ENABLED=false 无效。
这样就会导致如果你没有设置APP_RECAPTCHA_SITE_KEY和APP_RECAPTCHA_SECRET,那么你就将永远无法提交注册表单,和重置密码的表单。
这个问题困扰了我很久,具体表现为,点击注册按钮,没有任何反应,只有console控制台报了一下recaptcha.js的错误。
如果你跟我一样,并没有设置recaptcha,那么你需要删除上面两个代码文件中的{% set requiresRecaptcha = true %}
并且再次重新 composer install,或者手动运行php bin/console cache:clear
当你都已经准备好了之后,就可以使用composer install来安装你的程序了。
然后使用symfony serve 启动一个简单的webserver
如果你没有
symfony,请到这里下载一个 https://symfony.com/download
提交自己的包
一旦你成功完成以上操作,成功注册了一个账号之后,你可以尝试提交自己的私有包。
例如 https://github.com/xxx/xxx,https://gitlab.com/xxx/xxx
但,需要记住的是: 这个链接对应的代码库应该是一个 pulic 公开的库,否则你需要到你部署packagist项目的机器上设置ssh 或者 设置 git clone https时的账号密码
而且你的代码库中,应该拥有composer.json文件,并且正确的配置composer.json内容。
一旦提交成功,你可以点击update按钮更新你的私有包,记住要在服务器上运行php bin/console packagist:run-workers
当然 最后的做法是按照文档上的,在服务器上使用crontab 运行上面的命令。
使用自己的包
一旦上面的都完成了,那么你就已经成功的提交了一个包到自己私有的packagist上了
在另一个项目中的composer.json中加上 自己的仓库
|  |  | 
然后composer require my/packagist,你就可以成功的下载
配置私有的gitlab-domains
正常来说,我们的包应该拥有一个版本号,并且可以下载dist
但如果我们使用私有的gitlab,每次composer install 或者 composer require 时 是使用 git clone的方式去拉取源码。
你可以使用
composer require xxx/xxx -vvv的方式来查看composer 下载每个包的细节
这样就会对你composer install时的环境有要求,必须拥有git 命令。
在一些k8s,docker 镜像中install 时可能会出现一些些问题。
我们在packagist部署的机器上运行下面的这个命令,再次去packagist中更新自己的包
然后再rm -rf vendor && rm -rf composer.lock && composer install -vvv 你就可以看到以dist的方式去gitlab下载源码了,不再是git clone的方式去克隆源码
|  |  |