GitLab操作:服务器迁移
accttodo 12/31/2025 应用模板
目录
参考
# GitLab操作:服务器迁移
以下是基于GitLab CE 16.11.5 迁移服务器的操作指南
# 核心原则
- 版本一致性:新服务器必须安装完全相同的 GitLab 版本(16.11.5)。
- 完整备份:包含仓库数据、数据库、配置文件和密钥文件。
- 顺序操作:备份 → 迁移 → 恢复 → 验证。
# 一、迁移前准备(旧服务器)
# 1. 确认当前版本
sudo cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
# 确保输出:16.11.5
1
2
2
# 2. 修改存储路径(如需要)
若需调整仓库存储位置(默认 /var/opt/gitlab/git-data/repositories
):
sudo mkdir -p /new/path/gitlab # 创建新目录
sudo vim /etc/gitlab/gitlab.rb # 编辑配置
git_data_dirs({ "default" => { "path" => "/new/path/gitlab" }}) # 修改路径
sudo gitlab-ctl stop
sudo gitlab-ctl reconfigure
sudo gitlab-ctl start
1
2
3
4
5
6
2
3
4
5
6
# 3. 完整备份
sudo gitlab-rake gitlab:backup:create # 生成备份文件(如 1712345678_2024_04_05_16.11.5_gitlab_backup.tar)
1
关键文件位置:
- 备份文件:
/var/opt/gitlab/backups/
- 配置文件:
/etc/gitlab/gitlab.rb
- 密钥文件:
/etc/gitlab/gitlab-secrets.json
⚠️ 必须手动备份配置文件!
sudo cp /etc/gitlab/gitlab.rb /backup/ sudo cp /etc/gitlab/gitlab-secrets.json /backup/
1
2
# 二、迁移到新服务器
# 1. 安装相同版本 GitLab
# Ubuntu/Debian
curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
sudo apt install gitlab-ce=16.11.5-ce.0
# CentOS/RHEL
curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
sudo yum install gitlab-ce-16.11.5-ce.0.el7
1
2
3
4
5
6
7
2
3
4
5
6
7
# 2. 传输备份文件
# 从旧服务器复制备份文件
scp /var/opt/gitlab/backups/1712345678_2024_04_05_16.11.5_gitlab_backup.tar user@new-server:/var/opt/gitlab/backups/
# 复制配置文件
scp /backup/gitlab.rb user@new-server:/etc/gitlab/
scp /backup/gitlab-secrets.json user@new-server:/etc/gitlab/
1
2
3
4
5
6
2
3
4
5
6
权限修正:
sudo chown git:git /var/opt/gitlab/backups/*.tar
sudo chmod 600 /etc/gitlab/gitlab* # 配置文件权限
1
2
2
# 三、恢复数据(新服务器)
# 1. 停止服务
sudo gitlab-ctl stop unicorn
sudo gitlab-ctl stop sidekiq
sudo gitlab-ctl stop nginx
1
2
3
2
3
# 2. 恢复备份
# 使用备份编号(1712345678)
sudo gitlab-rake gitlab:backup:restore BACKUP=1712345678
1
2
2
✅ 按提示输入
yes
确认恢复。
# 3. 重载配置
sudo gitlab-ctl reconfigure # 应用配置文件
sudo gitlab-ctl restart # 重启服务
sudo gitlab-ctl status # 检查状态
1
2
3
2
3
# 四、验证与调优
# 1. 完整性检查
sudo gitlab-rake gitlab:check SANITIZE=true
1
# 2. 访问测试
- 浏览器访问新服务器 URL。
- 验证项目、用户、权限是否正确。
- 测试仓库推送/拉取操作。
# 3. 自动备份配置(可选)
sudo vim /etc/gitlab/gitlab.rb
gitlab_rails['backup_keep_time'] = 604800 # 保留7天备份
sudo gitlab-ctl reconfigure
# 添加定时任务(每天2点备份)
echo "0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1" | sudo tee -a /etc/crontab
1
2
3
4
5
6
2
3
4
5
6
# 常见问题解决
恢复报错
Permission denied
sudo chmod -R 755 /var/opt/gitlab/gitlab-rails # 修复权限
1版本不匹配错误
- 严格确保新旧服务器均为 16.11.5。
Nginx 502 错误
sudo chmod -R o+x /var/opt/gitlab/gitlab-rails # 授权访问 sudo systemctl restart nginx
1
2
官方文档参考: GitLab Backup Restore (opens new window) 迁移成功标准:所有项目数据、用户权限、仓库历史完整可用。