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。