自宅のgitoriousサーバをrvm + passenger(apache2) + daemontoolsからrbenv + bundler + passenger(standalone) + supervisordに移行した


当ブログで利用しているサーバ(さくらのVPS 4G)が色々同居させており、gitoriousのバッチがたまに負荷をかけ重くなってしまっていたので余っていたさくらのVPS 1Gに移しました。

どうせ移すんだったらと思い、今までrvm, passenger(apache2), daemontoolsだった構成をrbenv, passenger(standalone), supervisordに移行しました。

広告

gitoriousの主な構成は下記の通り

  • OS: Ubuntu 12.04LTS
  • Ruby: 1.8.7-p370
  • 実行ユーザ: git
  • リポジトリパス: /home/git/repos
  • Gitoriousルート: /var/www/gitorious

以前はapache2 + passengerで動作させていたのでwebの実行ユーザはwww-dataのままで、git-daemonなどの実行ユーザはgitという感じでしたが、今回はgitユーザに全て統一させました。

rbenv + ruby-buildへの移行

まず、rvmからrbenv, ruby-buildへ移行します。手順は下記のページで書かれている通りに実行すれば大丈夫です。

うぶ毛プリン: rvmからrbenvに移行した

実際に入れたRubyのバージョンは1.8.7-p370なので、コレを入れておきます。

rbenv install 1.8.7-p370

gemでモジュールをインストールした際にrehashする手間を省くため、rbenv-rehashを下記の通りにインストールします。

rbenv で gem を使った時に rbenv rehash しなくて良くする – sorry, unimplemented:

これで、gemを入れた段階で自動的にrehash作業も行なってくれます。

Gitoriousのインストール

cd /var/www
git clone git://gitorious.org/gitorious/mainline.git gitorious

gitoriousの細かな設定については下記のgistを参考にしました。

Gitorious installation on Ubuntu 12.04 — Gist

実際には移行だったのでまるまるインストールってわけではなく、/var/www/gitoriousディレクトリとmysqlのdumpを移行させた程度です。

Bundlerでモジュール管理

gem install bundler
cd /var/www/gitorious
bundle install --deployment

Passenger StandaloneでGitoriousを起動してみる

cd /var/www/gitrious
RAILS_ENV=production passenger start

Supervisord経由で起動する

最近はdaemontoolsではなくsupervisordで運用することが増えました。今回もsupervisordを使ってみます。設定は下記のようにしています。

なんか、調べているうちにGodというRuby製のプロセス監視ツール?があるらしいのでどっかで使ってみたいところ。

起動スクリプトはこんな感じ

pushしたらgitoriousコマンドが無いと言われる

.ssh/environmetに下記のように設定をする。

かなり端折ってて分かりにくいですが、rbenvに慣れていなくてsupervisordなどから実行させるのにはまりました。gitoriousはpassengerのstandalone版で動作させnginxをリバースプロキシとして置いて運用させています。とりあえず、今はこんな感じです。

関連記事