因为之前采纳的是 Docker 部署的 GitLab,所以在降级时,遇见了一些问题,在此记录一下。

1. 旧服务器上 GitLab

Docker Compose:

version: '2'services:    gitlab:      image: 'twang2218/gitlab-ce-zh'      restart: unless-stopped      hostname: 'git.xxx.com'      environment:        TZ: 'Asia/Shanghai'        GITLAB_OMNIBUS_CONFIG: |          external_url 'http://git.xxx.com'          gitlab_rails['time_zone'] = 'Asia/Shanghai'      ports:        - '80:80'        - '443:443'      volumes:        - /home/gitlab/config:/etc/gitlab        - /home/gitlab/data:/var/opt/gitlab        - /home/gitlab/log:/var/log/gitlab

2. 降级遇见的坑

之前旧版的版本号是 11.0.5 ,当初官网的最新版本是 11.7.0-ce.0 , 因为之前采纳的是汉化后的GitLab的批改版本,官网并没有 11.0.5 这个版本号能够下载。然而间接应用新版本的话,会呈现各种问题,比方权限问题,版本问题等。

  1. 不能将 gitlab 文件夹间接打包进行转移,会遇见各种权限问题。
  2. 不能间接将 汉化修改版 间接改成 官网新版,会遇见版本不统一问题。

3. 正确服务器迁徙的姿态

  1. 在原来的服务器上运行如下命令:

    # 进入到容器中docker exec -it home_gitlab_1 bash# 在容器中执行# 进行数据连贯服务> gitlab-ctl stop unicorn> gitlab-ctl stop sidekiq# 备份数据> gitlab-rake gitlab:backup:create

    执行以上命令后,会在宿主机上的 /home/gitlab/data/backups 产生一个 tar 文件,例如: 1548223311_2019_01_23_11.0.5_gitlab_backup.tar

  2. 将这个 tar 文件,传输到新的服务器上
  3. 在新的服务器上,运行原来服务器上的 docker compose 文件

    • 记得批改一下版本号,放弃与之前的版本统一(如果镜像有新的版本的话,不写版本号,会下载最新版,就不能进行备份的复原了)。
    version: '2'services:    gitlab:      image: 'twang2218/gitlab-ce-zh:11.0.5'      restart: unless-stopped      hostname: 'git.xxx.com'      environment:        TZ: 'Asia/Shanghai'        GITLAB_OMNIBUS_CONFIG: |          external_url 'http://git.xxx.com'          gitlab_rails['time_zone'] = 'Asia/Shanghai'      ports:        - '80:80'        - '443:443'      volumes:        - /home/gitlab/config:/etc/gitlab        - /home/gitlab/data:/var/opt/gitlab        - /home/gitlab/log:/var/log/gitlab
    # 启动Dockerdocker-compose up -d
  4. 在新的服务器上启动 Docker 后,将备份的 tar 文件拷贝到 /home/gitlab/data/backups 目录下,并将文件权限设置为 777
  5. 进入到新服务器的容器中执行以下命令:

    # 进入到容器中docker exec -it home_gitlab_1 bash# 在容器中执行# 进行数据连贯服务> gitlab-ctl stop unicorn> gitlab-ctl stop sidekiq# 复原数据# BACKUP=工夫戳(以 1548223311_2019_01_23_11.0.5_gitlab_backup.tar 为例)> gitlab-rake gitlab:backup:restore BACKUP=1548223311_2019_01_23_11.0.5# 复原实现后,重启服务> gitlab-ctl restart

    服务器迁徙算是实现了,如果不进行降级的话,到此结束。

