温馨提示×

ubuntu与gitlab迁移指南

小樊
51
2025-09-21 10:22:19
栏目: 智能运维

Ubuntu环境下GitLab迁移完整指南

一、迁移前准备

  1. 确认新服务器环境
    确保新Ubuntu服务器满足GitLab的系统要求(如Ubuntu 22.04/20.04 LTS、至少4GB内存、足够的磁盘空间),并提前安装curlopenssh-server等基础依赖。
  2. 备份原GitLab数据
    迁移前必须完整备份所有关键数据,避免丢失:
    • 备份所有数据:使用GitLab内置命令生成包含仓库、用户、CI/CD配置等的完整备份,备份文件默认存储在/var/opt/gitlab/backups目录。
      sudo gitlab-rake gitlab:backup:create
      
    • 备份配置文件:单独复制gitlab.rb(主配置文件)和gitlab-secrets.json(敏感信息如数据库密码、SSH密钥),防止配置丢失。
      sudo cp /etc/gitlab/gitlab.rb /path/to/backup/
      sudo cp /etc/gitlab/gitlab-secrets.json /path/to/backup/
      
  3. 停止GitLab服务
    为避免备份或迁移过程中数据损坏,需停止GitLab核心服务:
    sudo gitlab-ctl stop unicorn
    sudo gitlab-ctl stop sidekiq
    sudo gitlab-ctl stop nginx
    

二、新服务器安装GitLab

  1. 添加GitLab软件源
    根据GitLab版本选择对应的安装脚本(CE社区版/EE企业版),添加官方软件源到Ubuntu的APT源列表:
    curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
    
  2. 安装GitLab
    使用APT安装与原服务器相同版本的GitLab(版本不一致可能导致数据结构不兼容),并通过EXTERNAL_URL设置访问域名或IP:
    sudo apt-get install gitlab-ce
    sudo EXTERNAL_URL="http://your-new-gitlab-ip" apt-get install gitlab-ce
    

三、迁移数据到新服务器

  1. 传输备份文件
    将原服务器的备份文件(/var/opt/gitlab/backups下的.tar文件)和配置文件复制到新服务器的对应目录:
    scp /var/opt/gitlab/backups/*.tar user@new-server:/var/opt/gitlab/backups/
    scp /path/to/backup/gitlab.rb user@new-server:/etc/gitlab/
    scp /path/to/backup/gitlab-secrets.json user@new-server:/etc/gitlab/
    
  2. 恢复数据库与数据
    • 恢复数据库:GitLab的数据库(默认PostgreSQL)需单独恢复,确保数据一致性:
      # 新服务器上创建数据库(名称需与原服务器一致,如gitlabhq_production)
      sudo -u postgres createdb gitlabhq_production
      # 导入备份的SQL文件
      sudo -u postgres psql gitlabhq_production < /var/opt/gitlab/backups/gitlab-backup.sql
      
    • 恢复完整备份:使用GitLab恢复命令还原所有数据(备份文件名中的时间戳需与原服务器一致):
      sudo chown git:git /var/opt/gitlab/backups/*.tar  # 确保备份文件属主正确
      sudo gitlab-rake gitlab:backup:restore BACKUP=2025-09-20-12-00-00  # 替换为实际备份文件名
      
  3. 迁移仓库与附件(可选)
    若备份未包含仓库或附件,可直接复制原服务器的对应目录到新服务器:
    sudo rsync -avz /var/opt/gitlab/repositories/ user@new-server:/var/opt/gitlab/
    sudo rsync -avz /var/opt/gitlab/shared/ user@new-server:/var/opt/gitlab/
    

四、配置与启动新GitLab

  1. 更新配置文件
    编辑新服务器的/etc/gitlab/gitlab.rb,根据新环境调整以下关键配置:
    external_url 'http://your-new-gitlab-ip'  # 设置访问URL
    gitlab_rails['gitlab_shell_ssh_port'] = 22  # SSH端口(若未修改则保持默认)
    gitlab_rails['gitlab_shell_ssh_host'] = 'your-new-gitlab-ip'  # SSH主机地址
    
  2. 重新配置GitLab
    执行reconfigure命令应用配置变更,生成新的服务配置文件:
    sudo gitlab-ctl reconfigure
    
  3. 启动GitLab服务
    启动GitLab核心服务并设置开机自启:
    sudo gitlab-ctl start
    sudo gitlab-ctl enable
    

五、验证迁移结果

  1. 访问GitLab实例
    通过浏览器访问新服务器的EXTERNAL_URL(如http://your-new-gitlab-ip),确认能正常登录。
  2. 检查数据完整性
    • 验证用户账号、权限是否正常;
    • 检查仓库是否能正常克隆、推送;
    • 查看CI/CD配置是否能正常触发流水线;
    • 确认附件、Wiki等内容是否完整。
  3. 测试功能
    让部分用户进行实际操作(如提交代码、创建Issue),确保所有功能正常。

六、迁移注意事项

  • 版本一致性:新旧服务器必须使用相同版本的GitLab,避免版本升级导致的兼容性问题。
  • 数据安全:备份文件传输过程中建议使用scp(加密传输)或rsync over SSH,避免数据泄露。
  • 测试环境优先:生产环境迁移前,务必在测试环境演练整个流程,熟悉操作步骤。
  • 监控性能:迁移后密切关注新服务器的CPU、内存、磁盘使用情况,及时优化配置(如调整PostgreSQL参数、增加磁盘空间)。

通过以上步骤,可实现Ubuntu环境下GitLab实例的安全迁移,确保数据与配置的完整性。迁移过程中如遇问题,可参考GitLab官方文档或寻求专业技术支持。

0