{{< details >}}

  • Tier: 基础版,专业版,旗舰版
  • Offering: 私有化部署

{{< /details >}}

如果您使用自编译安装方法安装了极狐GitLab,您可以将您的实例转换为 Linux 软件包实例。

在转换自编译安装时:

{{< alert type=”warning” >}}

转换自编译安装尚未经过极狐GitLab 测试。

{{< /alert >}}

要将您的自编译安装转换为 Linux 软件包安装:

  1. 从当前的自编译安装创建备份:

    cd /home/git/gitlab
    sudo -u git -H bundle exec rake gitlab:backup:create RAILS_ENV=production
    
  2. 使用 Linux 软件包安装极狐GitLab
  3. 将备份文件复制到新服务器的目录 /var/opt/gitlab/backups/
  4. 在新安装中恢复备份(详细说明):

    # 此命令将覆盖极狐GitLab 数据库的内容!
    sudo gitlab-backup restore BACKUP=<FILE_NAME>
    

    根据您的数据库和 Git 数据的大小,恢复过程需要几分钟。

  5. 因为所有设置都存储在 Linux 软件包安装中的 /etc/gitlab/gitlab.rb 中,您必须重新配置新安装。个别设置必须从诸如 gitlab.ymlpuma.rbsmtp_settings.rb 等自编译安装文件中手动移动。有关所有可用选项,请参阅gitlab.rb 模板
  6. 将密钥从旧的自编译安装复制到新的 Linux 软件包安装:
    1. 恢复与 Rails 相关的密钥。从 /home/git/gitlab/config/secrets.yml(自编译安装)复制 db_key_basesecret_key_baseotp_key_baseencrypted_settings_key_baseopenid_connect_signing_keyactive_record_encryption 的值到 /etc/gitlab/gitlab-secrets.json(Linux 软件包安装)中的相应值。
    2. /home/git/gitlab-shell/.gitlab_shell_secret(自编译安装)的内容复制到 /etc/gitlab/gitlab-secrets.json(Linux 软件包安装)中的 secret_token。它看起来像这样:

       {
         "gitlab_workhorse": {
           "secret_token": "..."
         },
         "gitlab_shell": {
           "secret_token": "..."
         },
         "gitlab_rails": {
           "secret_key_base": "...",
           "db_key_base": "...",
           "otp_key_base": "...",
           "encrypted_settings_key_base": "...",
           "openid_connect_signing_key": "...",
           "active_record_encryption_primary_key": [ "..."],
           "active_record_encryption_deterministic_key": ["..."],
           "active_record_encryption_key_derivation_salt": "...",
         }
         ...
       }
      
  7. 重新配置极狐GitLab 以应用更改:

    sudo gitlab-ctl reconfigure
    
  8. 如果您迁移了 /home/git/gitlab-shell/.gitlab_shell_secret,您必须重启 Gitaly:

    sudo gitlab-ctl restart gitaly
    

将外部 PostgreSQL 转换为使用备份的 Linux 软件包安装

您可以通过使用备份将外部 PostgreSQL 安装转换为 Linux 软件包 PostgreSQL 安装。执行此操作时,您必须使用相同的极狐GitLab 版本。

要通过使用备份将外部 PostgreSQL 安装转换为 Linux 软件包 PostgreSQL 安装:

  1. 从非 Linux 软件包安装创建备份
  2. 在 Linux 软件包安装中恢复备份
  3. 运行 check 任务:

    sudo gitlab-rake gitlab:check
    
  4. 如果您收到类似 No such file or directory @ realpath_rec - /home/git 的错误,请运行:

    find . -lname /home/git/gitlab-shell/hooks -exec sh -c 'ln -snf /opt/gitlab/embedded/service/gitlab-shell/hooks $0' {} \;
    

这假设 gitlab-shell 位于 /home/git

原地将外部 PostgreSQL 转换为 Linux 软件包安装

您可以原地将外部 PostgreSQL 安装转换为 Linux 软件包 PostgreSQL 安装。

这些说明假定:

  • 您在 Ubuntu 上使用 PostgreSQL。
  • 您有一个与当前极狐GitLab 版本匹配的 Linux 软件包。
  • 您的极狐GitLab 自编译安装使用所有默认路径和用户。
  • Git 用户的现有主目录 (/home/git) 将更改为 /var/opt/gitlab

要原地将外部 PostgreSQL 安装转换为 Linux 软件包 PostgreSQL 安装:

  1. 停止并禁用极狐GitLab、Redis 和 NGINX:

    # Ubuntu
    sudo service gitlab stop
    sudo update-rc.d gitlab disable
    
    sudo service nginx stop
    sudo update-rc.d nginx disable
    
    sudo service redis-server stop
    sudo update-rc.d redis-server disable
    
  2. 如果您使用配置管理系统在服务器上管理极狐GitLab,请在那里禁用极狐GitLab 及其相关服务。
  3. 为新设置创建一个 gitlab.rb 文件:

    sudo mkdir /etc/gitlab
    sudo tee -a /etc/gitlab/gitlab.rb <<'EOF'
    # 在这里使用您自己的极狐GitLab URL
    external_url 'http://gitlab.example.com'
    
    # 我们假设您的存储库位于 /home/git/repositories(源安装的默认位置),并且 Gitaly 在 /home/git/gitlab/tmp/sockets/private/gitaly.socket 上监听一个 socket
    gitaly['configuration'] = {
      storage: [
        {
          name: 'default',
          path: '/home/git/repositories'
        }
      ]
    }
    gitlab_rails['repositories_storages'] = {
      default: {
        gitaly_address: '/home/git/gitlab/tmp/sockets/private/gitaly.socket'
      }
    }
    
    # 重用系统上已经运行的 PostgreSQL
    postgresql['enable'] = false
    # 此 db_host 设置适用于 Debian PostgreSQL 软件包
    gitlab_rails['db_host'] = '/var/run/postgresql/'
    gitlab_rails['db_port'] = 5432
    # 我们假设您将极狐GitLab 数据库用户称为 'git'
    gitlab_rails['db_username'] = 'git'
    EOF
    
  4. 现在安装 Linux 软件包并重新配置安装:

    sudo gitlab-ctl reconfigure
    
  5. 由于 gitlab-ctl reconfigure 运行更改了 Git 用户的主目录,并且 OpenSSH 无法再找到其 authorized_keys 文件,请重建密钥文件:

    sudo gitlab-rake gitlab:shell:setup
    

    您现在应该可以通过 HTTP 和 SSH 访问极狐GitLab 服务器,并具有之前存储库和用户。

  6. 如果您可以登录极狐GitLab Web 界面,请重新启动您的服务器,以确保没有旧服务干扰 Linux 软件包安装。
  7. 如果您使用特殊功能(如 LDAP),您必须将设置放入 gitlab.rb。有关更多信息,请参阅设置文档