Wave Spread...

基于 CentOS 的 GitLab 的迁移及跨版本升级

分类:Linux 评论: 1

公司内使用的 GitLab 服务部署于几年前,系统及其组件版本老旧,因稳定性等因素考虑进行迁移并跨版本升级。

迁移

准备工作

检查当前版本

# yum list | grep gitlab-ce

gitlab-ce.x86_64                           8.6.10-ce.1.el7             @gitlab-ce

注意:此步骤非常重要,因为 GitLab 的数据备份/恢复过程必须版本一致,否则将无法恢复。

全量备份

# gitlab-rake gitlab:backup:create

执行此操作后会在 /var/opt/gitlab/backups 文件夹内生成带时间戳的备份文件,将此文件导出到本地或者传送到新机器上。

环境恢复

极力推荐 GitLab 服务器专机专用,公司的私有代码是公司的命脉,也是最重要的生产工具,因此不推荐与线上服务或其他服务部署在一起,且 GitLab 对机器性能要求并不低,官方推荐配置最少4G内存

注意:恢复环境时必须与之前的版本一致,否则备份文件无法进行还原。

安装依赖包

在 CentOS / RadHat 中安装 SSH 服务(克隆代码需要)并配置防火墙放行端口

# yum install -y curl policycoreutils-python openssh-server
# systemctl enable sshd
# systemctl start sshd
# firewall-cmd --permanent --add-service=http
# systemctl reload firewalld

配置邮件服务,系统邮件将使用此程序进行发送,SMTP 服务配置方法请查看此处

# yum install postfix
# systemctl enable postfix
# systemctl start postfix

配置仓库并安装

# vim /etc/yum.repos.d/gitlab-ce.repo

注意:本文使用的仓库为清华源,按量付费机器请谨慎使用,海外机器请使用官方源。

贴入以下内容

[gitlab-ce]
name=Gitlab CE Repository
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/
gpgcheck=0
enabled=1

安装 GitLab 指定版本(与备份文件的版本一致)

# yum install gitlab-ce-x.x.x

提示:具体版本号可以到清华源中进行查询。

数据恢复

# gitlab-rake gitlab:backup:restore BACKUP=时间戳

注意:备份的文件名类似于 1873673794_2018_12_11_gitlab_backup.tar,前面的部分就是时间戳,恢复命令后仅需接时间戳(即 _gitlab_backup 前的部分)即可。

常用指令

GitLab 常用命令

# gitlab-ctl start                                  # 启动所有组件;
# gitlab-ctl stop                                   # 停止所有组件;
# gitlab-ctl restart                                # 重启所有组件;
# gitlab-ctl status                                 # 查看服务状态;
# gitlab-ctl reconfigure                            # 重载配置;
# /etc/gitlab/gitlab.rb                             # 默认的配置文件;
$ gitlab-rake gitlab:check SANITIZE=true --trace    # 检查 GitLab;
# gitlab-ctl tail                                   # 查看日志;

跨版本升级

务必升级前先进行备份,谨记!然后将备份传送至安全地址保留。

由于 GitLab 无法跨版本进行升级,只能按照版本先后顺序进行升级操作。且部分配置会丢失

因此先执行备份操作

# gitlab-rake gitlab:backup:create

且备份 /etc/gitlab/gitlab.rb 配置文件,无法直接替换,需要提取其中部分配置。

必须按照先后顺序升级到当前大版本的最新版,然后升级到下一个大版本号。

已知版本参考表

大版本号 更新状态 已知版本
8 完结 8.17.8
9 完结 9.5.9
10 完结 10.8.7
11 进行中 /

常见问题

# gitlab-rails runner  "Project.where.not(import_url: nil).each { |p| p.import_data.destroy if p.import_data }"
# chmod -R 2770 /var/opt/gitlab/git-data

参考链接

回复
  1. 一顿烧操作 看不懂

    Reply