主に IT 技術を整理するためにメモ的に書き溜めています。少しだけフリーソフトもあるよ。コメントを残すには、 facebook を使ってください。

mongrel_cluster で ruby on rails を動作させるには

最終更新日 2012-08-05 01:09:27 (1年以上前の記事です)

まじめに Rails アプリを Mongrel cluster でセットアップした時のメモ。環境は、 ruby-1.8.7-p334@rails_2_3_14 です。

注意: Mongrel-1.1.5 は Rails3 ではエラーで動きません。
1.2.0pre2 を使うか、 Rails のバージョンをデグレするか、もしくは、手動で Mongrel を少しいじるか。
もしくは Thin か Phusion Passenger を使ってもいいかと思います。
ちなみにエラーは以下のようなもの。

[Enjoi-MacBook:~/Websites/EnjoiTech/www.enjoitech.com] $ mongrel_rails start
** Starting Mongrel listening at 0.0.0.0:3000
** Starting Rails with development environment...
/usr/local/rvm/gems/ruby-1.8.7-p334@rails_3_0_9/gems/activesupport-3.0.9/lib/active_support/dependencies.rb:239:in `require': no such file to load -- dispatcher (LoadError)

Passenger を使えばこんな小面倒くさいことはしなくてもいいんですけどね。 cluster とか響きがいいじゃないですか。

Gemfile の設定

Gemfile に必要なものを追加して bundle でインストールします。

$ vi Gemfile
...
gem 'mongrel'
gem 'mongrel_cluster'
...
$ bundle install

mongrel cluster のセットアップ

インストールがうまくいったら、 mongrel cluster のセットアップをします。
mongrel_rails コマンドで設定ファイルが作成できます。 svn や git には含めずに、その環境毎に実行すると良いかなと思います。

例えば、ポート 3000 番から 3 つクラスター起動し、 127.0.0.1 のみにバインド、アプリケーションディレクトリは /var/www/www.enjoitech.com だとすると、

$ mongrel_rails cluster::configure -e production -p 3000 -N 3 \
-c /var/www/www.enjoitech.com -a 127.0.0.1

Writing configuration file to config/mongrel_cluster.yml

開始、停止、再起動、ステータスなど

開始

$ mongrel_rails cluster::start

停止、再起動

$ mongrel_rails cluster::restart
$ mongrel_rails cluster::stop

ステータスの確認

$ mongrel_cluster_ctl status
$ mongrel_rails cluster::status

Apache の設定

これで Mongrel は動作し、 3000 番にアクセスすればアプリケーションが確認できると思いますが、これを apache と連携させて 80 番でアクセスするようにします。
基本的には、 mod_proxy_balancer を使ってアプリケーションサーバと接続するを見てもらえば分かると思います。

それ以外には rails の public ディレクトリにある静的なファイルに関しては、特に rails を経由する必要もないので、除外するのがいいかと思います。
なので、最終的な設定ファイルは

<VirtualHost *:80>
    ServerName www.enjoitech.com
    DocumentRoot /var/www/www.enjoitech.com/rails/public
    <Proxy balancer://mycluster>
        BalancerMember http://127.0.0.1:3000
        BalancerMember http://127.0.0.1:3001
        BalancerMember http://127.0.0.1:3002
        Order allow,deny
        Allow from all
    </Proxy>
    ProxyPass /images !
    ProxyPass /javascripts !
    ProxyPass /stylesheets !
    ProxyPass / balancer://mycluster/
    ProxyPassReverse / balancer://mycluster/
    ErrorLog "/usr/local/logs/www.enjoitech.com-error_log"
    CustomLog "/usr/local/logs/www.enjoitech.com-access_log" common
</VirtualHost>

起動ファイル(init ファイル)の設定

最後にアプリケーションをサーバーの起動時にきちんと開始させるように、設定ファイルを作成します。
この作業は root 権限か sudo が必要です。

設定ファイルの配置

まず mongrel_cluster の設定ファイルへのシンボリックリンクを /etc/mongrel_cluster 配下に作成します。

$ sudo mkdir /etc/mongrel_cluster
$ sudo ln -s /var/www/www.enjoitech.com/config/mongrel_cluster.yml /etc/mongrel_cluster/www.enjoitech.com.yml

init ファイルのコピー

次に mongrel_cluster の init ファイルを /etc/init.d/ にコピーして、適切な run level でサーバー起動時に開始するよう設定します。

$ sudo cp /usr/local/rvm/gems/ruby-1.8.7-p334\@rails_2_3_14/gems/mongrel_cluster-1.0.5/resources/mongrel_cluster /etc/init.d/
$ sudo chmod +x /etc/init.d/mongrel_cluster
$ sudo /sbin/chkconfig --level 345 mongrel_cluster on
最終更新日 2012-08-05 01:09:27

コメント このエントリーをはてなブックマークに追加

フリーソフトウエア
EnjoiFLV
EnjoiPacket
EnjoiCrypto
ランキング
rank1, rank2, rank3, rank7, rank9, rank10, rank11
todo メモ
facebook 対応
ページ処理
RSS feed
検索機能
認証いる?
更新日表示
実はカテゴリ機能
多言語
実はユーザ機能
ソースその内公開
動作環境メモ
php-5.1.6 with PDO
SQLite-3.3
IE6
FireFox-1.5
RSS
非認証

検索
Google