GitLab 5.0 を 5.1 にアップデート
Gitlab 5.1 Released
GitLab 5.1 がリリースされたのでアップデートしてみました。アプリケーションサーバが Unicorn から Puma に変更になったということで、アップデートめんどくさそうだなとか思ってたんですがそうでもなかったです。あとログインにメールアドレスではなく、ユーザ名も使えるようになったようです。これは便利。
自分の環境は公式にあるのと違い、 nginx ではなく Apache を使っていたりするので、その違いをメモしつつの備忘録です。この記事は 2013/04/23 現在のものです。時間が経ってからの閲覧にはご注意ください。
新規インストールについては、前回の記事を御覧ください。(5.1版も追記しました)
環境
詳細は前回記事を見てもらうとして、ざっくりと今回関係ありそうなところは
・debian squeeze(6.0.4)64bit
・ウェブサーバは Apache でリバースプロキシ設定
・gitlab 本体は 5-1-stable ブランチ
サービスストップ
git ユーザになって sudo で作業。まずは gitlab サービスを停めます。
sudo su - git sudo /etc/init.d/gitlab stop
gitlab-shell のアップデート
gitlab-shell も v1.3.0 になってたので先にアップデートしておきます。
cd /home/git/gitlab-shell git pull
gitlab のアップデート
gitlab 本体のアップデートです。
cd /home/git/gitlab git fetch git checkout 5-1-stable
Unicorn から Puma へ変更
Ruby のアプリケーションサーバが Unicorn から Puma というものに変更になったようです。なので Puma 用の config を新たに作成します。
cp config/puma.rb.example config/puma.rb vim config/puma.rb
今回は前回の Unicorn 同様、 socket を使ったものではなく Listen を使いたいので以下のようにコメントアウトします。 Listen ポートに関しては記述しないとデフォルトの 9292 で起動するようです。
- bind “unix://#{application_path}/tmp/sockets/gitlab.socket” + #bind “unix://#{application_path}/tmp/sockets/gitlab.socket”
ポートが変わったので apache 側の設定も変更します。
sudo vim /etc/apache2/sites-available/gitlab.example.com
変更はこの2箇所。
- ProxyPass / http://127.0.0.1:3000/ + ProxyPass / http://127.0.0.1:9292/ - ProxyPassReverse / http://127.0.0.1:3000/ + ProxyPassReverse / http://127.0.0.1:9292/
設定を再読み込み。
sudo /etc/init.d/apache2 reload
gitlab の再セットアップ
ライブラリの追加や更新、 DB のマイグレーションを行うために下記を実行します。ちなみに1行目は DB に MySQL を使っている場合です。 PostgreSQL の方は逆に mysql を指定してください。(withoutオプションなので)
bundle install --without development test postgres --deployment bundle exec rake db:migrate RAILS_ENV=production bundle exec rake migrate_merge_requests RAILS_ENV=production
3行目の merge request に関するマイグレート時、下記のようなメッセージが出ます。
Since 5.1 old merge request serialization logic was replaced with a better one. It makes old merge request diff invalid for GitLab 5.1+ * * * This will rebuild commits/diffs info for existing merge requests. You will lose merge request diff if its already merged. Do you want to continue (yes/no)?
アップデートに伴って merge request 部分に大きな変更があったようで、これまでに完了した merge request に関するコミットや差分が見られなくなる(消える?)けど、もちろんいいよね!ってことっぽいです。適当に実験した結果、オープン状態の merge request に関しては消えることはなかったので、 closed になっているものでもう一度確認しなくちゃならないものがあるなら、先にそれを解消してからの方がよさそうです。でも closed なものだし、いっそ諦めるのも手です(男らしく)。というわけで、自分はまだ全然使っていないので、得意げに yes です。
起動スクリプトの更新
起動スクリプトも新しいものに入れ替えます。
sudo rm /etc/init.d/gitlab sudo curl --output /etc/init.d/gitlab https://raw.github.com/gitlabhq/gitlab-recipes/5-1-stable/init.d/gitlab sudo chmod +x /etc/init.d/gitlab
チェック
最後にアプリケーションのチェックコマンドを打っておきます。
bundle exec rake gitlab:check RAILS_ENV=production
ここで前回同様 Sidekiq が起動してないエラーが出ていたので、下記コマンドを実行しておきます。
bundle exec rake sidekiq:start RAILS_ENV=production
そして起動。
sudo /etc/init.d/gitlab start
おわりに
リリースの少し前から、「もうすぐアップデートがあるらしい」「UnicornからPumaに変更されてる」などの情報は耳にしていたので、アップデートが複雑だったら最初から入れ直しになるかなとか思っていたのですが、実際はこの程度の作業というかほとんどいじらずにすんで良かったです。まだそれほど運用はしていないので、今後問題が起こるかもしれませんその時はその時で。
[…] 5.1 版も併記。 5.0 からアップデートする場合はこちらの記事へどうぞ。 […]