トップ «前の日記(2010-11-02) 最新 次の日記(2010-11-12)» 編集

2010-11-10 [長年日記]

_ 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 + サブディレクトリ

Phusion Passenger users guide

一つのホストの中で複数の 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

なぜかは分からないけどうまく動かすことができなかった。

まとめ

まとめはない

Tags: Rails Ruby Web

*1 Rails 2 以下の場合は RailsEnv を設定する