因为之前采纳的是 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
这个版本号能够下载。然而间接应用新版本的话,会呈现各种问题,比方权限问题,版本问题等。
- 不能将
gitlab
文件夹间接打包进行转移,会遇见各种权限问题。 - 不能间接将 汉化修改版 间接改成 官网新版,会遇见版本不统一问题。
3. 正确服务器迁徙的姿态
-
在原来的服务器上运行如下命令:
# 进入到容器中 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
- 将这个
tar
文件,传输到新的服务器上 -
在新的服务器上,运行原来服务器上的 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
# 启动 Docker docker-compose up -d
- 在新的服务器上启动 Docker 后,将备份的
tar
文件拷贝到/home/gitlab/data/backups
目录下,并将文件权限设置为777
-
进入到新服务器的容器中执行以下命令:
# 进入到容器中 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 降级
-
同镜像降级
批改 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
# 进行之前的 Docker docker-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 # 进行 docker docker-compose down
将数据备份,拷贝到宿主机的其余中央,比方:
/home/gitlab-backup/xxx_11.1.4_gitlab_backup.tar
-
逾越到官网镜像(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 compose docker-compose up -d # 启动实现后,将备份的 tar 拷贝到 /home/gitlab/data/backups cp /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 # 进行 docker docker-compose down
将数据备份,拷贝到宿主机的其余中央,比方:
/home/gitlab-backup/zzz_11.1.4_gitlab_backup.tar
-
官网镜像降级
降级到官网最新版本(
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 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
将数据备份,拷贝到宿主机的其余中央,比方:
/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;