在 CentOS 上升级 GitLab,常见有 RPM 升级(最常用) 和 Docker 升级 两种情况。下面按 最常见场景(Omnibus 安装) 给你一个稳妥、可回滚的升级流程。
gitlab-ctl status
如果有输出且能正常访问 GitLab,一般是 Omnibus 安装。
查看版本:
cat /opt/gitlab/version-manifest.txt | head -5
# 或
gitlab-rake gitlab:env:info
gitlab-rake gitlab:backup:create
备份文件一般在:
/var/opt/gitlab/backups/
⚠️ 注意
/etc/gitlab/gitlab.rbcp /etc/gitlab/gitlab.rb /etc/gitlab/gitlab.rb.bak
cp -r /etc/gitlab/ /root/gitlab-config-bak/
cat /etc/redhat-release
| CentOS 版本 | GitLab 支持情况 |
|---|---|
| CentOS 7 | ✅ 仍支持(部分新版本 GitLab 已停止) |
| CentOS 8 | ❌ 官方源已失效 |
| CentOS Stream | ✅ |
yum install -y curl policycoreutils openssh-server
确认 GitLab 仓库存在:
ls /etc/yum.repos.d/gitlab*
如果没有,可重新添加:
curl -fsSL https://packages.gitlab.com/gpg.key | sudo tee /etc/pki/rpm-gpg/RPM-GPG-KEY-gitlab
yum clean all
yum makecache
yum update gitlab-ce
如果是 EE 版:
yum update gitlab-ee
升级完成后会自动执行:
gitlab-ctl reconfigure
1️⃣ 查看当前版本:
rpm -qa | grep gitlab
2️⃣ 下载目标版本(示例):
wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-16.7.2-ce.0.el7.x86_64.rpm
3️⃣ 升级:
rpm -Uvh gitlab-ce-16.7.2-ce.0.el7.x86_64.rpm
gitlab-ctl status
gitlab-rake gitlab:check SANITIZE=true
访问 Web 页面确认正常。
⚠️ 不能任意跨版本升级
官方推荐路径:
旧版本 → 当前 minor 最新 → 下一个 major 最新
例如:
14.0 → 14.10 → 15.0 → 15.11 → 16.x
查看升级路径:
docker pull gitlab/gitlab-ce:latest
docker stop gitlab
docker rm gitlab
docker run -d \
--name gitlab \
-p 443:443 -p 80:80 -p 22:22 \
-v gitlab-config:/etc/gitlab \
-v gitlab-logs:/var/log/gitlab \
-v gitlab-data:/var/opt/gitlab \
gitlab/gitlab-ce:latest
| 问题 | 解决 |
|---|---|
| 升级后 502 | gitlab-ctl reconfigure && gitlab-ctl restart |
| PostgreSQL 升级失败 | 确保磁盘空间 > 5G |
| CentOS 8 无法安装 | 换 CentOS Stream 或迁移 |
| GitLab 起不来 | 查看日志 gitlab-ctl tail |
你可以直接告诉我:
1️⃣ cat /etc/redhat-release
2️⃣ gitlab-rake gitlab:env:info
3️⃣ 想升级到哪个版本
4️⃣ 是否生产环境
我可以 一步一步给你精确到命令的升级方案,包括回滚方案 ✅