美文网首页程序员
记一次Gitlab的升级过程

记一次Gitlab的升级过程

作者: 扁圆柱体 | 来源:发表于2017-06-03 20:57 被阅读1301次

    公司的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

    1. 使用本文开头的命令用yum升级;中途升级数据库可能有问题,提示里又一个skip的命令,可以执行,然后升级安装包成功;
    2. 要使用gitlab-ctl reconfigure命令做一次重新更新。之前用status看,有几个命令没有服务没有起来,unicorn还有目录权限的问题(这里chmod了一下,估计要是先做reconfigure就不需要了)
    3. restart服务后,所有服务都起来了,界面也变成了新的,这次更新比较顺利,开心!


      GitLab 10.4.3

    相关文章

      网友评论

        本文标题:记一次Gitlab的升级过程

        本文链接:https://www.haomeiwen.com/subject/twxsfxtx.html