温馨提示×

GitLab在Linux中如何进行项目迁移

小樊
34
2025-12-06 16:12:44
栏目: 智能运维

Linux下迁移GitLab项目的标准流程

一 准备与版本要求

  • 在新服务器安装与旧服务器相同版本的 GitLab(小版本也尽量一致),避免恢复失败或数据不一致。
  • 备份并迁移敏感配置文件:/etc/gitlab/gitlab.rb/etc/gitlab/gitlab-secrets.json(备份包默认不包含这两个文件)。
  • 规划备份保留策略(可选):在 /etc/gitlab/gitlab.rb 中设置
    • gitlab_rails[‘manage_backup_path’] = true
    • gitlab_rails[‘backup_path’] = “/opt/gitlab_backup”
    • gitlab_rails[‘backup_keep_time’] = 604800(保留7天,单位为秒)
      修改后执行:sudo gitlab-ctl reconfigure 使配置生效。

二 在源服务器创建备份

  • 执行备份(Omnibus 包默认会备份数据库、仓库、上传等,不含 gitlab.rb 与 gitlab-secrets.json):
    • sudo gitlab-rake gitlab:backup:create
  • 备份文件默认位于:/var/opt/gitlab/backups/,文件名形如:YYYY-MM-DD-HH-MM-SS_gitlab_backup.tar。如自定义了 backup_path,请到对应目录查看。
  • 将备份文件与配置文件一并拷贝到新服务器(示例):
    • scp /var/opt/gitlab/backups/YYYY-MM-DD-HH-MM-SS_gitlab_backup.tar new:/var/opt/gitlab/backups/
    • scp /etc/gitlab/gitlab.rb new:/etc/gitlab/gitlab.rb
    • scp /etc/gitlab/gitlab-secrets.json new:/etc/gitlab/gitlab-secrets.json

三 在新服务器恢复

  • 确认已安装相同版本 GitLab,且备份文件已放入正确的备份目录(默认 /var/opt/gitlab/backups/)。
  • 建议恢复前停止应用写入服务:
    • sudo gitlab-ctl stop unicorn
    • sudo gitlab-ctl stop sidekiq
  • 执行恢复(BACKUP 只填时间戳部分,不要带 “_gitlab_backup.tar” 后缀):
    • sudo gitlab-rake gitlab:backup:restore BACKUP=YYYY-MM-DD-HH-MM-SS
  • 恢复完成后重启并重新配置:
    • sudo gitlab-ctl reconfigure
    • sudo gitlab-ctl start
  • 重要提示:恢复过程会先清空当前实例数据,仅在确认无误后执行。

四 迁移后的网络与权限配置

  • 更新 /etc/gitlab/gitlab.rb 中的外部访问地址:
    • external_url ‘http://your-new-domain-or-ip’
    • 如 SSH 端口非 22,设置:gitlab_rails[‘gitlab_shell_ssh_port’] = 2222
  • 重新配置并重启:sudo gitlab-ctl reconfigure && sudo gitlab-ctl restart
  • 开放防火墙/云安全组端口(示例为 80/443/22 或自定义 SSH 端口),确保用户可访问。

五 验证与常见问题

  • 验证要点:
    • 登录 Web 检查项目、用户与权限、LFS/附件是否完整;
    • 执行 sudo gitlab-rake gitlab:check 检查系统状态;
    • 如配置了对象存储/容器镜像仓库,确认相关功能可用。
  • 常见问题与处理:
    • 版本不一致导致恢复失败:确保两端 GitLab 版本一致(小版本尽量一致)。
    • 备份文件权限/属主错误:将备份目录及文件属主设为 git:git,权限如 0755/0644
    • 502/权限异常:检查日志(/var/log/gitlab/)与目录权限,必要时 chmod/chown 修复。
    • 自定义备份路径:恢复前确认 gitlab.rb 中 backup_path 与备份文件所在路径一致,并重新 reconfigure。

0