正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

セルフコンパイルインストールをLinuxパッケージに変換する

  • プラン: Free、Premium、Ultimate
  • 提供形態: GitLab Self-Managed

セルフコンパイルインストール方式でGitLabをインストールした場合、インスタンスをLinuxパッケージのインスタンスに変換できます。

セルフコンパイルインストールを変換する場合:

  • GitLabのまったく同じバージョンに変換する必要があります。
  • /etc/gitlab/gitlab.rbで設定を構成する必要があります。これは、gitlab.ymlpuma.rbsmtp_settings.rbなどのファイルの設定が失われるためです。

セルフコンパイルインストールからの変換は、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. 新しいインストールでバックアップを復元する(詳細な手順):

    # This command will overwrite the contents of your GitLab database!
    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に関連するシークレットを復元します。db_key_basesecret_key_baseotp_key_baseencrypted_settings_key_baseopenid_connect_signing_key、およびactive_record_encryptionの値を、/home/git/gitlab/config/secrets.yml(セルフコンパイルインストール)から/etc/gitlab/gitlab-secrets.json(Linuxパッケージ)の同等のキーにコピーします。

    2. /home/git/gitlab-shell/.gitlab_shell_secret(セルフコンパイルインストール)の内容をsecret_token/etc/gitlab/gitlab-secrets.json(Linuxパッケージ)にコピーします。次のような内容になります:

      {
        "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'
    # Use your own GitLab URL here
    external_url 'http://gitlab.example.com'
    
    # We assume your repositories are in /home/git/repositories (default for source installs) and that Gitaly
    # listens on a socket at /home/git/gitlab/tmp/sockets/private/gitaly.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'
      }
    }
    
    # Re-use the PostgreSQL that is already running on your system
    postgresql['enable'] = false
    # This db_host setting is for Debian PostgreSQL packages
    gitlab_rails['db_host'] = '/var/run/postgresql/'
    gitlab_rails['db_port'] = 5432
    # We assume you called the GitLab DB user '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

    これで、以前と同じリポジトリとユーザーを使用して、GitLabサーバーへのHTTPおよびSSHアクセスが可能になります。

  6. GitLabWebインターフェースにログインできる場合は、サーバーを再起動して、古いサービスがLinuxパッケージのインストールを妨げないようにしてください。

  7. LDAPなどの特別な機能を使用している場合は、gitlab.rbに設定を入力する必要があります。詳細については、設定に関するドキュメントを参照してください。