そういうことだったんですね

いろいろ調べたり学んだりしたことを忘れないように書き連ねています

Rails - Apache との連携 Phusion Passenger

本番環境で使う場合は WEBrick だと心もたないし管理が面倒で、 実環境では Apache や Nginx などのWebサーバで動かすことが多いです(Unix/Linux環境の場合)

今回はPhusion Passengerについて RVMと組み合わせて導入する方法をまとめます。

前提

RVMは rails 用のサブセットを用意すること

RVM の gemsets は rails 専用のものを用意した場合を想定します。

$ rvm use 2.0.0 --default --create

2.0.0railsアプリで使用するRuby のバージョンを指定します。

Apache のインストール

ビルドしても良いですが、ディストリビューション独自のものを使うと楽です。

CentOSの場合、以下のようにインストールします。

# yum install httpd httpd-devel apr-devel apr-util-devel

依存ソフトウエアのインストール

apacheとの連携時に次のソフトを使用します

passenger のインストール

$ gem install passenger

Apache へのインストール

apacheのシステムファイルを更新するので root ユーザになります。 その後、passengerをインストールしたgemsetsに切り替えます。

$ su
# rvm use 2.0.0@rails
# passenger-install-apache2-module

インストール中に続けるかどうか聞かれます。依存ソフトウエアのときにエラーが出たら、中断して不足のソフトを入れてから再度実行します。

途中、設定ファイルに追加しろという項目が出力されますので、メモ帳などにコピーしておきます

LoadModule passenger_module /usr/local/rvm/gems/...../mod_passenger.so
PassengerRoot /usr/local/rvm/gems/..../passenger-x.y.z
PassengerDefaultRuby /usr/local/rvm/..../ruby

また、VirtualHost設定のサンプルも表示されます。こちらもコピーしておくと便利です。

httpd.conf を編集する

Apache の設定ファイル httpd.conf を編集します。

RedHatCentOSの場合 /etc/httpd/conf.d 以下に passenger.conf などとおくとわかりやすくなります。

/etc/httpd/conf.d/passenger.conf

LoadModule passenger_module /usr/local/rvm/gems/...../mod_passenger.so
PassengerRoot /usr/local/rvm/gems/..../passenger-x.y.z
PassengerDefaultRuby /usr/local/rvm/..../ruby

<VirtualHost *:80>
      ServerName www.yourhost.com

      DocumentRoot /var/rails/oneapp/public
      <Directory /var/rails/oneapp/public>
         # This relaxes Apache security settings.
         AllowOverride all
         # MultiViews must be turned off.
         Options -MultiViews
      </Directory>
</VirtualHost>

# ポートで振り分ける例
# http://192.168.0.2:8765 でアクセスする

Listen 8765
NameVirtualHost 192.168.0.2:8765
<VirtualHost 192.168.0.2:8765>
      ServerName www.yourhost.com

      DocumentRoot /var/rails/anotherapp/public
      <Directory /var/rails/anotherapp/public>
         # This relaxes Apache security settings.
         AllowOverride all
         # MultiViews must be turned off.
         Options -MultiViews
      </Directory>
</VirtualHost>

Apache を再起動

設定ファイルを読み直すため Apache を再起動します。

# service httpd restart