sakuramateo. このページをアンテナに追加 RSSフィード

2006-02-05

Apache2 + fcgid + Ruby on Railsメモ

久々にしっかりとはまったので、メモを残しておきます。

やりたかったこと

Ruby on Railsをお試しでインストールして、アプリケーションをつくったのですが、

CGIだとやはりとてもとても遅いので、fastCGIで動かすことを決意。

つまり、Ruby on Railsが速く動くなるようになればよい。

はまった点

Gentooで、emerge mod_fastcgiを実行すると、Apache-1.3がインストールされてしまう。。

Apache-2のモジュール(/usr/lib/apache2/module)を確認してみると

明らかにfastcgiポイ、fcgid.soを見つける。

ただ、設定の仕方が全然分からない。。。。

適当にやっていると。

Application error

Rails application failed to start properly

全然だめじゃん。

ということで。以下が解決法。

インストール手順

RubyfastCGIに対応させる。(fcgi)

ここは、RubyGemsで提供されているので、以下のコマンドで完了。

gem install fcgi --remote

apache2にfastCGIモジュールをインストールする。(mod_fcgid.so)

gentooなので、いつも通り

emerge mod_fcgid

なんか、「fastCGI」と「fcgid」はバイナリレベルで同じようなものって

書いてありました。よくわかりませんが。

ただし、設定は結構違うみたい。

apache2(/etc/apache2/modules.d/20_mod_fcgid.conf)に設定。

(ここがとても大事なポイント)

ここで設定すべき項目は、Railsの初期設定をapacheの設定にしなくてはいけないということ。

Railsがどのモード(DB利用:config/database.yml)を利用するかを指定する。

ひとまず、developmentで作成していたので。

以下の通り指定

DefaultInitEnv RAILS_ENV development

後、以下の設定も必須らしい。

IPCCommTimeout 40

IPCConnectTimeout 10

結局。/etc/apache2/modules.d/20_mod_fcgid.confはこうなっています。

<IfDefine FCGID>

<IfModule !mod_fcgid.c>

LoadModule fcgid_module modules/mod_fcgid.so

DefaultInitEnv RAILS_ENV development

IPCCommTimeout 40

IPCConnectTimeout 10

</IfModule>

<IfModule mod_fcgid.c>

AddHandler fcgid-script .fcgi

</IfModule>

</IfDefine>

ROR/public/.htaccessの設定。(これはどこにでも書いてある)

fastcgiをfcgidに変更

# General Apache options

#AddHandler fastcgi-script .fcgi

AddHandler fcgid-script .fcgi

RewriteRuleを変更(CGI用からfastCGI用へ)

# RewriteRule ^(.*)$ dispatch.cgi [QSA,L]

RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]

apache2起動時のパラメータを追加

起動時に"-D FCGID"を追加する。

/etc/conf.d/apache2に以下を設定。

#APACHE2_OPTS="-D SSL"

APACHE2_OPTS="-D FCGID"

apache2の再起動

そして実行。

/etc/init.d/apache2 restart

参考サイト

moroの日記http://d.hatena.ne.jp/moro/20060130/1138628101

ratio - rational - irrationalhttp://idm.s9.xrea.com/ratio/2005/10/18/000274.html

Bloggy Hellhttp://myles.eftos.id.au/blog/archives/27

Paul's Journalhttp://paul.querna.org/journal/articles/2006/01/01/using-mod_fcgid-for-ruby-on-rails-applications

たぶん適当なところが多いので、どなたかフォローしていただけたらたすかります。

moromoro 2006/02/06 09:27 あれ、USE=”apache2” した状態で emerge net-www/mod_fastcgi をするとapache2用のモジュールが生成されません?

sakuramateosakuramateo 2006/02/06 11:30 moroさんありがとうございます。
USEにapache2を設定していませんでした。。
確かに簡単にインストールできました。
USEにfastCGIを指定して、apache2を再インストールしようとしてました。。。。

MegyMegy 2006/02/07 13:49 仕事上ITのスペシャリストの方と仕事してるのに、私は全くちんぷんかんぷんです。(笑

トラックバック - http://d.hatena.ne.jp/sakuramateo/20060205/1139162716