Rails 3の動かし方メモ - Apache編 -
development環境
WEBRick ( rails server )での development はほぼ悩むことない
production環境
とりあえず Apache を基本にメモ。nginx だと当然記法は異なる。チュートリアルビデオが分かりやすい。
- production 用に rake を実行するには rake COMMAND RAILS_ENV=production
- /rails/info/properties は production 環境では localhost 以外からは参照できない
Passenger
Overview — Phusion Passenger (a.k.a. mod_rails / mod_rack)
※ mod_rails だけど、今は mod_rack でもある。しかも nginx でも動く。
以下、メモ。
- RackEnv production を設定( <= Rails 2 の場合は RailsEnv )
- SELinux に引っかかって gem の奥深くに入ってる passenger は読み込めなかった
- SELinux 以外は VirtualHost 丸ごと passenger 化するのは難しくない
- production 環境として実行するためには httpd.conf に RackEnv production ( Rails 3 以降の場合) が必要1
Passenger + サブディレクトリ
一つのホストの中で複数の Rails アプリを動かす。
- RackBaseURI を使う ( <= Rails 2 の場合は RailsBaseURI )
- RackBaseURI /app の形式で指定する
- このパスに実際の Rails.root/public が来るように symlink を作る
※ ただし、アクセスが http://example.com/app のものは http://example.com/app/ に正規化してあげないとWebサーバとの間でパスの解釈に食い違いが出てしまう
fastcgi
dre3k's rails3_fcgi at master - GitHub
これでやってみる。
注意!!
- mod_fcgid では AddHandler fcgid-script .fcgi
- mod_fastcgi では AddHandler fastcgi-script .fcgi
DocumentRoot がアプリの public/ になる方法は設定できた。ただし rvm で入れた ruby は今のところ使い方が分からない。もしかしたら rvm wrapper とか使えばイケるのか?
ということで、複数の別バージョンの Ruby を動かすのは今のところ難しそう。Passenger によって mod_php 並みに快適にはなるが、mod_php を越えるわけではなさげ。結構期待していたのに。
ところで rack で扱うなら fastcgi 関係の gem って要らないんすよね?
rvm の Ruby を使う
Passenger
- rvm で入れた Ruby を rvm use で指定してから gem install rails passenger
- この passenger を利用する設定にすれば普通に動く
fastcgi
なぜかは分からないけどうまく動かすことができなかった。
まとめ
まとめはない
Rails 2 以下の場合は RailsEnv を設定する ↩