CentOS 6.×下低版本Gitlab安装,备份,升级, 迁移踩坑实践

Posted 北京大雨

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CentOS 6.×下低版本Gitlab安装,备份,升级, 迁移踩坑实践相关的知识,希望对你有一定的参考价值。

背景: 公司Gitlab版本较老(8.12.2)且部署在阿里云低版本的系统(CentOS 6.8), 领导要求将所有阿里云机器迁移至华为云, 迁移服务不支持CentOS 7以下的版本, 镜像服务又过于麻烦, 故决定手动对其升级并迁移。

经过各种踩坑, 总结最佳实践。

思路及过程: 

  一 前置准备工作:         

     1 扩容硬盘: 一定要检查自己的服务器硬盘是否足够备份, 否则会导致备份失败, 尽量扩大一点。

     由于服务器买的比较早, 不支持在线扩容, 且CentOS 6已结束声明周期, 需要切换yum源,具体可参考阿里云帮助文档: 扩展分区和文件系统_Linux系统盘 - 云服务器 ECS - 阿里云

      2 备份镜像: 由于Gitlab备份时间较长, 建议直接使用阿里云自定义镜像, 备份镜像, 方便快捷, 在升级之后再备份不迟

      3 迁移目标服务器: 在华为云(根据需要)购买相同系统(CentOS 6.8)的服务器(最低2核4G, 建议买大一点内存)

    二 一些注意事项:

      1 要注意yum源(系统版本问题), 硬盘大小的问题

      2 安装Gitlab前根据需要自行安装: policycoreutils-python openssh-server 以及postfix服务, 并设开机自启, 这里可参考: 安装和使用GitLab - 云服务器 ECS - 阿里云

但是systemctl命令是在CentOS 7之后才有的, 7以前是使用service *** start 启动服务

chkconfig *** on设置开机自启动, 注意Gitlab10版本之后, 有用到sshd

      3 有关Gitlab的一些注意: 升级时一定一定要先升级到当前大版本的最高版本, 然后再升级下一个大版本的最高版本(或者指定版本), 否则会出现各种奇怪的问题, 

关于gitlab源的问题, 这里还是建议直接使用官方的源: gitlab/gitlab-ce - Packages · packages.gitlab.com 版本比较多

当然也可以使用清华大学的源: Index of /gitlab-ce/yum/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

      4 常用指令: 

编辑gitlab配置文件: 
    vim /etc/gitlab/gitlab.rb
查阅gitlab版本: 
    cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
服务器间备份传输: 
    scp /var/opt/gitlab/backups/*** root@服务器IP:/var/opt/gitlab/backups/
更新后清理缓存: 
    gitlab-rake cache:clear
刷新配置文件:
    gitlab-ctl reconfigure
重启gitlab: 
    gitlab-ctl restart

值得注意的是CentOS 6 要使用后缀带el6的rpm包, CentOS 7使用的是el7

    三 升级当前服务器的Gitlab

      笔者当前版本为gitlab-ce-8.12.2, 先升级到8.17.8, 再升级到9.5.9

      1  下载到本地: 

wget --content-disposition https://packages.gitlab.com/gitlab/gitlab-ce/packages/el/6/gitlab-ce-8.17.8-ce.0.el6.x86_64.rpm/download.rpm

      2 本地安装: 

yum localinstall -y gitlab-ce-8.17.8-ce.0.el6.x86_64.rpm

        这种方式较为稳妥, 不用考虑换源的问题, 其它方式也可以借鉴别的文章

        注意: 每升级一次Gitlab, 建议刷新一次配置文件, 确保升级有效 (常会遇到404, 500, 502报错) 

Gitlab Pages: 404, and work fine after restart gitlab or restart gitlab pages (#58001) · Issues · GitLab.org / GitLab FOSS · GitLab

    四 执行备份

        1 执行备份前, 修改配置文件

# vim /etc/gitlab/gitlab.rb

gitlab_rails[‘manage_backup_path’] = true
gitlab_rails[‘backup_path’] = “/var/opt/gitlab/backups” -----------------------//gitlab备份目录
gitlab_rails[‘backup_archive_permissions’] = 0644 ------------------------//生成的备份文件权限
gitlab_rails[‘backup_keep_time’] = 604800 ----------------------------------//备份保留天数为7天

      2 创建并赋予git备份目录权限: 这里很关键, 会导致备份失败, 在新服务器恢复时最好也走一遍

# mkdir -p /var/opt/gitlab/backups
# chown -R git.git /var/opt/gitlab/backups
# chmod -R 777 /var/opt/gitlab/backups

      3 刷新配置文件, 使其生效

# gitlab-ctl reconfigure

      4 手动备份gitlab命令。

# gitlab-rake gitlab:backup:create

注意: 这个过程会很漫长, 注意硬盘空间/备份权限等问题, 有其他问题, 记得留言讨论

      五 新服务器的准备工作

        1 参考步骤一和步骤二

        2 如果购买的是华为云CentOS 6的版本, 更换yum源请参考: CentOS 6镜像源更换方法_弹性云服务器 ECS_常见问题_镜像源管理_华为云

      六 新服务器安装Gitlab

        1 直接安装相同版本Gitlab, 这里安装的是9.5.9, 参考步骤三

        2 记得修改配置文件: external_url 'http://***.***.com 或者 http://ip:port'

        3 如果80端口被占用, 可增加配置: nginx['listen_port'] = **, 端口问题可参考网上其它文章, 不再赘述 

       七 导入旧服务器备份

         在需要迁移的服务器上执行

scp /var/opt/gitlab/backups/***_gitlab_backup.tar root@目标IP:/var/opt/gitlab/backups/

        八 新服务器执行数据恢复        

          在新服务器执行

# gitlab-rake gitlab:backup:restore BACKUP=备份包名

        九 检查数据

          1 重启Gitlab, 刷新配置文件

          2 访问新服务器的Gitlab检查账号和数据是否已同步过来

          3 账号, 代码目录, 以及提交记录一般都能同步过来,  有可能会有代码丢失的情况, Gitlab的数据默认在 /var/opt/gitlab/git-data/ 下, 可自行检查代码, 如果代码丢失进入项目会报仓库找不到的错误: The repository for this project does not exist. 其实这时候可以直接把旧服务器上对应的仓库拷贝到新服务目录下, gitlab-rake cache:clear 刷新gitlab缓存即可。

参考文章:

Gitlab备份、迁移、恢复和升级 - SSgeek - 博客园

GitLab版本升级跨大版本 - 知乎

以上是关于CentOS 6.×下低版本Gitlab安装,备份,升级, 迁移踩坑实践的主要内容,如果未能解决你的问题,请参考以下文章

gitlab迁移遇到的版本不一致和无法导入问题

gitlab 安装备份与还原

gitlab升级-安装一台旧版本

Gitlab CE 版本安装

gitlab完整迁移

CentOS源码安装GitLab汉化版