Passenger導入:Apache上でRailsアプリを動かす
Mongrel+mod_proxyでがんばってたけど、こっちのほうがはるかに簡単。しかも早いらしい。
gemでPassengerをインストール
$ sudo gem install passenger
適当に依存解決するためにYesして、WARNIGがいっぱい出たけど無視。
ApacheModuleのインストール
$ sudo passenger-install-apache2-module
command not foundといわれる
/var/lib/gems/1.8/binにパスが通ってない
めんどいのでフルパスで起動
$ sudo /var/lib/gems/1.8/bin/passenger-install-apache2-module
必要なものがそろってるかチェックが走る。
* Apache 2 development headers… not found(これ
$ sudo apt-get install apache2-prefork-dev
これを入れるといいらしい
もういっかい!
$ sudo /var/lib/gems/1.8/bin/passenger-install-apache2-module
通る
最後にhttpd.confに設定方法が表示される。メモる。
LoadModule passenger_module /var/lib/gems/1.8/gems/passenger-2.0.6/ext/apache2/mod_passenger.so
PassengerRoot /var/lib/gems/1.8/gems/passenger-2.0.6
PassengerRuby /usr/bin/ruby1.8
コピペする。
/etc/apache2/sites-available/の中のVirtualHostの設定に
DocumentRoot /home/user/testapp/public
とすれば動くらしいけども、今回は既存のApacheで動いてるCGI他もろもろと同居させるため、サブディレクトリから動かしたいので
DocumentRoot /var/www/
を書き換えたくない
$ cd /var/www $ sudo ln -s /home/user/testapp/public testapp
Publicへのシンボリックリンクを貼っておく
さらに
RailsBaseURI /testapp
とすると、URIを補正してくれるらしい。新規にドメイン作る必要もなくなる。
ついでに、デフォルトだとProductionになってるらしいので、
RailsEnv development
とも書いておく。
Apache再起動する。
$ sudo /etc/init.d/apache2 restart
で動く。おそらく複数のアプリを起動もできる
RailsBaseURI /testapp1 RailsBaseURI /testapp2
(未確認、あとで試す → 確認、同居可能)
参考
http://redmine.jp/tech_note/apache-passenger/
http://d.hatena.ne.jp/satake7/20080605/p1