2007-04-02
■ [Ruby][Rails][Debian] mongrel_cluster

前回はWindowsでMongrelをサービスとして登録する方法を解説したけど、LinuxでもWindows同様、Mongrelをサービスとして登録できたら便利だよね。というわけで、今日はLinuxでMongrelをサービスとして登録する「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
demuyan2008/08/25 16:36mongrel_railsのオプションですが、-r /home/rails/bbs は -r /home/rails/bbs/publicではないでしょうか?
- 結局lighttpdからmungrel_clusterに移行
- http://d.hatena.ne.jp/jun_may/20070902
- unnecessary words - redmineをMongrelで動かす
- yzn’s memo - mongrel のインストール
- mongrel_cluster + Redmine (ハマリ道)
- u-ichiのにっき - mongrel_cluster
- hiraku_saitoの日記 - mongrel_clusterの起動
- ニートはPGになれるのかな - tracとrails(mongrel_clus...
- 森薫の日記 - Mongrelの運用で参考にしたサイト
- みねちんにっき - (略)Redmineを設置してみる...
- みねちんにっき - (略)Redmineを設置してみる...