mod_railsで有名なオランダのPhusion社から Ruby Enterprise Edition がリリースされたので、早速Passenger(mod_rails)と組み合わせて試してみました。
Ruby Enterprise Edition は、Rails に最適化されたRubyのようです(An enhanced garbage collector. An improved memory allocator. )。
インストールはいたって簡単で、指定したディレクトリに(gemも)すべて展開されるため、既存のRubyとの併用も可能です。またアンインストールしたければそのディレクトリを削除すればいいだけです。
Ruby Enterprise Edition のインストール
Ruby Enterprise EdtionはPassengerとの組み合わせでメモリ使用量を33%減にできるようですので、ちょっと期待して使ってみました。
1 2 3 4 5 6 7 8 9 10 | # wget http://rubyforge.org/frs/download.php/38084/ruby-enterprise-1.8.6-20080507.tar.gz # tar zxvf ruby-enterprise-1.8.6-20080507.tar.gz # ./installer ...... Where would you like to install Ruby Enterprise Edition to? (All Ruby Enterprise Edition files will be put inside that directory.) [/usr/local/ruby-enterprise/] :インストールするディレクトリを指定 |
installerを起動すると、どこに設置するのか(line.10)聞かれてインストールが始まります。途中でRailsもインストールされます(すこし時間がかかりました)。
Passenger(mod_rails) 2.0 RC1 のインストール
ここを参考に。
gemでインストール
2.0RC1はpassenger-1.9.0となっているようです。まずはここからダウンロードしておきます。下記のようにさきほどインストールしたRuby Enterprise Editionを利用してgemでインストール。
1 2 | # cd /usr/local/ruby-enterprise/ # ./bin/ruby ./bin/gem install passenger-1.9.0.gem |
これでRuby Enterprise Editionディレクトリ内にpassengerが配置されます。
Apacheの設定
次にRuby Enterprise Editionディレクトリ内のbin配下にpassenger-install-apache2-moduleというスクリプトを叩きます。
1 2 | # cd /usr/local/ruby-enterprise/ # ./bin/passenger-install-apache2-module |
ずらずらとメッセージが出てきて、httpd.confへの編集を促されるので、下記をhttpd.confなどに追記します。Ruby Enterprise Editionをインストールしたディレクトリによってパスは変わるので注意してください。また、デフォルトでproductionとして起動しますが、もしdevelopmentで起動したいなら『 RailsEnv development』を追記してください(Configuring Passengerを参照)。
LoadModule passenger_module /usr/local/ruby-enterprise/lib/ruby/gems/1.8/gems/passenger-1.9.0/ext/apache2/mod_passenger.so PassengerRoot /usr/local/ruby-enterprise/lib/ruby/gems/1.8/gems/passenger-1.9.0 PassengerRuby /usr/local/ruby-enterprise/bin/ruby
ヴァーチャルホストの設定は下記の通りです。DocumentRootはRailsアプリのpublicディレクトリを指定します。
<VirtualHost *:80>
ServerName www.yourhost.com
DocumentRoot /somewhere/public
</VirtualHost>起動
これで設定は完了なはずです。Apacheを再起動して設定ファイルを反映して、アクセスしてみます。productionだとエラーがわかりづらいので、最初はdevelopmentで起動した方がいいのかもしれません。
ぼくの環境の場合、普段使っているgemに入っているものが、Ruby Enterprise Editionのgemに入っていなかったため、エラーが起きてしまいました。その場合は、こっちのgemで再インストールを行います。
1 2 | # cd /usr/local/ruby-enterpriise # ./bin/ruby ./bin/gem install <パッケージ> |
メモリ使用量の比較
scaffoldしてから、ちょっと手を加えた程度の小さいアプリを動かしてみたところ、140Mくらい利用しているみたいです。増井さんの記事 (素Ruby + Passenger 1.x系)とあまり変わらない。。。うーむ、設定を間違えたのでしょうか。。アプリも環境も異なるので、後ほどmongrelなどと比較してみたいと思います。

