Apache上でRailsアプリを動かすPassengerを使ってみたよ(その2)
前回の更新からだいぶ時間が経ってしまいましたね。
設定自体は済んでいたのですが、まとめるのが面倒くさいので先延ばしにしてしまいました。
さて、前回まででコンパイルも通りインストールは完了していました。
今回はApacheの設定ファイルへの設定を行います。
debian(lenny)の場合だとaptでインストールしたapacheの設定ファイルは以下のような感じになっています。
(squeezeでも同じです。)
$ ls /etc/apache2/ apache2.conf conf.d envvars httpd.conf mods-available mods-enabled ports.conf sites-available sites-enabled
debianの場合はmodを追加する場合はmods-available以下に各modごとの設定を記述したファイルを配置します。
そして、そのmodを有効にする場合はmods-enabled以下にmods-available以下に配置した設定ファイルへのシンボリックリンクを張ります。
passenger.loadの配置
以下のファイルを配置します。
- /etc/apache2/mods-available/passenger.load
内容:
LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-1.0.1/ext/apache2/mod_passenger.so
passenger.loadにはmodのロードに関する部分のみ記述します。
passenger.confの配置
以下のファイルを配置します。
- /etc/apache2/mods-available/passenger.conf
内容:
RailsSpawnServer /usr/lib/ruby/gems/1.8/gems/passenger-1.0.1/bin/passenger-spawn-server RailsRuby /usr/bin/ruby1.8
passenger.confにはその他設定部分を記述します。
モジュールの有効化
mods-enabled以下にシンボリックリンクを作成します。
# ln -s /etc/apache2/mods-available/passenger.load /etc/apache2/mods-enabled # ln -s /etc/apache2/mods-available/passenger.conf /etc/apache2/mods-enabled
httpd.confに追記
Readmine公式の手順*1では以下のような感じでVirtualHostに直に割り当ててます。
<VirtualHost *:80> ServerName redmine.example.jp DocumentRoot /var/lib/rails/redmine/public
しかし、これだと複数のRailsアプリで共存する場合に面倒になるので、RailsBaseURIを設定します。
以下のように追記します。
RailsBaseURI /redmine
Railsアプリを増やす場合には「RailsBaseURI hogehoge」という具合に行を追加しておけば良いです。
設定ファイルへの追記も完了したので、ファイルの配置を行います。
DocumentRoot以下にファイル一式を配置するよりはデプロイ場所へのシンボリックリンクを配置した方が使い勝手がいいです。
DocumentRoot以下にRAILS_ROOT/publicへのシンボリックリンクを配置する
以下はDocumentRootが/var/www、RAILS_ROOTが/home/hoge/rails/my_appになっている場合です。
# ln -s /home/hoge/rails/my_app/public /var/www/redmine
注意する点は以下の2点です。
チューニングパラメータなど
いくつかチューニングパラメータがあります。
私はhttpd.confに記述してます。
RailsMaxPoolSize 4 #Apacheサーバ上に生成されるRailsのインスタンス数 RailsPoolIdleTime 240 #設定した時間(秒)以上インスタンスへのアクセスがなかった場合終了する
RailsMaxPoolSizeはメモリ量に応じて設定。
(メモリ[MB] / 64 - 2 程度のよう)
RailsPoolIdleTimeはユーザの平均滞在時間の2倍程度を設定。