さくらVPS/entOS 6.4 Passengerのインストール手順 [Apache][Railsサーバへの道]


さくらVPS 2GB SSDのCentOS 6.4をセットアップしてイケているRailsサーバに仕上げるまでのシリーズです。第8回はPassengerの導入です。PassengerとはRailsのアプリケーションサーバの1つで、Apacheと組み合わせて使う方式はそれなりの時間が立って、熟れているのでネットでの情報も豊富です!


🐯 Passengerのインストール手順

gem install時にドキュメント生成を行わないようにする。

vim ~/.gemrcに次の項目を追加。

gem: --no-rdoc --no-ri

RVM環境の場合はpassengerのインストール前にgemsetをgrobalにする。

rvm gemset use global

gem passengerをインストール。

gem install passenger

passengerのApacheモジュールのインストール。

passenger-install-apache2-module

インストールが完了したら、次のコマンドを実行。

passenger-install-apache2-module --snippet

Passengerの設定

次のコマンドを実行すると、

passenger-install-apache2-module --snippet

Apacheとの連携に必要な設定が次のように出力されます。

# 環境によって設定値が異なりますので以下の3行はそのまま転記しないでください。
LoadModule passenger_module /usr/local/rvm/gems/ruby-2.0.0-p247@global/gems/passenger-4.0.18/buildout/apache2/mod_passenger.so
PassengerRoot /usr/local/rvm/gems/ruby-2.0.0-p247@global/gems/passenger-4.0.18
PassengerDefaultRuby /usr/local/rvm/wrappers/ruby-2.0.0-p247@global/ruby

sudo vim /etc/httpd/conf.d/passnger.confで次の内容を追加。

# Passengerの基本設定
LoadModule passenger_module /usr/local/rvm/gems/ruby-2.0.0-p247@global/gems/passenger-4.0.18/buildout/apache2/mod_passenger.so
PassengerRoot /usr/local/rvm/gems/ruby-2.0.0-p247@global/gems/passenger-4.0.18
PassengerDefaultRuby /usr/local/rvm/wrappers/ruby-2.0.0-p247@global/ruby
# Passengerが追加するHTTPヘッダを削除するための設定
Header always unset "X-Powered-By"
Header always unset "X-Rack-Cache"
Header always unset "X-Content-Digest"
Header always unset "X-Runtime"
# 必要に応じてPassengerのチューニングのための設定を追加
PassengerMaxPoolSize 20
PassengerMaxInstancesPerApp 4
PassengerPoolIdleTime 3600
PassengerHighPerformance on
PassengerStatThrottleRate 10
RailsSpawnMethod smart
RailsAppSpawnerIdleTime 86400
PassengerMaxPreloaderIdleTime 0

Apacheの文法チェックです。

apachectl configtest
> sintax ok <= と出れば成功。

以下でApacheを再起動してブラウザで表示確認。

sudo /etc/rc.d/init.d/httpd restart

もし本番環境の場合は、vim ~/.bashrcで以下を追加。

RAILS_ENV=production

source ~/.bashrcを実行して設定を反映。

🚌 補足:Passengerの実行ユーザー

Passengerの実行ユーザーは各プロジェクトのconfig/environment.rbファイルのオーナーだそうです。理由は、共有サーバでPassengerを利用した場合に、ほかの利用者のファイルをRailsアプリケーションからアクセス出来ないようにする為らしいです。

🚜 補足 : Apacheのバーチャルホスト セットアップ手順

Apacheのバーチャルホストの設定ファイル(sudo vim /etc/http/conf.d/vhost.confなど)をApache VirtualHostの設定を参考に編集。

apachectl -t
> Syntax OK
touch tmp/restart.txt

🗽 参考リンク

CentOS 5.3にApache をインストール

RVM: Ruby Version Manager - Passenger - Come on, ride the train, hey, ride it, woo woo…

CentOSにRedmineをインストール

🤔 変更来歴

12/14 22:15タイトルを変更、全体の構成をシリーズものに合わせて編集

09/24 07:20 Ruby 2.0.0対応 & CentOS 6.4対応、記述ミス修正

🎳 検証環境

今回の記事の検証環境は以下のとおりです。

Local/Server:
  Ruby: 2.0.0
  Rails: 4.0.0

Local:
  OS: Mac Mountain Mountain Lion(macOS 10.8.4)

Server(さくらVPS 2G SSD):
    CentOS release 6.4 (Final)

📚 おすすめの書籍