公司的gitlab是一年多前安装的,还是比较老的7.6.2版本,各种问题导致迫切需要升级到较新的版本。为了保证平时的正常使用,只能在假期进行升级。所以利用端午节假期搞了2天,折腾了几次才搞明白。不过升级过程中的辛苦还是值得的,不仅新的版本在各种功能、UI上有优化,而且我对gitlab也更加熟悉了。
根据gitlab官网,升级采用Omnibus的自动安装方式。由于是升级,只要更新yum的库并下载最新包即可。
curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
sudo yum install gitlab-ce
这种更新方式相当于对源码做了一层包装,可以通过更改gitlab.rb文件更新所有的配置,而不是直接去修改gitlab.yml, 数据库的config.yml等文件。如果是通过源码编译安装/更新,相信会更加复杂。
安装的过程比较顺利,但肯定不是一下子搞定的,下面一步步的记录错误的原因和解决方案,希望对别人有帮助。
PostgreSql的库结构问题
自动安装提示完成,但数据库不可用,用status查看是处于down状态,看了日志(/var/log/gitlab/postgresql/current),如下报错
The data directory was initialized by PostgreSQL version 9.2.18, which is not compatible with this version 9.6.2.
大意是新版数据库结构不兼容老的。这个问题解决还算顺利,网上不少资料,主要参考的是这篇
http://blog.10ninox.com/2015/01/psql-database-incompatible/
处理后不再显示该错误,而出现以下的错误。
PostgreSql的IPv6问题
还是同样的日志,显示如下错误
Address family not supported by protocol
一般这种都是IPv6导致,查了些资料,解决办法是在/var/opt/gitlab/postgresql/data中修改postgresql.conf文件
将listen_addresses改为127.0.0.1
完全调试完成后,发现该值被改为了空字符串,说明也没问题。
PostgreSql的Migrate问题
解决上述问题后,需要执行数据库的migrate命令,如下
gitlab-rake db:migrate
这时会出现一个pg_trgm问题,大意是没有创建extension记录。参考这里官方的文档
https://docs.gitlab.com/ce/install/installation.html
不过注意创建extends时,数据库不是template1,而是gitlabhq_production
重新整理这个步骤如下
step 1: sudo -u gitlab-psql psql -d template1 -c "CREATE USER git CREATEDB;"
step 2: sudo -u gitlab-psql psql -d template1 -c "CREATE DATABASE gitlabhq_production OWNER git;"(可能不需要)
step 3: sudo -u gitlab-psql psql -d gitlabhq_production -c "CREATE EXTENSION IF NOT EXISTS pg_trgm;"
之后再次运行migrate脚本,问题解决。
unicorn的启动权限问题
unicorn线程是用git用户启动的,必须递归的给
/opt/gitlab/embedded/service/gitlab-rails/
目录的访问权限,否则启动会失败,或者界面出不来(具体现象我记不清了)。
gitlab-shell的check问题
在做系统检查(gitlab-rake gitlab:check)时,会出现一个找不到.gitlab_shell_secret的问题,貌似不影响启动和使用,解决也不叫简单,调用以下命令
ln -s /var/opt/gitlab/gitlab-shell/gitlab_shell_secret ../gitlab-rails/.gitlab_shell_secret
增加软连接即可。
reconfigure不生效问题
这是这次升级最大的坑,更新gitlab.rb文件后,根据各种文档描述都是要执行reconfigure命令,我也执行了很多次。但是就是感觉各种配置没有改,命令行运行也不报错。偶然发现这个命令是有日志的,目录是
/var/log/gitlab/reconfigure
查看日志才发现所有的尝试都没有执行,又是一个地址族不支持。查了资料让改源代码的localhost或者看/etc/hosts的配置,打开后者一看,乖乖,居然把ipv4的localhost注释掉了,只留了ipv6的,打开注释,一切正常。
至此基础配置完成,我们需要修改git库位置,能够reconfigure就一切顺利了,所有功能基本恢复。
总结
这次升级时间紧,原库升级几乎没给自己留后路,在问题的解决中发现gitlab本身的管理还是非常完善的,特别是这种Omnibus的自动安装方式。发现的这些错误网上基本都有解决方案,没有的一般也要从自己的环境上找原因。
gitlab比较重要的目录/文件
主配置文件:/etc/gitlab/gitlab.rb
程序安装目录:/opt/gitlab
程序配置和运行目录:/var/opt/gitlab
程序日志目录:/var/log/gitlab
gitlab重要的命令
升级数据库:gitlab-rake db:migrate
显示配置环境:gitlab-rake gitlab:env:info
检查gitlab运行环境:gitlab-rake gitlab:check
gitlab安装(慎用,会清数据库):gitlab-rake gitlab:setup
gitlab启动/停止/重启:gitlab-ctl start/stop/restart
新的ui还是不错的,管理页面将信息都放到了上面,如下图所示:
新的UI有些问题可能我也没有碰到,可以一块研究,有问题给我留言哈!
【补充:2018-1-16】访问出现forbidden的现象,换用4G网络问题解决。参考以下文章,可以解决问题:
http://www.cnblogs.com/jianxuanbing/p/7661306.html
【补充:2018-02-16】9.2.2升级到10.4.3
- 使用本文开头的命令用yum升级;中途升级数据库可能有问题,提示里又一个skip的命令,可以执行,然后升级安装包成功;
- 要使用
gitlab-ctl reconfigure
命令做一次重新更新。之前用status看,有几个命令没有服务没有起来,unicorn还有目录权限的问题(这里chmod了一下,估计要是先做reconfigure就不需要了) -
restart服务后,所有服务都起来了,界面也变成了新的,这次更新比较顺利,开心!
GitLab 10.4.3
网友评论