ubuntu24.04安装的gitlab企业版从17.5.x升级到18.8.x
公司漏洞扫描发现安装的gitlab有漏洞,需要进行升级
系统是ubuntu24.04,漏洞扫描发现gitlab和ruby,postgresql都有漏洞,都需要进行升级

然后上网查询要怎么进行升级:
1.网上查了一通之后,发现其实升级gitlab就可以,其他两个在升级gitlab的时候会同步一起进行升级。
升级之前的准备工作:
1.查看当前gitlab的版本信息
确定gitlab是是企业版还是社区免费版(由于之前的gitlab不是我安装的)
sudo gitlab-rake gitlab:env:info
运行这条命令又报错:“chpst: fatal: unable to get password/group file entry: file does not exist”
解决办法:
1.检查系统核心文件权限
ls -la /etc/passwd /etc/group /etc/shadow
前两个文件应为 -rw-r--r-- 权限,且所有者为 root:root。如果权限或所有者异常(例如变成了 git 用户),就需要修复。这里权限是正常的。

2.确认 GitLab 所需的 git 用户是否存在,若不存在则添加用户
id git
这里显示git用户不存在

添加用户
sudo useradd --system --comment 'GitLab' --create-home git
3.检查 GitLab 服务管理器, 子服务的 runsvdir 服务状态:
sudo systemctl status gitlab-runsvdir
如果状态是 inactive (dead) 或 failed,请尝试启动它。服务状态我这里是active状态是符合的

解决之后,再次查看版本信息为17.5.2-ee(ee是企业版,ce是社区)

2.确定升级计划
由于是从17.x升级到18.x,涉及这种大版本升级,需要进行阶梯升级
由于我们是从17.5.x开始,需要先升级到17.x的最新版本,然后升级到18.0.x,再升级到18.3.x或18.4.x或18.5.x。
3.备份
sudo gitlab-rake gitlab:backup:create
备份如果没有报错,说明备份成功了。

备份日志中明确警告了:gitlab.rb 和 gitlab-secrets.json 这两个包含所有敏感配置和密钥的文件没有包含在自动备份中! 执行下面两条指令进行备份
sudo cp /etc/gitlab/gitlab.rb /etc/gitlab/gitlab.rb.bak
sudo cp /etc/gitlab/gitlab-secrets.json /etc/gitlab/gitlab-secrets.json.bak
备份确认
sudo ls -lth /var/opt/gitlab/backups/

确认后就可以执行升级了。
执行升级
1.从17.5.x升级到17.8.x
# 1. 更新软件包列表
sudo apt update
# 2. 安装目标版本 (例如 17.10.0)
sudo apt install gitlab-ee=17.10.0-ee.0
# 3. 重新配置(必须执行)
sudo gitlab-ctl reconfigure
# 4. 重启服务
sudo gitlab-ctl restart
从17.5.x直接升级17.10.x提示报错,要先升级到17.8.x才行,所以改成sudo apt install gitlab-ee=17.8.7-ee.0
如果过程中下载速度太慢,可以换成国内(清华)的镜像源:
# 1. 编辑源列表文件,替换为清华镜像
sudo sed -i 's|https://packages.gitlab.com/gitlab/gitlab-ee/ubuntu|https://mirrors.tuna.tsinghua.edu.cn/gitlab-ee/ubuntu|g' /etc/apt/sources.list.d/gitlab_gitlab-ee.list
# 2. 更新软件包列表(从新源获取索引)
sudo apt update
# 3. 安装目标版本 (例如 17.8.7)
sudo apt install gitlab-ee=17.8.7-ee.0
# 4. 重新配置(必须执行)
sudo gitlab-ctl reconfigure
# 5. 重启服务
sudo gitlab-ctl restart

升级完成之后,检查版本号是否成功,我这里版本升级成功了。
sudo gitlab-rake gitlab:env:info | grep Version

也可以查询账号(root)的默认密码,然后登录到web界面验证是否安装成功。
sudo cat /etc/gitlab/initial_root_password
2.从17.8.x升级到17.10.0
sudo apt install gitlab-ee=17.10.0-ee.0
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
# 验证:sudo gitlab-rake gitlab:env:info | grep Version
发现又被坑了,17.x最新版是17.11.7,制定升级计划时,一定要查清楚大版本的最终版本,升级到这个版本之后,再升级大版本。所以还要升级一次17.11.7
sudo apt-cache policy gitlab-ee
3.从17.10.0升级到17.11.7
sudo apt install gitlab-ee=18.11.7-ee.0
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
# 验证:sudo gitlab-rake gitlab:env:info | grep Version
4.从17.11.7升级到18.0.6
sudo apt install gitlab-ee=18.0.6-ee.0
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
# 验证:sudo gitlab-rake gitlab:env:info | grep Version
5.从18.0.6升级到18.8.2--报错,无法直接升级过去
sudo apt install gitlab-ee=18.8.2-ee.0
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
# 验证:sudo gitlab-rake gitlab:env:info | grep Version
从18.0.6直接升级到18.8.2的时候又报错了,提示只能先升级到18.5.x

5.从18.0.6升级到18.5.5--报错,无法直接升级过去
sudo apt install gitlab-ee=18.5.5-ee.0
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
# 验证:sudo gitlab-rake gitlab:env:info | grep Version
从18.0.6直接升级到18.5.5的时候又报错了,提示只能先升级到18.2.x,真是服了不能一次提示到位。

6.从18.0.6升级到18.2.8
sudo apt install gitlab-ee=18.2.8-ee.0
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
# 验证:sudo gitlab-rake gitlab:env:info | grep Version
升到18.2.8之后,再去升级18.5.5(由于之前已经提前下载好了,这次升级就很快),再执行一遍升级18.5.5的步骤
sudo apt install gitlab-ee=18.5.5-ee.0
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
# 验证:sudo gitlab-rake gitlab:env:info | grep Version
升级升级到18.5.5之后,重新进行病毒扫描发现,postgresql还有漏洞:CVE-2025-12817,提示还需要升级postgresql,所以只能继续往下升级gitlab。
sudo apt install gitlab-ee=18.8.2-ee.0
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
# 验证:sudo gitlab-rake gitlab:env:info | grep Version
最终升级到18.5.5之后,检查确认版本没错,再登录web界面查看是否可以成功打开。


升级之后重置密码
1.检查初始密码文件(大部分时候这个密码无效)
sudo cat /etc/gitlab/initial_root_password
如果文件存在,输出中的 Password: 后面就是初始密码。使用 用户名 root 和此密码登录。
2.重置root密码
sudo gitlab-rake "gitlab:password:reset[root]"

提示Successfully就说明成功了。现在可以去web界面用设置的密码登陆了

更多推荐
所有评论(0)