mod_fcgidにおけるアクセス向上とSSLのエラー対処 - Rails
>>前の記事: 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でスマートにポップアップさせる
コメント (⇒ログイン)
今のところコメントはありませんー
だれか書いてー

