Passenger (mod_rails) セットアップ
まずはインストール
$ sudo gem install passenger $ sudo passenger-install-apache2-module Welcome to the Phusion Passenger Apache 2 module installer, v2.0.6. ... Installation instructions for required software * To install OpenSSL support for Ruby: Please run apt-get install libopenssl-ruby as root. * To install Apache 2 development headers: Please run apt-get install apache2-prefork-dev as root. If the aforementioned instructions didn't solve your problem, then please take a look at the Users Guide: /usr/lib/ruby/gems/1.8/gems/passenger-2.0.6/doc/Users guide.html
libopenssl-ruby と apache2-prefork-dev が足りないらしい。
$ sudo apt-get install libopenssl-ruby $ sudo apt-get install apache2-prefork-dev
もう一度 apache2-module をインストール
$ sudo passenger-install-apache2-module ... Deploying a Ruby on Rails application: an example Suppose you have a Ruby on Rails application in /somewhere. Add a virtual host to your Apache configuration file, and set its DocumentRoot to /somewhere/public, like this: <VirtualHost *:80> ServerName www.yourhost.com DocumentRoot /somewhere/public </VirtualHost> And that's it! You may also want to check the Users Guide for security and optimization tips and other useful information: /usr/lib/ruby/gems/1.8/gems/passenger-2.0.6/doc/Users guide.html Enjoy Phusion Passenger, a product of Phusion (www.phusion.nl) :-) http://www.modrails.com/
ドメイン名ごとに分ける
アクセスをこんな風に分けたい。
- ドメインA => 静的コンテンツ
- ドメインB => Railsアプリ
ドメインAはほぼdefaultのまま。
ドメインBの設定に、passengerの設定も混ぜてしまう。
本当は分けるべきだが、必要ならあとでやる。
- ドメインBのVirtualHost設定を追加する
# /etc/apache2/conf.d/passenger LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-2.0.6/ext/apache2/mod_passenger.so PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-2.0.6 PassengerRuby /usr/bin/ruby RailsEnv development <VirtualHost *> ServerName example2.com DocumentRoot /var/www RailsBaseURI /rails </VirtualHost>
- ドメインAを、既存のVirtualHostのServerNameに追加する
NameVirtualHost * <VirtualHost *> ServerName example1.com DocumentRoot /var/www ... </VirtualHost>
- Apache 再起動
$ sudo apache2ctl restart
これでOK。
Rails アプリには http://example2.com/rails
別の静的コンテンツには http://example1.com/ でそれぞれアクセスできる。
はまった点
最初はドメインAの ServerName を設定していなかったためか、http://example1.com/hoge にアクセスすると Rails の Rooting Error が吐かれていた。
アプリが増えても、Apacheの設定を書くだけ。