Apache+Passengerで、Ruby 2.0.0依存のアプリを動かしたいけど、すでにRuby 1.9.3のアプリも動いているから困った。の解決方法。

Passeger 4.0から、Rubyインタプリタを指定するPassengerRuby設定が、VirtualHostディレクティブの中に書けるようになりました。なのでもはや簡単です。

RVMなどで複数のRuby環境を利用できるようにした上で、VirtualHostを次のように設定します。

<VirtualHost *:80>
ServerName webapp.example.com
DocumentRoot /path/to/webapp/public
PassengerRuby /usr/local/rvm/wrappers/ruby-2.0.0-p195/ruby
<Directory /path/to/webapp>
AllowOverride all
Options -MultiViews
</Directory>
</VirtualHost>

注意点としては、システムワイドのRVM環境で which ruby すると、/usr/local/rvm/rubies/ruby-X.X.X/bin/rubyというのが出てきますが、これを設定するとうまく動作しませんでした。/usr/local/rvm/wrappers/ruby-X.X.X/rubyを指定する必要があるようです。