CentOS软件降级这篇文章中提到过升级Gitlab后,出现node_exporter和postgres_exporter两个服务无法启动的问题,会导致web版的Gitlab不能正常使用。几天后有外国友人(如何能看懂中文,这是个谜~_~)在博客下评论说使用gitlab-ctl reconfigure命令,重新配置Gitlab,能解决问题。

今天更新Let’s Encrypt证书,顺带把机器的软件也升级一下(近期爆出的Meltdown和Spectre两个CPU漏洞挺严重)。果不其然,升级到Gitlab 10.3.3版本后,同样出现node_exporter和postgres_exporter不能启动的问题,日志中记录的问题也相同。

既然有外国友人说gitlab-ctl reconfigure好使,现在就是验证的绝佳机会。运行gitlab-ctl reconfigure,发现毫无反应!WTF!在Google上找,没靠谱的方案;用gitlab-ctl tail查看日志,没有任何输出;用dmesg查看,毫无结果;最终摸索到/var/log/gitlab/reconfigure下,找到了问题:8889端口被占用!

解除端口占用后,再次运行gitlab-ctl reconfigure,信息像模像样的输出。好事多磨,很快出现了错误:PG::ConnectionBad: could not connect to server: No such file or directory。上网查了一圈,发现这篇文章的解决方案有点像。遗憾的是,按照文章中的说法,不能解决问题。无奈之下,发现有gitlab-psql命令,运行gitlab-psql help,输出和gitlab-ctl reconfigure的类似:Is the server running locally and accepting connections on Unix domain socket “/var/opt/gitlab/postgresql/.s.PGSQL.5432?这个错误输出就比较清晰:postgresql没有运行。

运行gitlab-ctl start postgresql,再执行gitlab-ctl reconfigure。postgresql的错误顺利解决,接着出现redis的错误:No such file or directory – connect(2) for /var/opt/gitlab/redis/redis.socket。参考postgresql的问题,解决起来也非常轻松:先执行gitlab-ctl start redis,然后再执行gitlab-ctl reconfigure。配置成功!执行gitlab-ctl restart,各项服务均正常启动!浏览器打开Gitlab站点,正常!

外国友人诚不我欺。