- 非LinuxパッケージのPostgreSQLからバックアップを使用したLinuxパッケージのインストールへのアップグレード
- 非LinuxパッケージのPostgreSQLからLinuxパッケージのインプレースインストールへのアップグレード
非LinuxパッケージインストールからLinuxパッケージインストールへのアップグレード
Linux以外のパッケージインストールからのアップグレードはGitLabではテストされていません。
gitlab.yml
、puma.rb
、smtp_settings.rb
などのファイルの設定は失われますのでご注意ください。の設定は、/etc/gitlab/gitlab.rb
で行ってください。
マイグレーションを始める前に、全く同じバージョンのGitLab に移行していることを確認してください。Linux パッケージを使用するようにインストールを変換するには、以下の手順に従います:
-
現在のインストールからバックアップを作成します:
cd /home/git/gitlab sudo -u git -H bundle exec rake gitlab:backup:create RAILS_ENV=production
- Linux パッケージを使って GitLab をインストールします。
- バックアップファイルを新しいサーバーのディレクトリ
/var/opt/gitlab/backups/
にコピーします。 -
新しいインストールでバックアップを復元します(詳細な手順):
# This command will overwrite the contents of your GitLab database! sudo gitlab-backup restore BACKUP=<FILE_NAME>
データベースやGitデータのサイズにもよりますが、リストアには数分かかります。
- Linux パッケージのインストールでは、すべての設定が
/etc/gitlab/gitlab.rb
に保存されているため、新しいインストールを設定します。個々の設定は、gitlab.yml
、puma.rb
、smtp_settings.rb
などのファイルから手動で移動する必要があります。利用可能なすべてのオプションについては、gitlab.rb
テンプレート を参照してください。 - 設定を完了するには、古いインストールから新しいインストールにシークレットをコピーします。GitLab は、データベースの暗号化やセッションの暗号化など、複数の目的でシークレットを使用します。Linux のパッケージ・インストールでは、すべてのシークレットは単一のファイル
/etc/gitlab/gitlab-secrets.json
に置かれますが、ソース・インストールでは、シークレットは複数のファイルに置かれます:- まず、Rails に関連するシークレットを復元する必要があります。
/home/git/gitlab/config/secrets.yml
(セルフコンパイルインストール) のdb_key_base
、secret_key_base
、otp_key_base
の値を、/etc/gitlab/gitlab-secrets.json
(Linux パッケージインストール) の同等の値にコピーします。 -
次に、
/home/git/gitlab-shell/.gitlab_shell_secret
(GitLab ソース) の内部を、/etc/gitlab/gitlab-secrets.json
(Linux パッケージインストール) の GitLab Shell のsecret_token
にコピーします。以下のようになります:{ "gitlab_workhorse": { "secret_token": "..." }, "gitlab_shell": { "secret_token": "..." }, "gitlab_rails": { "secret_key_base": "...", "db_key_base": "...", "otp_key_base": "...", } ... }
- まず、Rails に関連するシークレットを復元する必要があります。
-
変更を適用するためにGitLabを再設定します:
sudo gitlab-ctl reconfigure
-
/home/git/gitlab-shell/.gitlab_shell_secret
をマイグレーションした場合は、Gitalyを再起動する必要があります:sudo gitlab-ctl restart gitaly
非LinuxパッケージのPostgreSQLからバックアップを使用したLinuxパッケージのインストールへのアップグレード
非Linuxパッケージのインストールからバックアップを作成し、Linuxパッケージのインストールでこれを復元することでアップグレードします。その際、GitLabのバージョンが全く同じであることを確認してください(例えば、6.7.3)。バックアップを作成する前に、非Linuxパッケージのインストールをアップグレードする必要があるかもしれません。
アップグレードしたら、チェックタスクを実行してください:
sudo gitlab-rake gitlab:check
No such file or directory @ realpath_rec - /home/git
のようなエラーが表示されたら、このワンライナーを実行して 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
にあると仮定しています。
非LinuxパッケージのPostgreSQLからLinuxパッケージのインプレースインストールへのアップグレード
自分でコンパイルしたインストールを Linux パッケージにインプレースしてアップグレードすることもできます。以下では、Ubuntu で PostgreSQL を使っていて、現在の GitLab のバージョンにマッチする Linux パッケージがあるものとします。また、GitLabのソースインストールはデフォルトのパスとユーザーをすべて使っているものとします。
まず、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
設定管理システムを使ってサーバー上のGitLabを管理している場合は、GitLabとその関連サービスも忘れずに無効にしてください。また、以下の手順では、既存の Git ユーザー (/home/git
) のホームディレクトリが/var/opt/gitlab
に変更されることに注意しましょう。
次に、新しいセットアップ用に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)
git_data_dirs({ 'default' => { 'path' => '/home/git' } })
# 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
Linux パッケージをインストールし、インストールを再設定します:
sudo gitlab-ctl reconfigure
まだ終わっていません!gitlab-ctl reconfigure
の実行によって Git ユーザーのホーム・ディレクトリが変更されたため、OpenSSH は authorized_keys ファイルを見つけられなくなっています。次のコマンドでkeysファイルを再構築してください:
sudo gitlab-rake gitlab:shell:setup
これで、GitLab サーバーに HTTP と SSH でアクセスできるようになり、リポジトリとユーザーも以前と同じになりました。
GitLab のウェブインターフェイスにログインできたら、次はサーバーを再起動して古いサービスが Linux パッケージのインストールに干渉しないようにします。
LDAPのような特別な機能を使う場合は、設定をgitlab.rb
、設定のドキュメントを参照してください。