4. GitLab 降级

  1. 同镜像降级

    批改 compose 文件,将镜像降级到与官网版本统一(经查阅 Docker 镜像文档,得悉 11.1.4 版本是基于官网 gitlab/gitlab-ce:11.1.4-ce.0 进行汉化批改构建,所以本次降级为 11.1.4 版本)

    version: '2'services:    gitlab:      image: 'twang2218/gitlab-ce-zh:11.1.4'      restart: unless-stopped      hostname: 'git.xxx.com'      environment:        TZ: 'Asia/Shanghai'        GITLAB_OMNIBUS_CONFIG: |          external_url 'http://git.xxx.com'          gitlab_rails['time_zone'] = 'Asia/Shanghai'      ports:        - '80:80'        - '443:443'      volumes:        - /home/gitlab/config:/etc/gitlab        - /home/gitlab/data:/var/opt/gitlab        - /home/gitlab/log:/var/log/gitlab
    # 进行之前的 Dockerdocker-compose down# 检查一下镜像状态docker ps# 替换 compose 文件# 启动新的镜像docker-compose up -d# 启动实现后,进入到容器中docker exec -it home_gitlab_1 bash# 进行数据连贯服务> gitlab-ctl stop unicorn> gitlab-ctl stop sidekiq# 刷新配置> gitlab-ctl reconfigure# 重启服务> gitlab-ctl restart# 重启后,再次进入容器docker exec -it home_gitlab_1 bash# 创立备份> gitlab-rake gitlab:backup:create# 退出容器> exit# 进行dockerdocker-compose down

    将数据备份,拷贝到宿主机的其余中央,比方:/home/gitlab-backup/xxx_11.1.4_gitlab_backup.tar

  2. 逾越到官网镜像(gitlab/gitlab-ce)

    批改 compose 文件,留神版本抉择:

    version: '2'services:    gitlab:      image: 'gitlab/gitlab-ce:11.1.4-ce.0'      restart: unless-stopped      hostname: 'git.xxx.com'      environment:        TZ: 'Asia/Shanghai'        GITLAB_OMNIBUS_CONFIG: |          external_url 'http://git.xxx.com'          gitlab_rails['time_zone'] = 'Asia/Shanghai'      ports:        - '80:80'        - '443:443'      volumes:        - /home/gitlab/config:/etc/gitlab        - /home/gitlab/data:/var/opt/gitlab        - /home/gitlab/log:/var/log/gitlab
    # 查看 docker 运行状态,是否曾经进行了docker ps# 删除 gitlab 文件夹rm -rf /home/gitlab# 替换 compose 文件# 启动 docker composedocker-compose up -d# 启动实现后,将备份的 tar 拷贝到 /home/gitlab/data/backupscp /home/gitlab-backup/xxx_11.1.4_gitlab_backup.tar /home/gitlab/data/backups# 设置权限chmod 777 /home/gitlab/data/backups/xxx_11.1.4_gitlab_backup.tar# 进入容器docker exec -it home_gitlab_1 bash# 进行数据连贯服务> gitlab-ctl stop unicorn> gitlab-ctl stop sidekiq# 复原数据# BACKUP=工夫戳(以 xxx_11.1.4_gitlab_backup.tar 为例)> gitlab-rake gitlab:backup:restore BACKUP=xxx_11.1.4# 刷新配置> gitlab-ctl reconfigure# 重启服务> gitlab-ctl restart# 重启后,再次进入容器docker exec -it home_gitlab_1 bash# 创立备份,以备不时之需> gitlab-rake gitlab:backup:create# 退出容器> exit# 进行dockerdocker-compose down

    将数据备份,拷贝到宿主机的其余中央,比方:/home/gitlab-backup/zzz_11.1.4_gitlab_backup.tar

  3. 官网镜像降级

    降级到官网最新版本(11.7.0-ce.0

    批改 compose 文件

    version: '2'services:    gitlab:      image: 'gitlab/gitlab-ce:11.7.0-ce.0'      restart: unless-stopped      hostname: 'git.xxx.com'      environment:        TZ: 'Asia/Shanghai'        GITLAB_OMNIBUS_CONFIG: |          external_url 'http://git.xxx.com'          gitlab_rails['time_zone'] = 'Asia/Shanghai'      ports:        - '80:80'        - '443:443'      volumes:        - /home/gitlab/config:/etc/gitlab        - /home/gitlab/data:/var/opt/gitlab        - /home/gitlab/log:/var/log/gitlab
    # 查看 docker 运行状态,是否曾经进行了docker ps# 替换 compose 文件# 启动 docker composedocker-compose up -d# 进入容器docker exec -it home_gitlab_1 bash# 进行数据连贯服务> gitlab-ctl stop unicorn> gitlab-ctl stop sidekiq# 刷新配置> gitlab-ctl reconfigure# 重启服务> gitlab-ctl restart# 重启后,再次进入容器docker exec -it home_gitlab_1 bash# 创立备份,以备不时之需> gitlab-rake gitlab:backup:create# 退出容器> exit

    将数据备份,拷贝到宿主机的其余中央,比方:/home/gitlab-backup/nnn_11.1.7_gitlab_backup.tar

    Gitlab 服务器迁徙和降级全副实现。

2021-07-16 更新:

降级依照官网降级版本路线进行,否则会报错。

https://docs.gitlab.com/ee/up...

gitlab 删除我的项目报500 OpenSSL::Cipher::CipherError

# 进入镜像$ docker exec -it gitlab bash# 进入 DB 管制> gitlab-rails dbconsole# 革除 Token==> UPDATE projects SET runners_token = null, runners_token_encrypted = null;