RailsアプリをApache + Passengerで公開する : CentOS・RedHat編

Apacheが導入されているサーバーにPassengerをインストールするだけでRailsアプリを公開することができる。無論バーチャルホストで複数ドメインRailsアプリを動かしたり、別ドメインではPHPを動作させるといったことも可能である。
また、Apache + PassengerだけでなくNginx+Unicornの構成でRailsアプリを公開することも可能であり、RailsアプリをNginx + Unicornで公開する : CentOS・RedHat編で紹介しているので、好みによって好きな方で構築したい。

前提条件としてRubyをインストールしておく
最新バージョンのRuby環境構築 : CentOS・RedHat編

Passengerのインストール

gemでpassengerをインストールする。公開サーバーではドキュメントなどは不要なため--no-rdoc --no-riを付与している。

gem install passenger --no-rdoc --no-ri

下記でPassengerをインストールできる。この時足りないソフトウェアが自動的に表示される。

passenger-install-apache2-module

全くセットアップを行っていないサーバーで実行すると下記をインストールすることになると思われるが、環境によって異なる。表示された指示に従うこと。

yum install httpd http-devel curl-devel

インストール完了には10分程度の時間がかかる。インストール完了後、httpd.confに追加するLoadModuleなどの設定が表示されるため追加する。

設定を追加した後Apacheのバーチャルホストを普通に設定する。この時ドキュメントルートはRailsのpublicディレクトリを指定すれば良い。

<VirtualHost *:80>
ServerName www.yourhost.com
DocumentRoot /somewhere/public
</VirtualHost>

また、Passngerの設定は下記を追加して行う。なくてもデフォルト値で稼働するかと思うが、不要な情報の除去やチューニングを行うべき環境では設定する。
さくらVPS/entOS 6.4 Passengerのインストール手順 - 酒と泪とRubyとRailsと

Header always unset "X-Powered-By"
Header always unset "X-Rack-Cache"
Header always unset "X-Content-Digest"
Header always unset "X-Runtime"
PassengerMaxPoolSize 20
PassengerMaxInstancesPerApp 4
PassengerPoolIdleTime 3600
PassengerHighPerformance on
PassengerStatThrottleRate 10
RailsSpawnMethod smart
RailsAppSpawnerIdleTime 86400
PassengerMaxPreloaderIdleTime 0

Passengerはデフォルトでエラーページに細かなデバッグ情報を全て表示する設定となっている。本番サーバーで利用する場合はエラーページをoffにすることで非表示にできる。

PassengerFriendlyErrorPages off

Passengerはデフォルトでproductionモードで稼働しているが、開発用サーバーで稼働させる場合は下記のように設定する。

RailsEnv production

参考資料

thinかUnicornかPassengerの3択になるかと思いますがめんどかったらPassengerでいいんじゃないでしょうか。
Rubyのhttpサーバまとめ 2012年4月版(thin, Unicorn, Passenger, etc)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA