Passenger(mod_rails for Apache)を Ubuntu にインストール
lighty + fastcgi だと色々と困ることがあるので Passenger (mod_rails) をインストールして試してみよう。
gem で入れる。
% sudo gem1.8 install passenger % sudo passenger-install-apache2-module # 1 選ぶ # apt-get install apache2-prefork-dev せよと言われる % sudo apt-get install apache2-prefork-dev % sudo passenger-install-apache2-module # 1 選ぶ
インストール完了。
以下のように Apache の config ファイルに書きなさいと言われる。
LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-2.0.2/ext/apache2/mod_passenger.so PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-2.0.2 PassengerRuby /usr/bin/ruby1.8
/etc/apache2/mods-available/rails.load
LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-2.0.2/ext/apache2/mod_passenger.so
/etc/apache2/mods-available/rails.conf
PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-2.0.2 PassengerRuby /usr/bin/ruby1.8
シンボリックリンク
% sudo ln -s /etc/apache2/mods-available/rails.load /etc/apache2/mods-enabled/ % sudo ln -s /etc/apache2/mods-available/rails.conf /etc/apache2/mods-enabled/
次に /etc/apache2/sites-enabled/000-default あたりに自分のアプリケーションにあわせて以下のような設定を書く。
<VirtualHost *:80> ServerName www.yourhost.com DocumentRoot /somewhere/public </VirtualHost>
再起動。
sudo /etc/init.d/apache2 restart
ブラウザからアクセスしてみましょう。
http://127.0.0.1/
production database is not configured (ActiveRecord::AdapterNotSpecified)というエラーが出る。
うご。mod_rails は production 環境で動くのね。
database.yml に設定追加した。
動いた!がスタイルがあたってない。
public/stylesheets がうまく見られない?。
http://127.0.0.1/stylesheets/default.css 見にいったら 500 エラー。
tail -f /var/log/apache2/error.log .../public/.htaccess: Option ExecCGI not allowed here
んん? public/.htaccess 見てみる。
fcgi/cgi 用の記述が見受けられたがこれは必要ないのでコメントアウトした。
というわけでうまく動きました。
Passenger で一番驚いたのは CUI のインストーラーの親切さ。
こういうソフトウェアは色々な環境にインストールされるなどの事情があり完全自動のインストールは難しいのだけれど、バランスをとってメッセージでうまく敷居を下げている。
いつもやっている config.log 見て、apt-file してみたいな作業をやらずに済むのはとても親切。
インストールの途中に「 apt-get install apache2-prefork-dev してみてよ」と言われたのは初めてだ。
最後に
インストールは簡単でも説明書くらいは読んでおいて損はないです。
Phusion Passenger users guide
http://www.modrails.com/documentation/Users%20guide.html