升级前必须完整备份GitLab所有关键数据,包括数据库、项目仓库、配置文件及附件等。使用GitLab自带工具创建备份:
sudo gitlab-rake gitlab:backup:create
备份文件默认存储在/var/opt/gitlab/backups/目录下,建议确认备份文件完整性(如检查文件大小、修改时间)。
通过以下命令查看当前GitLab版本,明确升级路径(如从13.12升级至15.0):
sudo gitlab-rake gitlab:env:info
或登录GitLab管理界面,点击右上角「Admin Area」→「Overview」查看版本信息。
确保系统已安装GitLab运行所需的依赖包(以CentOS 7为例):
sudo yum install -y policycoreutils openssh-server openssh-clients postfix
对于CentOS 8及以上版本,需使用dnf安装对应依赖。同时确认系统内核版本、glibc库等满足新版本GitLab的要求(如GitLab 15.0需glibc≥2.28)。
根据当前版本和目标版本,参考GitLab官方升级路径指南(如从13.x升级至14.x,再升级至15.x),避免跨大版本直接升级导致数据丢失或服务异常。
升级前停止所有GitLab服务,防止数据损坏:
sudo gitlab-ctl stop unicorn
sudo gitlab-ctl stop sidekiq
sudo gitlab-ctl stop nginx
更新Yum仓库缓存,然后直接升级到最新版本:
sudo yum update gitlab-ce -y
若需安装特定版本(如15.0.0),可先下载对应RPM包,再执行安装:
wget https://packages.gitlab.com/gitlab/gitlab-ce/el/7/gitlab-ce-15.0.0-ce.0.el7.x86_64.rpm
sudo rpm -Uvh gitlab-ce-15.0.0-ce.0.el7.x86_64.rpm
下载GitLab官方提供的升级脚本,自动检测并升级:
wget https://packages.gitlab.com/gitlab/gitlab-ce/script.rpm.sh
sudo rpm -i script.rpm.sh
升级完成后,重新配置GitLab以应用新版本设置:
sudo gitlab-ctl reconfigure
然后重启所有服务:
sudo gitlab-ctl restart
通过命令行或界面确认升级是否成功:
sudo gitlab-rake gitlab:check # 检查系统状态
sudo gitlab-rake gitlab:env:info # 查看当前版本
或访问GitLab管理界面(如http://your-server-ip),查看右上角版本号。
若重新配置时提示「Chef client进程占用」,可通过以下命令查找并终止相关进程:
ps aux | grep gitlab
kill -9 <PID> # 替换为实际进程ID
若升级后出现500错误,可能是数据库迁移未完成。检查迁移状态并执行迁移:
sudo gitlab-rake db:migrate:status # 查看迁移状态
sudo gitlab-rake db:migrate # 执行未完成的迁移
若安装过程中提示依赖冲突,可使用yum或rpm解决:
sudo yum deplist gitlab-ce # 查看依赖关系
sudo yum resolve # 自动解决依赖冲突
若问题无法解决,查看GitLab日志获取详细错误信息:
tail -f /var/log/gitlab/gitlab-rails/production.log # Rails应用日志
tail -f /var/log/gitlab/gitlab-ctl.log # 服务控制日志
/etc/gitlab/gitlab.rb(主配置文件)和/etc/gitlab/gitlab-secrets.json(密钥文件),避免配置丢失。