CentOS环境下GitLab更新升级指南
备份数据:升级前必须完整备份GitLab所有关键数据(数据库、项目仓库、配置文件),避免数据丢失。使用GitLab自带工具执行完整备份:
sudo gitlab-rake gitlab:backup:create
备份文件默认存储在/var/opt/gitlab/backups目录,文件名格式为TIMESTAMP_gitLAB_BACKUP.tar。
确认当前版本:通过以下命令查看当前GitLab版本,明确升级路径(如从13.12升级至16.0需经过14.x、15.x等中间版本):
sudo gitlab-rake gitlab:env:info
检查系统环境:确保CentOS系统已更新至最新稳定版,并安装必要依赖(如CentOS 7需安装policycoreutils、openssh-server、postfix):
sudo yum update -y
sudo yum install -y policycoreutils openssh-server postfix
规划升级路线:GitLab升级需遵循循序渐进原则(如13.x→14.x→15.x→16.x),避免跨大版本直接升级。可通过GitLab官方升级工具或文档确认兼容版本链。
升级前需停止GitLab核心服务,避免数据冲突:
sudo gitlab-ctl stop unicorn
sudo gitlab-ctl stop sidekiq
sudo gitlab-ctl stop nginx
gitlab-ce-16.0.0-ce.0.el7.x86_64.rpm)。wget下载包(替换为实际URL):wget https://packages.gitlab.com/gitlab/gitlab-ce/el/7/x86_64/gitlab-ce-16.0.0-ce.0.el7.x86_64.rpm
rpm --import https://packages.gitlab.com/gpg.key
rpm -Kv gitlab-ce-*.rpm
rpm命令升级(保留旧配置):sudo rpm -Uvh gitlab-ce-*.rpm
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
sudo gitlab-rake gitlab:check SANITIZE=true # 验证配置与数据库一致性
sudo gitlab-ctl status # 确认所有服务运行正常
http://your-server-ip),确认登录页面显示新版本号。数据库迁移失败:若升级后出现500错误或数据库迁移停滞,可手动检查迁移状态并执行:
sudo gitlab-rake db:migrate:status # 查看未完成的迁移
sudo gitlab-rake db:migrate # 执行未完成的迁移
进程占用导致配置失败:若gitlab-ctl reconfigure报错(如Chef进程占用),可通过以下命令终止冲突进程:
ps aux | grep gitlab # 查找gitlab相关进程
kill -9 <PID> # 终止指定进程
glibc或PostgreSQL兼容性问题:若升级后GitLab无法启动,可能是操作系统glibc版本过高(如CentOS 7升级至glibc 2.28)或PostgreSQL版本不兼容。需参考GitLab官方文档调整配置(如降级glibc或迁移PostgreSQL数据)。
/etc/gitlab/gitlab.rb(主配置文件)和/etc/gitlab/gitlab-secrets.json(密钥文件),避免配置丢失。