Passenger(mod_rails)をインストールしてみた
Ruby on Railsの実行環境として注目をあびている Passenger をインストールしてみました。
少しだけトラブルもありましたが、インストールや設定は mongrelやFastCGIに比べればはるかに簡単です。
また、Apacheのモジュールになっているので運用も楽ですし、Apacheのバーチャルホスト機能を使えば、複数のRailsアプリを簡単に1つのサーバーで運用できるのが大きな魅力です。
インストール
http://www.modrails.com/install.html ここに書かれているように、gem で Passenger をインストールし、専用インストールコマンドで Apacheモジュールの作成・インストールを行えば良いのですが・・・
私の Mac には Apacheが プレインストールされた /usr/sbin/ と Portでインストールした /opt/local/apache2 の2つが入っていて /opt/local/apache2 の方を使っているので、書かれているようにインストールすると /usr/sbin/ の方に入ってしまいます。
そこで、User guide を読んでみると有りました!
環境変数 APXS2 で apxs を指定すれば良いようです。
% sudo su # gem install passenger # export APXS2=/opt/local/apache2/bin/apxs # passenger-install-apache2-module
インストール終了後、画面に表示される設定情報を httpd.conf, httpd-vhosts.conf に追加します。
httpd.conf
LoadModule passenger_module /opt/local/lib/ruby/gems/1.8/gems/passenger-2.0.1/ext/apache2/mod_passenger.so PassengerRoot /opt/local/lib/ruby/gems/1.8/gems/passenger-2.0.1 PassengerRuby /opt/local/bin/ruby
httpd-vhosts.conf
<VirtualHost *:80> ServerName dm DocumentRoot /Users/yy/RailsWorks/dm/public RailsEnv development # production環境なら不要 </VirtualHost> <Directory "/Users/yy/RailsWorks/dm/public"> # AllowOverride All # 必要があればコメントアウト # Options FollowSymLinks # 必要があればコメントアウト Order allow,deny Allow from all </Directory>
これで動きました。
プロセス
Passengerで dm と todo 2つのRailsアプリが動いていると
1831 ?? S 0:00.01 /opt/local/apache2/bin/httpd -k start 1832 ?? S 0:11.64 Passenger spawn server 1967 ?? S 0:01.55 Passenger FrameworkSpawner: 2.1.0 1968 ?? S 0:00.41 Passenger ApplicationSpawner: /Users/yy/RailsWorks/dm 1970 ?? S 0:00.43 Rails: /Users/yy/RailsWorks/dm 2148 ?? S 0:00.35 Passenger ApplicationSpawner: /Users/yy/RailsWorks/todo 2150 ?? S 0:00.53 Rails: /Users/yy/RailsWorks/todo
のようになプロセスが動いています。
しかし、一定時間アクセスがないと。
1831 ?? S 0:00.01 /opt/local/apache2/bin/httpd -k start 1832 ?? R 0:11.46 Passenger spawn server
のように、アプリや FrameworkSpawner (Ruby on Railsフレームワーク?) のプロセスが無くなります。
1つのサーバーで、アクセスの少ない複数のアプリを運用するのにも安心ですね ^^)