温馨提示×

ubuntu gitlab迁移方法

小樊
47
2025-09-27 19:17:33
栏目: 智能运维

Ubuntu环境下GitLab迁移完整步骤

1. 迁移前准备工作

  • 确认新服务器环境:确保新服务器满足GitLab系统要求(如Ubuntu 22.04及以上版本、至少4GB内存、足够的磁盘空间),并提前安装必要依赖(如curlwgetapt-transport-https)。
  • 备份原GitLab数据:使用GitLab内置工具创建完整备份,覆盖所有关键数据(仓库、用户信息、CI/CD配置、Wiki、问题跟踪等)。执行命令:
    sudo gitlab-rake gitlab:backup:create
    备份文件默认存储在/var/opt/gitlab/backups目录,文件名格式为时间戳_gitlab_backup.tar(如1716000000_2024_05_15_15.0.0_gitlab_backup.tar)。

2. 停止GitLab服务

迁移前需停止GitLab核心服务,确保数据一致性。执行以下命令停止关键服务:
sudo gitlab-ctl stop unicorn
sudo gitlab-ctl stop sidekiq
sudo gitlab-ctl stop nginx
(可选:若需更彻底的停止,可执行sudo gitlab-ctl stop停止所有服务)。

3. 安装新服务器GitLab实例

通过Omnibus包(推荐)安装GitLab Community Edition(CE)或Enterprise Edition(EE),步骤如下:

  • 导入GitLab仓库密钥
    curl https://packages.gitlab.com/gpg.key | sudo apt-key add -
  • 添加GitLab仓库
    echo "deb https://packages.gitlab.com/gitlab/gitlab-ce/ubuntu $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/gitlab.list
  • 更新包索引并安装
    sudo apt-get update
    sudo apt-get install gitlab-ce
    (若需指定版本,可添加-y --allow-downgrades参数)。

4. 恢复数据到新服务器

  • 复制备份文件:将原服务器备份文件复制到新服务器的/var/opt/gitlab/backups目录(需确保目录权限为git:git)。可使用scp命令:
    sudo scp -r user@old-server-ip:/var/opt/gitlab/backups/* user@new-server-ip:/var/opt/gitlab/backups/
  • 执行恢复操作
    sudo gitlab-rake gitlab:backup:restore BACKUP=时间戳
    (将“时间戳”替换为备份文件的前缀,如1716000000;若备份目录下有多个文件,需明确指定)。

5. 重新配置GitLab

  • 修改配置文件:编辑/etc/gitlab/gitlab.rb,调整新服务器环境设置(如外部URL、SSL证书、数据库连接等)。示例:
    external_url 'http://new-gitlab-ip'
    (若启用HTTPS,需配置nginx['ssl_certificate']nginx['ssl_certificate_key']
  • 应用配置:执行sudo gitlab-ctl reconfigure,使配置生效。

6. 启动GitLab服务并验证

  • 启动服务
    sudo gitlab-ctl start
    (可选:设置开机自启sudo gitlab-ctl enable
  • 验证状态
    sudo gitlab-ctl status(确认所有服务均为“run”状态)。
  • 检查数据完整性:通过浏览器访问新服务器的external_url,登录GitLab后验证仓库、用户、CI/CD配置、Wiki等数据是否完整。

注意事项

  • 版本兼容性:恢复备份的GitLab版本必须与备份时版本一致,或高于备份版本(如备份时为15.0,新服务器可安装15.0及以上版本)。
  • 数据安全:备份文件包含敏感信息(如用户密码哈希、API密钥),需存储在安全位置(如加密存储、离线介质)。
  • 测试环境验证:生产环境迁移前,务必在测试环境演练完整流程,避免数据丢失或服务中断。
  • 许可证迁移:若使用GitLab EE,需在恢复后重新激活许可证(通过GitLab控制台或管理员设置)。

0