研究室で公開しているGitLabのアップデート時に苦労したので、備忘録として手順とトラブルシューティングの手順を書いておきます。
今回はCentOS 7に対してGitLab 7.9.2をrpm -ivh gitlab-7.9.2_omnibus-1.el7.x86_64.rpm
で手動でインストールした状態から、7.10から追加されたGitLabのリポジトリを追加してGitlab-CE 7.12.0へアップデートした場合の話になります。
#手順の流れ#
sudoersに追加された一般ユーザで全ての作業を行います。
- GitLabのバックアップ
- GitLabの停止
- リポジトリの追加
- GitLabのアップデート
- シンボリックリンクの作成
- 設定ファイルの再生成
- 動作確認
- 発生したエラーの修正作業
- 再起動&動作確認
##1. GitLabのバックアップ##
GitLabのバックアップデータは、以下のコマンドを叩くと/var/opt/gitlab/backups
に圧縮されて吐き出されます。
吐き出されたデータとインストール時のRPMパッケージをバックアップすれば基本的に大丈夫だと思いますが、念のため/etc/gitlab/gitlab.rb
もバックアップしました。
$ sudo gitlab-rake gitlab:backup:create
##2. GitLabの停止##
アップデート時に自分で終了しますが、一応手動で終了しておきます。
$ sudo gitlab-ctl stop
##3. リポジトリの追加##
リポジトリの追加から必要なパッケージのインストールまでの一連の処理を行うシェルスクリプトを開発側が配布しているので、それを実行します。deb系とrpm系で使用するスクリプトが違うので注意が必要です。
サーバの環境上、パッケージのバージョン等に規定がある場合は、entire scriptが参考になると思います。
Upgrade to the package repository | GitLab
基本的に設定ファイルの再生成まではこのリンクのページ内の情報だけでなんとかなります。
##4. GitLabのアップデート##
注意点としてパッケージ名がgitlab
ではなくgitlab-ce
でした。また、自分の環境ではgitlab-7.9.2_omnibus-1.el7.x86_64.rpm
を置き換える旨が表示されました。
$ sudo yum update gitlab-ce
##5. シンボリックリンクの作成##
GitLabを管理するツール群のシンボリックリンクを/usr/bin
内に作成します。
$ sudo ln -sf \
/opt/gitlab/bin/gitlab-ctl \
/opt/gitlab/bin/gitlab-rake \
/opt/gitlab/bin/gitlab-rails \
/opt/gitlab/bin/gitlab-ci-rake \
/opt/gitlab/bin/gitlab-ci-rails \
/usr/bin/
##6. 設定ファイルの再生成##
自分の環境ではこの段階でGitLabを起動してブラウザからアクセスしてみたところ、500番のエラーが発生しました。その為、/etc/gitlab/gitlab.rb
から最新のバージョン向けの設定を生成することを狙ってreconfigure
を実行しました。
$ sudo gitlab-ctl reconfigure
##7. 動作確認##
reconfigure
を実行しても正常に動作しなかった為、以下のログを参照にしました。
/var/log/gitlab/nginx/gitlab_error.log
/var/log/gitlab/unicorn/unicorn_stderr.log
- 必要に応じて
/var/log/gitlab/
ディレクトリ内のその他のログ
##8. 発生したエラーの修正作業##
gitlab-ctl reconfigure
の実行時や実際にGitLabを利用した時にエラー等で利用ができない場合、GitLabにはHomebrewのbrew doctor
のようなコマンドが存在するので、それを実行して問題点を洗い出していきます。
以下のコマンドを実行します。
$ sudo gitlab-rake gitlab:check
チェック後、修復すべき部分については、以下のような形式でコマンドを実行するよう指示されます。
$ sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production
が、GitLabをソースコードからではなく.deb
や.rpm
等のパッケージからインストールした場合は、上の形式ではなく以下のような形式で実行するようになっています。
$ sudo gitlab-rake gitlab:check RAILS_ENV=production
実際にgitlab-rake gitlab:check
にて指示をされたコマンドを例に取ると、以下の様に置き換わります。
$ sudo -u git -H bundle exec rake db:migrate RAILS_ENV=production \\指定されるコマンド
$ sudo gitlab-rake db:migrate RAILS_ENV=production \\実際に実行すべきコマンド
自分の場合、gitlab-rake gitlab:check
を実行してエラーが無くなるまで指示されたコマンドを置き換えて実行を繰り返し、エラーを全て解決しました。
##9. 再起動&動作確認##
エラーが全て解決できたら、GitLabを再起動後、動作確認をします。
$ sudo gitlab-ctl restart
正常に動作していればアップデート成功です。