linux

在Linux系统中如何迁移GitLab

小樊
54
2025-10-06 01:33:54
栏目: 智能运维

一、迁移前准备

  1. 确认环境兼容性:确保新服务器的Linux发行版(如CentOS、Ubuntu)与原服务器一致,且内核版本、系统架构(x86_64/ARM)兼容;GitLab版本需保持一致或更高(如原服务器为GitLab CE 16.0,新服务器可安装16.0及以上版本)。
  2. 安装必要依赖:在新服务器上安装与原服务器相同的依赖包(如openssh-serverpostfixpolicycoreutils-python),确保GitLab运行所需的服务(SSH、邮件)可用。
  3. 备份原服务器数据:迁移前必须完整备份原服务器的所有关键数据,避免数据丢失。

二、备份原GitLab数据

  1. 备份GitLab数据目录:使用rsynctar备份/var/opt/gitlab目录(包含仓库、配置、附件等所有数据),例如:
    sudo rsync -aAXv /var/opt/gitlab/ /path/to/backup/gitlab_backup/
    # 或
    sudo tar -cvzf gitlab_backup.tar.gz -C /var/opt gitlab
    
    此目录包含用户仓库、配置文件(/var/opt/gitlab/config)、附件(/var/opt/gitlab/shared)等重要数据。
  2. 备份GitLab数据库:GitLab使用PostgreSQL存储项目、用户、CI/CD等数据,需通过gitlab-rake命令导出:
    sudo gitlab-rake gitlab:backup:create
    
    备份文件默认保存在/var/opt/gitlab/backups目录,文件名为时间戳_gitlab_backup.tar(如1715200000_2025-05-08_16.0.0_gitlab_backup.tar)。
  3. 备份配置文件:单独备份GitLab主配置文件/etc/gitlab/gitlab.rb和SSL证书目录/etc/gitlab/ssl,确保新服务器配置一致:
    sudo cp /etc/gitlab/gitlab.rb /path/to/backup/
    sudo cp -r /etc/gitlab/ssl /path/to/backup/
    ```。
    
    

三、在新服务器上安装GitLab

  1. 安装GitLab:根据新服务器的Linux发行版选择安装方式(以CentOS为例):
    • 添加GitLab官方YUM仓库:
      curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
      
    • 安装GitLab Community Edition(CE):
      sudo yum install -y gitlab-ce
      
    • 安装完成后,GitLab会自动启动,初始访问地址为http://<新服务器IP>
  2. 配置基础参数:编辑/etc/gitlab/gitlab.rb,设置external_url(如http://your-new-server-ip),并保存。

四、恢复数据到新服务器

  1. 传输备份文件:将原服务器备份的/var/opt/gitlab/backups目录(含备份文件)、/var/opt/gitlab目录(数据目录)、/etc/gitlab/gitlab.rb(配置文件)复制到新服务器对应位置,例如使用scp
    scp -r /path/to/backup/gitlab_backup/backups/ root@new-server:/var/opt/gitlab/backups/
    scp -r /path/to/backup/gitlab_backup/config/ root@new-server:/var/opt/gitlab/config/
    scp -r /path/to/backup/gitlab_backup/shared/ root@new-server:/var/opt/gitlab/shared/
    scp /path/to/backup/gitlab_backup/gitlab.rb root@new-server:/etc/gitlab/
    ```。  
    
  2. 恢复数据库
    • 停止GitLab相关服务(避免数据冲突):
      sudo gitlab-ctl stop unicorn
      sudo gitlab-ctl stop sidekiq
      
    • 恢复备份文件(将备份文件复制到/var/opt/gitlab/backups目录,文件名需保留时间戳,如1715200000_gitlab_backup.tar):
      sudo cp /path/to/backup/backups/1715200000_gitlab_backup.tar /var/opt/gitlab/backups/
      
    • 执行恢复命令(BACKUP参数为备份文件的时间戳部分):
      sudo gitlab-rake gitlab:backup:restore BACKUP=1715200000
      
    • 恢复完成后,启动GitLab服务:
      sudo gitlab-ctl start
      ```。  
      
  3. 恢复数据目录和配置
    • 将备份的/var/opt/gitlab目录覆盖新服务器的对应目录(需停止GitLab服务):
      sudo rsync -aAXv /path/to/backup/gitlab_backup/ /var/opt/gitlab/
      
    • 恢复配置文件:
      sudo cp /path/to/backup/gitlab.rb /etc/gitlab/gitlab.rb
      sudo cp -r /path/to/backup/ssl /etc/gitlab/
      
    • 重新配置GitLab(使配置生效):
      sudo gitlab-ctl reconfigure
      ```。
      
      

五、验证迁移结果

  1. 检查服务状态:运行sudo gitlab-ctl status,确认所有服务(unicornsidekiqpostgresql)均处于run状态。
  2. 访问Web界面:通过浏览器访问http://<新服务器IP>,使用原GitLab的管理员账号登录,验证是否能正常访问。
  3. 验证数据完整性
    • 检查项目仓库:进入任意项目,查看代码、分支、提交记录是否完整;
    • 检查用户数据:确认用户账号、权限、组信息是否一致;
    • 检查CI/CD配置:查看流水线、作业是否正常运行。

0
看了该问题的人还看了