title: "记一次系统部署" date: 2021-12-08T11:17:58+07:00
环境:
OS: Debian 9 PHP: 7.2 fpm
部署一个 PHP 工程,首先 git pull 代码,但立马出现一个错误:
server certificate verification failed. CAfile: /etc/ssl/certs/cacertificates.crt CRLfile: none
因为自建的 git server 刚刚更新支持了 HTTPS,更新原因是 go get 不支持 HTTP 协议。
目前来说,要解决这个问题,查了一下,最多的方案是
# linux
export GIT_SSL_NO_VERIFY=1
# windows
set GIT_SSL_NO_VERIFY 1
# git
git config --global http.sslVerify false
就是忽略校验,这中解决方案简单高效,99.923% 的情况下不会出什么问题(针对安全性而言)。只是我更希望找到真正的解决问题本身的方案,也算一个学习的过程。 最终,需要执行
apt update
apt upgrade
update-ca-certificates
就是需要升级系统而已。但是升级过程报了一堆错误,导致 270M 的一系列升级包无法安装。其中最重要的两处错误大致是
问题得到了解决,可以正常 git pull 了。
一通瞎操作后,系统部署升级完毕,客户端登录怎么都不成功。调试发现 PHP 没有安装 redis module。
php -m | grep redis
php -m | grep swoole
没有任何输出。
因为这并非首次部署,只是一次升级,所以肯定是刚才 apt upgrade 的时候冲掉了,详细没过多分析。
apt install php7.2-redis
apt install php7.2-swoole
systemctl restart php7.2-fpm
登录成功。
可以想象,apt upgrade的时候也很可能掉了其他 module(s),PHP 折腾了这么多年 PSR,是不是也做个 virtualenv + requirements.txt 的小东西?我真忘了都需要哪些 module 了!
从 git server 中 push 了一个 Golang 项目之后就这么一环套一环的出了这么多问题,而我个人不喜欢 "临时方案" 来应付,所以还挺有趣的。最大的感受是系统需要及时更新,这必然会要求工程也要一直升级,包括一些依赖库,这其实很难,成本极高,我听说有些线上业务仍然用的 FreeBSD 200x 年的某个版本,就是系统版本和工程依赖之间的两难结果。