Ubuntu 下 GitLab 迁移实操指南
一 迁移总览与前置准备
cat /opt/gitlab/embedded/service/gitlab-rails/VERSIONdpkg -i gitlab-ce_XX.XX.X-ce.0_amd64.deb,然后 gitlab-ctl reconfigure。二 旧服务器备份
gitlab-rake gitlab:backup:create/etc/gitlab/gitlab.rb 中自定义备份目录与保留时间,例如:
gitlab_rails['backup_path'] = "/data/backup/gitlab"gitlab_rails['backup_keep_time'] = 604800(保留 7 天,单位秒)gitlab-ctl reconfigure0 1 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:createscp /etc/gitlab/gitlab.rb root@新服务器:/etc/gitlab/scp /etc/gitlab/gitlab-secrets.json root@新服务器:/etc/gitlab/三 新服务器恢复
/var/opt/gitlab/backupschown -R git:git /data/backup/gitlab)。chmod 600 或 chown git:git;在部分环境中为规避权限问题会使用 chmod 777(仅在可信内网临时使用)。gitlab-ctl stop unicorn、gitlab-ctl stop sidekiqgitlab-rake gitlab:backup:restore BACKUP=1684461274_2023_05_19_13.12.2gitlab-ctl start四 迁移后配置与验证
/etc/gitlab/gitlab.rb,设置 external_url 'http://新服务器IP:端口'(或域名),然后 gitlab-ctl reconfigure 使配置生效。/etc/gitlab/gitlab-secrets.json 与旧环境一致(用于加密与签名,缺失会导致登录、Webhooks、Runner 等异常)。gitlab-ctl statusgitlab-ctl tail(如 nginx、sidekiq、postgresql 等组件异常时定位问题)。gitlab-rails consoleu = User.where(username: 'root').firstu.password = '新密码'; u.password_confirmation = '新密码'; u.save!exit五 常见问题与进阶建议
/etc/gitlab/gitlab.rb 的 gitlab_rails['backup_path'] 与权限后执行 gitlab-ctl reconfigure。git_data_dirs 路径并使用 rsync 同步后 reconfigure 生效。backup_keep_time 与定时任务,避免磁盘被旧备份占满。