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.0 は railsアプリで使用するRuby のバージョンを指定します。
Apache のインストール
ビルドしても良いですが、ディストリビューション独自のものを使うと楽です。
CentOSの場合、以下のようにインストールします。
# yum install httpd httpd-devel apr-devel apr-util-devel
依存ソフトウエアのインストール
apacheとの連携時に次のソフトを使用します
- GNU C コンパイラ(gcc)
- GNU C++ コンパイラ(g++)
- Curl 開発用ファイル (libcurl-devel)
- OpenSSL 開発用ファイル (openssl-devel)
- Zlib 開発用ファイル (zlib-devel)
- RubyGems
- Rake
- rack
- Apache 2 (httpd)
- Apache 2 開発用ファイル (httpd-devel)
- Apache Portable Runtime(APR) 開発用ファイル (apr-devel)
- Apache Portable Runtime Utility(APU) 開発用ファイル (apr-util-devel)
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 を編集します。
RedHatやCentOSの場合 /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