以前、lighttpdでURLをrewriteというエントリーで、lighttpdのヴァーチャルホストの設定とURLのリライトルールに関して書いたけど、アクセスログとエラーログの設定が微妙に調べ切れなかったので、ちょっと調べてみた。
結局、設定名がエラーログと、アクセスログとで違う所が分かりにくくしている原因だった。
ここら辺に書いてあるんだけど、「accesslog.filename」をそのまま「error.filename」とかにするとエラーが出る。んで色々調べた結果「server.errorlog」という名前で設定すれば良かった。
以下に一応設定を書いておく、カスタムログの形式もここに書けるみたい。
$HTTP["host"] =~ "host\.example\.com" {
accesslog.format = "%h %l %u %t \"%r\" %b %>s \"%{Referer}i\" \"%{User-Agent}i\" \"%{X-LIGHTTPD-SID}o\"",
server.document-root = "/path/to/document-root/",
server.errorlog = "/path/to/error.log",
accesslog.filename = "/path/to/access.log",
url.rewrite-once = (
"^/css/(.+)?$" => "$0",
"^/img/(.+)?$" => "$0",
"^/(.+)?$" => "/index.php/$1"
)
}というか、命名ルールをもうちょっと考えて欲しかったなぁ・・・。これバージョンアップとかで変わったりするとドヨーンとした気分になるぞ orz
elanbeat’s wiki経由。lighttpdを入れてログをlogrotateしてたんですが、ちゃんと再起動してくれないみたいで、困ったなと思ってた時に見つけた物。
ま、要するにpidを保存してあるファイルを指定してあげた方が良いでっせ。という事らしい。
/path/to/lighttpd/*log {
missingok
notifempty
sharedscripts
postrotate
/bin/kill -HUP `cat /path/to/lighttpd.pid 2>/dev/null` 2> /dev/null || true
endscript
}上のようにlogrotate.dの中に置いてある設定ファイルを書く感じ。もちろんpidのファイルの場所と、ログの場所は変更する必要アリ。
ちょと、サーバーの負荷が高くなってきたのでlighttpdはどうだろうかと思って色々試している(まだ公開してないけど)。rhacoでもなんか作りたいので、rhacoがlighttpdで動作するのかとかも含めてやっとります。
今回は自分でも忘れそうな部分だけですが、設定でApacheでいうmod_rewriteのようなURL書き換え機能の設定をメモ。
何をしたいかと言えば、「http://example.com?id=1&name=hoge」とかを「http://example.com/1/hoge/」とかで処理したいわけでやんす。逆にいうと「1/hoge/」の部分をgetで渡しちゃった方がいいかなという事で以下のような設定になるそうです。
lighttpdはApacheのようなディレクトリ毎の「.htaccess」のような設定ファイルは使えないので、lighttpd.confなどのlighttpdを設定するファイルの方に書く必要があります。
$HTTP["host"] =~ "sub.example.com" {
server.document-root = "/path/to/document/root/"
url.rewrite-once = ( "^/(.+)$" => "/index.php?pathinfo=$1" )
}ちなみに、上はVirtualHostを設定していて「sub.example.com」というホストでアクセスしてきたらで、ドキュメントルートの設定とRwriteルールを設定している。また、index.phpにgetパラメータでpathinfoという名前で上記「1/hoge/」に当たる値を取れるようにしてる。
server.modules = (
"mod_rewrite",
"mod_evhost")また、上記のmoduleの部分でmod_rewriteの部分がデフォルトだとコメントアウトしてあるのでこれを外さないとダメ。モジュールの名前はmod_rewriteでApacheと同じでやんすね。
ちょと情報が錯綜しますがrhacoはlighttpdでもちゃんと動作しました(当たり前か)。メデタシメデタシ。