将私有化部署的自行编译安装转换为 Linux 软件包安装

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

在转换自行编译安装时:

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

要将您的自行编译安装转换为 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>
    

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

  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_base 的值到 /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": "...",
         }
         ...
       }
      
  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(源安装的默认值)
    git_data_dirs({ 'default' => { 'path' => '/home/git' } })
    
    # 重用已经在您系统上运行的 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 中。有关更多信息,请参见设置文档