前提として,rbenv0.3.0環境内にRuby1.9.3-p194をインストール済み且つbundler1.1.3・Rails3.2.3で適当なRailsアプリを作成済みというところからスタートです.
RailsアプリをApache2のサブディレクトリで動作させる準備
ln -s /somewhere/rails_sample/public Apache2のドキュメントルート/rails_sample
でシンボリックリンクを作成しておきましょう.
OSXのApache2のドキュメントルートは/Library/WebServer/Documentsだと思います.
passengerのインストール
まずgem install passenger
でpassengerをインストールします(今回は3.0.12).
次にpassengerのapache2モジュールをインストールする必要があるので,~/.rbenv/versions/1.9.3-p194/bin/passenger-install-apache2-module
を実行します.
Apache2周りの設定
passenger-install-apache2-moduleを実行するとhttp.confを編集しましょうという旨が表示されるので,言われた通りにします.
今回はOSX環境なので,/private/etc/apache2/other/passenger.confを新たに作成して以下のように書きます.
LoadModule passenger_module /Users/ユーザ名/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/passenger-3.0.12/ext/apache2/mod_passenger.soPassengerRoot /Users/ユーザ名/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/passenger-3.0.12PassengerRuby /Users/ユーザ名/.rbenv/versions/1.9.3-p194/bin/ruby
RailsEnv development
RubyBaseURI /rails_sample```
上から三行分はpassengerのインストール時にhttpd.confに書くように言われるものです.
また,真ん中の`RailsEnv development`ですが,passengerはデフォルトでproductionモードでRailsを動作させるので,productionではなく別のモードで動かしたいという場合はこのように`RailsEnv モード名`と書いてください.
最後の一行はRailsアプリケーションの場所を指定しています.このように指定すると http://localhost/rails_sample でRailsアプリのルートにアクセスできます.
#passenger+bundler問題
ここまでの状態ではpassenger経由でRailsアプリを呼んだ時にbundlerでインストールしたgemを読んでくれないので,Railsアプリのルート/config/setup_load_paths.rbを作成しましょう.
このファイルはどうやらアプリの読み込み時に実行されるものらしく(参考:http://www.modrails.com/documentation/Users guide Apache.html#bundler_support),環境変数の設定などに利用できます.
ここに以下のように書きます.
```ruby:config/setup_load_paths.rb
ENV['GEM_HOME'] = "/somewhere/rails_sample/vendor/bundle/ruby/1.9.1"
GEM_HOME環境変数に使用したいgemのホームを代入しています.こうすることでbundlerでインストールされたgemが読み込まれ,正常にrailsが動作します.