Deploying Rails3 app with passenger on CentOS 5.6
Rails app を本番環境で動かすには今は passenger が自然な選択肢らしく導入してみた。例によって先頭に # がある command を root で、 > がある command をそれ以外の user で打つ。
まず Apache の install から。
次、 passenger の install 。
- # yum install httpd-devel curl-devel
- make に必要な package の install 。うちの場合これで足りたけど make の段階で package が足りない場合は必要なものを教えてくれるのでそのときに install するほうがいいかも。
- # gem install passenger
- # passenger-install-apache2-module
終わると最後に httpd.conf に設定を追加しろと言ってくるのでそのとおりにする。うちの場合以下の 3 行だった。
LoadModule passenger_module /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.7/ext/apache2/mod_passenger.so
PassengerRoot /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.7
PassengerRuby /usr/local/bin/ruby
設定の最後。 Apache の document root を Rails app にする。あー app を "/var/www/rails/appname/" に deploy する場合ね。
<VirtualHost *:80> ServerName www.example.com DocumentRoot /var/www/rails/appname/public <Directory /var/www/rails/appname/public> AllowOverride all Options -MultiViews </Directory> </VirtualHost>
Apache は apache という user で Rails app に access する。ので起動できるようにするために何とかしてやらないといけないんだけどそのための group を追加する方向で解決する。安直に "rails" て名前にして Rails app 全般をこの group で起動するようにしてみる。
次、 app を deploy する場所を作る。
- # cd /var/www/
- # mkdir rails
実際の app を deploy する。
- # cd appname
- # git checkout-index -a -f --prefix=/var/www/rails/appname/
- よく言われるけど prefix の最後の "/" は必須というかないと残念なことになるので注意。
- # cd /var/www/rails/
- # mkdir appname/log
- # touch production.log
- log file はないとダメだろー。
- # mkdir appname/tmp
- tmp がないと動かない場合もあるらしいのでつくっとく。
- # chown -R user:rails appname
最後、 database を初期化する。
これで終了。満を持して Apache を起動する。
- # /etc/init.d/httpd start