徒然日記
2004年8月9日(月) [長年日記]
■ [linux] mod_rubyが変?
LL weekendで前田さんにお会いしまして、かずひこさんと「今朝mod?ruby-1.2.1リリースしましたよ〜」と話していたのを聞いて、初めて前田さんがmod_rubyの作者様だと知った俺。(ぉぃ
いい機会だったのだ(どんな機会だよ)家に帰ってmod_rubyを入れてみました
が、いくつかおかしな点が。
ちなみに環境はMomonga Linux 1をベースに
httpd-2.0.50
ruby-1.8.2 preview2
mod_ruby-1.2.1+前田さんによるpatch
■ mod_rewrite
まずはmod_rewrite
httpd.confの中でmod_rewriteを使う分には何も問題がないのだけど
.htaccessの中で使おうとすると403エラーになってしまう。そのときのエラーログは以下の通り
[Sun Aug 08 21:18:56 2004] [error] [client 192.168.1.2] Options FollowSymLinks or SymLinksIfOwnerMatch is off which implies that RewriteRule directive is forbidden: /home/mitsuru/public_html/diary/index.rb, referer: http://smbd.jp/diary/
httpd.confでuserdirは
Options Multviews all AllowOvverride all
しているのにこんなエラーが…
一応.htaccessの中で"Options +FollowSykLinks"してみたけど、同じでした
ここの2002/10/05によるとmod_perlでも同じような問題があるそうで
これはapache側の問題なのかもしれないけど…
でもphpじゃ発生しないよねぇ。うーん
■ 死なない
mod_rubyを組み込むと/etc/init.d/httpd stopしてもプロセスが残ります
keepaliveを有効にしてるので、死ぬのが遅くなってるのかと思って
netstat -taして眺めていたのですが
なぜか新規接続が…
で、自分で繋いでみたら確かにESTABLISHEDになります
ブラウザ側はページが表示されるわけではなく、かといってhttpdが上がっていないときの様に即エラーとなるわけではなく
コネクションタイムアウトになるまで放置されると言った感じですね
で、いつまで経っても終了しなく
/etc/init.d/httpd startすると
Starting httpd: (98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
と言われてしまう。
ここでもう一度/etc/init.d/httpd stopすると全部死んでくれて、/etc/init.d/httpd startするとちゃんと上がってきます
つまり2回stopしないと、完全に死んでくれないで中途半端になります
httpd -k stopでも状況は同じような感じで
1回目は同じなのですが2回目は
httpd (no pid file) not running
と言われてしまって、殺すことが出来ません
ここで/etc/init.d/httpd stopすれば完全に殺せますけどね
前田さんはdebian使いだそうで、fedora系の/etc/init.dの構造は知らないかもしれないので
一応見れる様にしておきますねhttpd_init, functions
(16:56)