WEBサービス創造記

WEBサービスを作ったり保守したりしてる人のメモブログです。

Passengerのインストール

   

Passengerについて

Passengerは、Railsアプリの実行環境のひとつです。

Railsは単一スレッドであり、一度にひとつのリクエストしか処理することができません。
development環境で用いられるWebサーバであるWebrickでは、Railsサーバのプロセスを1つだけ起動してそのプロセスですべての処理を実行していましたが、不特定多数が利用するWebアプリケーションとしてproduction環境に公開する場合はそうはいきません。

PassengerはWebサーバとして広く利用されているApacheのモジュールとして動作します。
Passengerを利用することでRailsアプリをApacheの上で動作させることができるようになります。

複数のリクエストを同時に処理できるApacheをフロントエンドサーバとして立て、そこでPassengerがRailsで処理するリクエストをいくつものバックエンドのプロセスのいずれかひとつに送信するという仕組みになっているため、Webアプリケーションの本番運用にも耐えることができます。

Passengerのインストール

$ sudo gem install passenger
$ sudo passenger-install-apache2-module    対話形式でのインストールとなる

passenger-install-apache2-moduleコマンドを実行すると、対話形式のインストールがはじまります。
Apacheなど必要なソフトウェアがインストールされていない場合はインストール方法が示されるので、それに従ってインストールを行います。
ステップを進めて行くと、以下のように”Please edit your Apache configuration file, and add these lines:”という一行が出力され、直後にApacheの設定ファイルに記述すべき内容が示されます。

The Apache 2 module was successfully installed.

Please edit your Apache configuration file, and add these lines:

   LoadModule passenger_module /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.18/ext/apache2/mod_passenger.so
   PassengerRoot /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.18
   PassengerRuby /usr/local/bin/ruby

After you restart Apache, you are ready to deploy any number of Ruby on Rails
applications on Apache, without any further Ruby on Rails-specific
configuration!

Press ENTER to continue.

この指示に従い、Apacheの設定ファイルを編集します。
Apacheの設定ファイルの場所は以下のコマンドで確認できます。

$ sudo apache2ctl -V
$ sudo apache2ctl -V | grep -i server_config_file  ※ディストーションによってはapachectl

ここでは、passenger.confというpassenger専用の設定ファイルを用意します。設定ファイルとして自動的にインクルードされるconf.dディレクトリ直下に作成している点に注意してください。

$ sudo vi /etc/apache2/conf.d/passenger.conf
LoadModule passenger_module /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.18/ext/apache2/mod_passenger.so PassengerRoot /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.18 PassengerRuby /usr/local/bin/ruby

あとはRailsアプリをドキュメントルートに指定してApacheを再起動すれば、完了です。

$ sudo vi /etc/apache2/conf.d/virtualhost.conf

    ServerName domain.ltd
    DocumentRoot /var/www/appname/public


    AllowOverride All

___EOD___;
echo htmlspecialchars($code);
?>

$ sudo /etc/init.d/apache2 restart

 - Ruby on Rails , , , , , ,