ユーザ用ツール

サイト用ツール


ruby:passenger

passenger

Phusion PassengerはRackベースのRubyのWebアプリケーションの実行環境。Apacheまたはnginxとともに動作する。

Apacheモジュール版

passengerのinstall

RubyGemsでインストール

$ gem install passenger

MacPortsでインストールしたApacheに対してインストールする場合は、先に環境変数APXS2とPATHを設定する。

$ export APXS2=/opt/local/apache2/bin/apxs
$ export PATH=/opt/local/apache2/bin:$PATH

passenderの動的共有オブジェクトを作成

$ sudo passenger-install-apache2-module

OSやディストリビューションの流儀に合わせてApacheの設定ファイルを作成する。

LoadModule passenger_module /Users/nullpon/.rvm/gems/ruby-1.8.7-p352@redmine/gems/passenger-3.0.9/ext/apache2/mod_passenger.so
PassengerRoot /Users/nullpon/.rvm/gems/ruby-1.8.7-p352@redmine/gems/passenger-3.0.9
PassengerRuby /Users/nullpon/.rvm/wrappers/ruby-1.8.7-p352@redmine/ruby

デプロイ

ホスト全体をRailsアプリとする場合は、DocumentRoot に Rails アプリの public ディレクトリを指定する。

DocumentRoot /var/www/paulownia.jp/redmine/publuc

<Directory /var/www/paulownia.jp/redmine/publuc>
   AllowOverride all
   Options -MultiViews
</Directory>

特定のパス、例えば /hogehoge 以下にデプロイする場合は、

DocumentRoot /var/www/paulownia.jp/htdocs

RailsBaseURI /hogehoge

<Directory /var/www/paulownia.jp/redmine/publuc>
   AllowOverride all
   Options -MultiViews
</Directory>

RailsBaseURI のパスに合わせてドキュメントルート以下に Rails の public のシンボリックリンクを作成する。

$ cd /var/www/paulownia.jp/htdocs
$ ln -s /var/www/paulownia.jp/redmine/publuc hogehoge

update

gemをupdateして、モジュールを再ビルド。Apacheの設定ファイルのパスを修正する

$ sudo gem update passenger
$ export APXS2=/opt/local/apache2/bin/apxs
$ export PATH=/opt/local/apache2/bin:$PATH
$ sudo passenger-install-apache2-module

モジュールのロード設定を修正

LoadModule passenger_module /opt/local/lib/ruby/gems/1.8/gems/passenger-2.0.3/ext/apache2/mod_passenger.so
PassengerRoot /opt/local/lib/ruby/gems/1.8/gems/passenger-2.0.3
PassengerRuby /opt/local/bin/ruby

Apache2を再起動

sudo /opt/local/apache2/bin/apachectl restart

Railsアプリの再読み込み

Railsアプリのファイルを更新しただけでは、変更が反映されない(RAILS_ENV=productionではファイルの変更を反映しないようになっている)。tmpディレクトリにrestart.txtというファイルを作成するとpassengerが再起動され、変更が反映される。

$ cd /var/redmine-1.0.4/tmp
$ touch restart.txt

nginx版

nginxには動的共有オブジェクトの仕組みが無いので、最初からpassengerを組み込んだ形でnginx自体をビルドする。

passengerをインストール

$ gem install passenger 

passenderのモジュールを組み込んだnginxをビルド。

$ sudo passenger-install-nginx-module

デフォルトでは /opt/nginx にインストールされる。起動スクリプトが無いので適当に自分で作成する。

#!/bin/bash
 
PID=/var/run/nginx.pid
DAEMON=/opt/nginx/sbin/nginx
 
start(){
  $DAEMON
}
 
stop(){
  $DAEMON -s stop
}
 
case "$1" in
  start)
    start
    ;;
  stop)
    stop
    ;;
  restart)
    stop
    sleep 1
    start
    ;;
  status)
    status_of_proc -p $PID $DAEMON nginx && exit 0 || exit $!
    ;; 
  *)
    echo "Usage: $0 {start|stop|restart|status}"
esac
 
exit 0

Standalone版

standalone版は開発用のWEBrickの代わりとして使える。また、redmine等のRailsアプリをサーバに設置せずにローカルで使用する場合に便利

Railsアプリのディレクトリで以下のコマンドを実行すると起動する。初回のみnginxがダウンロード、ビルドされる。

$ passenger start

使い方はscript/serverとほぼ同じ

dオプションでデーモン起動する。eで環境、pでポートを指定

$ passenger start -e production -p 3001 -d

rvm + apache2 で動作させる

rvmでインストールしたruby1.8.7で動かす

$ rvm use 1.8.7
$ gem install passenger 
$ rvmsudo passenger-install-apache2-module

設定ファイルを作成して読み込む

LoadModule passenger_module /Users/nullpon/.rvm/gems/ruby-1.8.7-p352@redmine/gems/passenger-3.0.9/ext/apache2/mod_passenger.so
PassengerRoot /Users/nullpon/.rvm/gems/ruby-1.8.7-p352@redmine/gems/passenger-3.0.9
PassengerRuby /Users/nullpon/.rvm/wrappers/ruby-1.8.7-p352@redmine/ruby

RailsBaseURI /redmine

<Directory /var/www/redmine-1.2.1/publuc>
   AllowOverride all              # <-- relax Apache security settings
   Options -MultiViews            # <-- MultiViews must be turned off
</Directory>
ruby/passenger.txt · 最終更新: 2011/09/19 05:16 by nullpon