Debian GNU/Linux squeezeとrubygems 1.3.4とruby 1.8.7でインストール。
まず、passengerを導入。
% sudo gem1.8 install passenger
設定する。
% sudo passenger-install-apache2-module
apache2-prefork-devを入れなさいと言われるのでインストールする。
% aptitude install apache2-prefork-dev
その後、Apacheを設定。
% sudo passenger-install-apache2-module
passenger用のモジュールを用意。/etc/apache2/mods-available/passenger.loadの中身は以下のとおり。
LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-2.2.2/ext/apache2/mod_passenger.so
/etc/apache2/mods-available/passenger.confの中身は以下のとおり。
PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-2.2.2 PassengerRuby /usr/bin/ruby
モジュールを反映させる。fastcgiを利用していた場合はfcgidを無効にする。
% sudo a2enmod passenger % sudo a2dismod fcgid
railsのソースファイルが/home/hogehoge/rails-serverとし、http://hogehoge.net/rails/でアクセスできるようにするとき、/etc/apache2/sites-available/defaultに以下を加える。
RailsBaseURI /rails
そして、シンボリックリンクをはる。
% sudo -u www ln -s /home/hogehoge/rails-server/public /var/www/rails
Apacheを再起動。
% sudo /etc/apache2 stop % sudo /etc/apache2 start
あれ?うまくいかない。理想的には「http://hogehoge.net/rails/コントロール名/アクション名」で、railsには、「/コントロール名/アクション名」が渡されると期待していたのに、「rails/コントロール名/アクション名」が渡された結果、「rails」部分がroute.rbに記載されていないといってうまく動かない。WebRickで動かすときには、「http://localhost:3000/コントロール名/アクション名」となるから問題ないのだけど、どうやればよいのやら。
上の件は解決した。/home/hogehoge/rails-server/config/environments/production.rbに以下を付け加える。
# for passenger config.action_controller.relative_url_root='/rails'
この話の参考