Passenger (Ruby on Rails) のメモ

Ruby on Rails のアプリをApacheで動かすためのモジュール。

Passengerの他にUnicornというアプリケーションサーバもある。

インストール

以下のコマンドだけでよい。

sudo gem install passenger
sudo passenger-install-apache2-module

足りないパッケージがあった場合は全部やり方を passenger-install-apache2-module が教えてくれるのでそのとおりにすればよい。

Ubuntuの場合は事前に以下を実行すると少し楽になる。

sudo apt-get install build-essential libcurl4-openssl-dev libssl-dev zlib1g-dev apache2-threaded-dev libapr1-dev libaprutil1-dev

環境の切替

Railsの実行環境として、production, development, test の3種類を選択できる。 Passenger で動かすときのデフォルトは、production 環境での動作となる。

development または test に切り替えたい場合は、Apacheの設定に以下を書き足す。 VirtualHostの中に書けばそのバーチャルホストにだけ適用できる。

RailsEnv development

環境変数

環境変数を設定したい場合は、Apacheの設定に以下のように書き足す。

SetEnv GEM_HOME /home/hogehoge/.gems

特定のrailsアプリケーションのみ再起動するには

Passenger で動いているrailsアプリケーションを再起動するには tmp ディレクトリに restart.txt というファイルを設置する。ファイル設置後最初のアクセスで、再起動が実行される。

touch tmp/restart.txt

古いバージョンだと再起動完了後にこのファイルは削除されるらしいが、少なくとも passenger 3.0.19 では再起動してもファイルは削除されない。 tmp/restart.txt のタイムスタンプを見ている様子。

このファイルをgit管理下に入れて、バージョンが変わるごとにこのファイルの内容を書き換えて、サーバサイドで git pull するごとにこのファイルのタイムスタンプが変わるようにすれば、自動で再起動がかかって便利そう。

Apacheを再起動するとすべてのアプリケーションで数秒のダウンタイムが発生してしまうが、この方法なら影響するのはこのアプリケーションのみで、ダウンタイムも発生しない。

このサイトは筆者(hydrocul)の個人メモの集合です。すべてのページは永遠に未完成です。