mod_fcgidにおけるアクセス向上とSSLのエラー対処 - Rails

Posted by kyosuke at 07/18 2007
>>前の記事: Ajax Tooltipでスマートにポップアップさせる



mod_fcgidはかなりの曲者。

通常にインストールしている場合(mod_fcgidのバージョンが1.08以下)、
SSLでエントリー等を更新するとRailsでエラーが発生する場合がある。

また、mod_fcgidのバージョンが1.08以下の場合、
長い間(10分くらい?)サイトにアクセスがない場合、その後にアクセスするとき、アクセスするのにかなり時間がかかる症状がでる。 プロセスをキルしているからとからしいのですが、バージョンが1.09以上にすると、これらのエラーと症状が解消される。

http://juju.org/articles/2006/07/27/mod_fcgid-slow-startup-on-ubuntu-fix


ちなみに、僕はこのエラーの原因を探して、そして対処するのに5時間くらいかかった。

まさに気分はウォーリー状態です。
http://www.atmarkit.co.jp/im/cits/serial/dilbert/12/01.html




SSLでエントリーを更新した場合に出るエラー。
再現性は低いが、長い文章を書いたときなどRailsにエラーが出て、更新できなくなる。

fastcgi.crash.logからエラーログをみることができる。

[14/Apr/2007:19:26:46 :: 15483] Dispatcher failed to catch: bad content body (EOFError)
/usr/lib/ruby/1.8/cgi.rb:982:in `read_multipart'
/usr/lib/ruby/gems/1.8/gems/actionpack-1.13.2/lib/action_controller/cgi_ext/raw_post_data_fix.rb:38:in `initialize_query'
/usr/lib/ruby/1.8/cgi.rb:2271:in `initialize'
(eval):16:in `initialize'
/usr/lib/ruby/1.8/fcgi.rb:600:in `each_cgi'
/usr/lib/ruby/1.8/fcgi.rb:597:in `each_cgi'


こいつを直すのに、最初に疑われたのがfcgi.rb。
どっかのサイトが、このバージョンが古いとエラーが出るとか何とか言っていたので、
ruby-fcgi-0.8.7.tar.gzへバージョンをアップさせた。

たしか、ruby-fcgiをインストールするのも何かあって苦労したような・・。
で、その結果、意味なかった。。。


ようやく行き着いたのが、
http://www.fdiary.net/ml/rails/msg/1398
> もし apache 側のモジュールに mod_fcgid 1.08 以前をお使いなら、バージョンを
> (出来れば最新版に)上げてみてください。
> 1.08 以前は mod_ssl と組み合わせれると問題が起きます。

これ正解。


mod_fcgidをダウンロード
http://fastcgi.coremail.cn/download.htm

とりあえずmod_fcgid.1.09.tar.gzをダウンロードしてインストールしてみる


ここにも罠があるので、その罠はずし。。(重要)

Makefileに、
top_dir = /usr/share/apache2

このままではspecial.mkに関して下記のようなエラーが出る
Makefile:13: /usr/share/apache2/build/special.mk: No such file or directory
make: *** ターゲット `/usr/share/apache2/build/special.mk' を make するルールがありません. 中止.


special.mkが見当たらないというエラーなのですが、
普通にspecial.mkなんてありません。

special.mkは、
apt-get install apache2-prefork-dev
という呪文を唱えると作成されます。


で、それが終わったらようやく
make
make install
を唱えて、mod_fcgid.1.09をインストールすることができます。

/etc/apache2/mods-available/fcgid.conf
にDefaultMinClassProcessCount 3 というのをつけて、アパッチをリスタート

げふー、というような感じでようやくすべてのトラップを潜り抜けた・・



と思いたいのですが、
mod_fcgid.2.1があるのに、mod_fcgid.1.09をイントールしているのは気分が優れません。


mod_fcgid.2.1をインストールすることにします。

今回は既に前処理をしてあるので、
make
make install
だけで、インストール完了!

でアパッチをリスタート、、、 FAIL!!!!!!!!!!!
サーバー停止、サイテーな状態になる。


エラーログ
/etc/httpd/modules/mod_fcgid.so: undefined symbol: apr_shm_remove


グワーって感じです。

Google先生に聞いたところ、
http://www.mail-archive.com/mod-fcgid-users@lists.sourceforge.net/msg00016.html

Hi,
Please checkout the latest source from cvs. mod_fcgid 2.1 doesn't work with
apache 2.0.x, because apr_shm_remove is intrduced in apache 2.2.x. I have fixed
this problem in the latest source code a week ago.


CVSでチェックアウトしろってさ・・・
http://sourceforge.net/cvs/?group_id=174879

CVSでチェックアウトするには、CVSのクライアントをインストールする必要がある
http://wordpress.sourceforge.jp/tortoisecvs.html



で本当に本当に本当に、

ようやく最新のバージョンで動くmod_fcgidをチェックアウトすることができ、インストール、アパッチをリスタート、そしてようやくミッションコンプリート。。


>>前の記事: Ajax Tooltipでスマートにポップアップさせる





Railsのモノ作り記事

No_image
mod_fcgidにおけるアクセス向上とSSLのエラー対処
現在のページです
Posted by kyosuke at 07/18 2007

No_image
Ajax Tooltipでスマートにポップアップさせる
スマートなポップアップのデモ http://www.dhtmlgoodies.com/scripts/ajax-tooltip/ajax-tooltip.html そのスクリプトのダウンロード...
続きを読む>>Ajax Tooltipでスマートにポップアップさせる
Posted by kyosuke at 07/18 2007