GitLab操作:服务器迁移

12/31/2025 应用模板

目录


参考


# GitLab操作:服务器迁移

以下是基于GitLab CE 16.11.5 迁移服务器的操作指南


# 核心原则

  1. 版本一致性:新服务器必须安装完全相同的 GitLab 版本(16.11.5)。
  2. 完整备份:包含仓库数据、数据库、配置文件和密钥文件。
  3. 顺序操作:备份 → 迁移 → 恢复 → 验证。

# 一、迁移前准备(旧服务器)

# 1. 确认当前版本

sudo cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
# 确保输出:16.11.5
1
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

# 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. 传输备份文件

# 从旧服务器复制备份文件
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

权限修正

sudo chown git:git /var/opt/gitlab/backups/*.tar
sudo chmod 600 /etc/gitlab/gitlab*  # 配置文件权限
1
2

# 三、恢复数据(新服务器)

# 1. 停止服务

sudo gitlab-ctl stop unicorn
sudo gitlab-ctl stop sidekiq
sudo gitlab-ctl stop nginx
1
2
3

# 2. 恢复备份

# 使用备份编号(1712345678)
sudo gitlab-rake gitlab:backup:restore BACKUP=1712345678
1
2

✅ 按提示输入 yes 确认恢复。

# 3. 重载配置

sudo gitlab-ctl reconfigure  # 应用配置文件
sudo gitlab-ctl restart      # 重启服务
sudo gitlab-ctl status       # 检查状态
1
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

# 常见问题解决

  1. 恢复报错 Permission denied

    sudo chmod -R 755 /var/opt/gitlab/gitlab-rails  # 修复权限
    
    1
  2. 版本不匹配错误

    • 严格确保新旧服务器均为 16.11.5
  3. Nginx 502 错误

    sudo chmod -R o+x /var/opt/gitlab/gitlab-rails  # 授权访问
    sudo systemctl restart nginx
    
    1
    2

官方文档参考GitLab Backup Restore (opens new window)迁移成功标准​:所有项目数据、用户权限、仓库历史完整可用。

上次更新时间: 7/2/2025, 10:10:38 AM