乐趣区

关于gitlab:填坑记GitLab-服务器迁移和升级

因为之前采纳的是 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
    # 启动 Docker
    docker-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
    # 进行之前的 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

  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 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

  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 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; 
退出移动版