目次
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>