バリケンのRuby日記 RSSフィード

2007-04-02

[][][] mongrel_cluster  mongrel_cluster - バリケンのRuby日記 を含むブックマーク はてなブックマーク -  mongrel_cluster - バリケンのRuby日記  mongrel_cluster - バリケンのRuby日記 のブックマークコメント

前回WindowsMongrelサービスとして登録する方法を解説したけど、LinuxでもWindows同様、Mongrelサービスとして登録できたら便利だよね。というわけで、今日LinuxMongrelサービスとして登録する「mongrel_cluster」を使ってみるよ。

「mongrel_cluster」は名前のとおり、本当は複数のMongrelを起動して負荷分散とセットで利用することを想定しているみたいだけど、サービスとして登録する機能が便利だから、ひとつしかMongrelを起動しないようなケースでも利用するといいと思うよ。

mongrel_clusterのインストール

コマンド一発、「gem install mongrel_cluster」でインストールできるよ。

Railsアプリ自動起動するユーザーを作成

Railsアプリサービスとして登録するなら、Railsアプリを起動するユーザーを専用で用意したほうが便利だよ。ここでは、www-dataグループrailsユーザーを作成したよ。

# adduser --ingroup www-data rails

www-dataユーザーからのファイル書き込みを許可するため、このユーザーのホームディレクトリに、グループ書き込み属性も追加しておくよ。

# chmod 775 /home/rails/

Railsアプリコピー

サービスとして登録したいRailsアプリを、/home/railsコピーするよ。ここでは例として、掲示板アプリ(bbs)をコピーしているよ。

# cp -R /home/your_home/rails/bbs/ /home/rails/
# chown -R rails:www-data /home/rails/bbs/

ちなみにSubversionを使ってRailsアプリのソースを管理しているなら、ファイルコピーの代わりにSubversionのリポジトリからチェックアウトすればいいと思うよ。

pidを書き込むディレクトリの作成

pidを書き込むディレクトリをあらかじめ作成して、www-dataグループの書き込み許可を与えておくよ。

# mkdir /var/run/mongrel
# chown www-data:www-data /var/run/mongrel/
# chmod 775 /var/run/mongrel/

mongrel_cluster.ymlのシンボリックリンクの作成

mongrel_cluster.ymlのシンボリックリンクを作成するよ(まだこの時点ではmongrel_cluster.ymlは存在しないけど、先に作っておくよ)。

# mkdir /etc/mongrel_cluster
# mkdir /etc/mongrel_cluster/bbs
# ln -s /home/rails/bbs/config/mongrel_cluster.yml /etc/mongrel_cluster/bbs

mongrel_clusterの設定

いったんrailsユーザーログインしたあと、bbsディレクトリに移動して次のコマンドを実行するよ。

$ cd bbs
$ mongrel_rails cluster::configure \
 -e production -p 4000 -a 0.0.0.0 -l /home/rails/bbs/log/mongrel.log \
 -P /var/run/mongrel/bbs.pid -c /home/rails/bbs \
 -r /home/rails/bbs -N 1 --user rails --group www-data

そうすると、config/mongrel_cluster.ymlが作成されるよ。

mongrel_clusterの起動と停止の確認

次のコマンドで、mongrel_clusterを起動してみてね。

$ mongrel_rails cluster::start

ブラウザhttp://linuxホストIPアドレス:4000/にアクセスして、きちんと動作していることを確認してね。停止は次のコマンドだよ。

$ mongrel_rails cluster::stop

サービスとして登録

じゃあ、いよいよサービスとして登録してみるよ。自動起動用のスクリプトを/etc/init.d/にコピーして、mongrel_cluster.ymlの場所を指定するように編集するよ。

# cp /opt/rubygems/gems/mongrel_cluster-0.2.1/resources/mongrel_cluster /etc/init.d/mongrel_cluster_bbs
# vi /etc/init.d/mongrel_cluster_bbs

CONF_DIRを「/etc/mongrel_cluster/bbs」にするよ。また、こちらを参考にして/opt以下にRuby on Railsインストールしている人は、RUBYLIB、GEM_HOME、PATHの指定も忘れずにね。

CONF_DIR=/etc/mongrel_cluster/bbs
RETVAL=0

export RUBYLIB=/opt/local/lib/site_ruby/1.8/
export GEM_HOME=/opt/rubygems/
export PATH=/opt/bin:/opt/rubygems/bin:$PATH

編集が終わったら、この起動スクリプトに実行許可属性を与えるよ。

# chmod 755 /etc/init.d/mongrel_cluster_bbs

じゃあ、起動してみよう!

# /etc/init.d/mongrel_cluster_bbs start

停止はstopだよ。

# /etc/init.d/mongrel_cluster_bbs stop

自動起動の設定

次のコマンドを実行すれば、Linuxの起動時に自動的に起動させることができるよ。

# update-rc.d mongrel_cluster_bbs defaults

demuyandemuyan2008/08/25 16:36mongrel_railsのオプションですが、-r /home/rails/bbs は -r /home/rails/bbs/publicではないでしょうか?