部署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
的方式去克隆源码
|
|