温馨提示×

如何在Linux中升级GitLab版本

小樊
34
2025-11-02 15:45:00
栏目: 智能运维

一、升级前的准备工作

  1. 备份数据:升级前必须完整备份GitLab的所有关键数据(数据库、项目仓库、配置文件),避免操作失误导致数据丢失。可使用GitLab自带工具执行完整备份:
    sudo gitlab-rake gitlab:backup:create
    
    备份文件默认存储在/var/opt/gitlab/backups目录(Omnibus安装)或自定义备份路径(手动配置)。
  2. 确认当前版本:通过以下命令查看当前GitLab版本,明确升级路径(如从16.0升级到17.0需逐步进行):
    sudo gitlab-rake gitlab:env:info
    
    或登录GitLab Web界面,点击右上角头像→SettingsGeneral查看。
  3. 检查系统依赖:确保系统已安装GitLab运行所需的依赖包(如CentOS需policycoreutilsopenssh-serverpostfix;Debian需openssh-serverca-certificates)。可通过包管理器更新依赖:
    # Debian/Ubuntu
    sudo apt update && sudo apt upgrade -y
    # CentOS/RHEL
    sudo yum update -y
    

二、Omnibus安装(推荐方式)的升级步骤 Omnibus是GitLab官方推荐的安装方式,适用于大多数Linux发行版(Debian、Ubuntu、CentOS、RHEL等),操作简便且不易出错。

  1. 停止GitLab服务:停止核心服务以避免升级冲突:
    sudo gitlab-ctl stop unicorn
    sudo gitlab-ctl stop sidekiq
    sudo gitlab-ctl stop nginx
    
  2. 更新包管理器索引(Debian/Ubuntu):
    sudo apt update
    
  3. 升级GitLab包
    • Debian/Ubuntu(使用APT):
      sudo apt install gitlab-ce
      
    • CentOS/RHEL(使用YUM/DNF):
      sudo yum update gitlab-ce
      
    系统会自动下载并安装最新版本的GitLab,保留原有配置。
  4. 重新配置GitLab:应用新版本的配置变更(如修改过gitlab.rb):
    sudo gitlab-ctl reconfigure
    
    此命令会重新生成配置文件、初始化数据库表结构(如有变更)。
  5. 重启GitLab服务:启动所有服务并验证状态:
    sudo gitlab-ctl start
    sudo gitlab-ctl status  # 确保所有服务均为“run”状态
    
  6. 验证升级结果
    • 命令行验证:
      sudo gitlab-rake gitlab:check
      
    • Web界面验证:访问http://your-gitlab-domain,查看右下角版本号是否更新。

三、Docker容器安装的升级步骤 若GitLab通过Docker运行,升级流程更简单,只需替换镜像并保留数据卷。

  1. 备份数据卷:Docker数据通常存储在卷(Volume)或绑定挂载目录中,确保备份/var/opt/gitlab(数据)、/etc/gitlab(配置)等目录:
    # 示例:备份至/srv/gitlab-backup
    sudo rsync -avz /var/opt/gitlab/ /srv/gitlab-backup/opt/
    sudo rsync -avz /etc/gitlab/ /srv/gitlab-backup/etc/
    
  2. 停止并删除旧容器
    docker stop gitlab
    docker rm gitlab
    
  3. 拉取最新镜像
    docker pull gitlab/gitlab-ce:latest
    
  4. 启动新容器:使用之前的数据卷挂载,确保配置和数据保留:
    docker run --detach \
      --hostname gitlab.example.com \
      --publish 443:443 --publish 80:80 --publish 22:22 \
      --name gitlab \
      --restart always \
      --volume /srv/gitlab/config:/etc/gitlab \
      --volume /srv/gitlab/logs:/var/log/gitlab \
      --volume /srv/gitlab/data:/var/opt/gitlab \
      gitlab/gitlab-ce:latest
    
  5. 验证升级:等待容器启动完成后,访问Web界面确认版本更新。

四、升级后的注意事项

  1. 检查数据库迁移:若升级后出现500错误或功能异常,可能是数据库迁移未完成。可手动执行迁移:
    sudo gitlab-rake db:migrate:status  # 查看迁移状态
    sudo gitlab-rake db:migrate         # 执行未完成的迁移
    
  2. 清理旧文件:升级完成后,可删除旧版本的缓存文件以释放空间:
    sudo gitlab-rake cache:clear
    
  3. 监控服务状态:升级后24小时内密切监控GitLab运行状态(如CPU、内存使用率),确保无异常。

0