背景:
GitLab 存在命令注入漏洞,该漏洞源于未经授权的用户可能使用以下命令在服务器上执行任意代码 项目导入功能。以下产品版本受到影响:14.10.5 之前的 14.0、15.0.4 之前的 15.0 和 15.1.1 之前的 15.1 开始的所有版本。
因服务器处于内网环境,使用RPM包进行手动升级
1. 升级前准备
1.1 备份
- 创建备份文件:
$ gitlab-rake gitlab:backup:create
会在/var/opt/gitlab/backups目录下生成备份文件-tar包
2. 最后提示
gitlab.rb
gitlab-secrets.json
包含敏感数据,需手动备份;
/etc/gitlab #手动备份两个文件
gitlab.rb
gitlab-secrets.json
1.2 查看gitlab版本;
rpm -qa gitlab-ce
cat /$opt/gitlab/embedded/service/gitlab-rails/VERSION
或登录gitlab右上角help查看
1.3 下载
1.官方提供版本升级顺序,跨大版本升级可能会出现意外错误。
https://docs.gitlab.com/ee/update/#linux-packages-omnibus-gitlab
- 下载
下载地址:https://packages.gitlab.com/gitlab/gitlab-ce
注意发行版本,我这里是el/7
2. 安装
- 整体安装命令流程,我这里升级版本从
14.0.0 -> 14.3.6 -> 14.9.5 ->14.10.5
$ rpm -qa gitlab-ce #查看本地安装版本
$ rpm -evh gitlab-ce-14.0.0-xxx #卸载gitlab
$ rpm -ivh gitlab-ce-14.3.6-xxx.rpm #安装新版本gitlab
$ gitlab-ctl reconfigure #重编译
$ gitlab-ctl start #启动
$ rpm -qa gitlab-ce #验证是否升级成功
$ ·登录前端页面,查看仓库代码是否正常
$ ·验证成功后升级下一个版本;同样的流程:
$ gitlab-ctl stop #关闭
$ rpm -evh gitlab-ce-14.3.6-xxx #卸载gitlab
$ rpm -ivh gitlab-ce-14.9.5-xxx.rpm #安装新版本gitlab
$ gitlab-ctl reconfigure #重编译
$ gitlab-ctl start #启动
$ rpm -qa gitlab-ce #验证是否升级成功
3. 安装过程截图及问题记录
3.1 依赖错误:
rpm -ivh gitlab-ce-14.3.6-xxx.rpm
报错;- 解决方法命令后加
--nodeps --force
:
rpm -ivh *.rpm --nodeps --force 命令解释:
-i :安装
-U :升级软件,若未软件尚未安装,则安装软件
-v :查看安装过程
-h :显示安装进度
-qa 查看所有已安装的软件包
–force :强制安装
–nodeps :不考虑相依属性的关系
- gitlab-ctl reconfigure
- gitlab-ctl start 验证
3.2 500错误:
-
第一次升级至14.3.6,可访问登录页,登录后报500
-
查看gitlab日志:
tail -200f /var/log/gitlab/gitlab-rails/production.log
-解决方法:升级时可能跳过了数据库架构升级步骤,运行gitlab-rake db:migrate:status
检查数据库服务。可看到其中有服务down了
-
可尝试
gitlab-ctl reconfigure
重编译。我这里尝试没有解决。 -
使用命令
gitlab-rake db:migrate
-
再次查看
gitlab-rake db:migrate:status
正常
3.3 502错误:
- 访问页面时直接报502错误
- 解决方法:
$ systemctl stop gitlab-runsvdir.service
$ gitlab-ctl reconfigure
$ gitlab-ctl start gitlab-runsvdir.service
$ gitlab-ctl status
- 遇到500或502错误可多尝试重启服务,一般情况是服务超时,登录后可在管理员页面-设置-偏好设置-Gitaly超时 中设置超时时间。最多57s。
3.4 rpm -Uvh命令错误
- 第二次升级14.9.5版本,尝试使用 rpm -Uvh 命令直接升级软件包。升级编译失败。