lighttpdでエラーログを適切に有効にする方法


12

Lighttpdとfastcgiが有効になっているCentos 5システムがあります。アクセスは記録しますが、エラーは記録しません。内部サーバーエラー500があり、ログに情報がありません。また、存在しないファイルも開こうとすると、エラーログに情報がありません。適切に有効にする方法は?

以下は、私が有効にしたモジュールのリストです。

server.modules              = (
                               "mod_rewrite",
                               "mod_redirect",
                               "mod_alias",
#                                "mod_access",
#                               "mod_cml",
#                               "mod_trigger_b4_dl",
#                               "mod_auth",
                               "mod_status",
                               "mod_setenv",
                               "mod_fastcgi",
#                               "mod_webdav",
#                               "mod_proxy_core",
#                               "mod_proxy_backend_fastcgi",
#                               "mod_proxy_backend_scgi",
#                               "mod_proxy_backend_ajp13",
#                               "mod_simple_vhost",
#                               "mod_evhost",
#                               "mod_userdir",
#                               "mod_cgi",
#                               "mod_compress",
#                               "mod_ssi",
#                               "mod_usertrack",
#                               "mod_expire",
#                               "mod_secdownload",
#                               "mod_rrdtool",
                                "mod_accesslog" )

デバッグの設定は次のとおりです。

## enable debugging
#debug.log-request-header     = "enable"
#debug.log-response-header    = "enable"
#debug.log-request-handling   = "enable"
debug.log-file-not-found     = "enable"
#debug.log-condition-handling = "enable"

エラーおよびアクセスログへのパスの設定:

## where to send error-messages to
server.errorlog             = "/home/lxadmin/httpd/lighttpd/error.log"

#### accesslog module
accesslog.filename          = "/home/lxadmin/httpd/lighttpd/ligh.log"

fastcgiの設定:

fastcgi.debug = 1

fastcgi.server = ( ".php" => ((
                     "bin-path" => "/usr/bin/php-cgi",
                     "socket" => "/tmp/php.socket",
                     "max-procs" => 12,
                     "bin-environment" => (
                         "PHP_FCGI_CHILDREN" => "2",
                         "PHP_FCGI_MAX_REQUESTS" => "500"
                         )
                 )))

そして含まれている設定ファイルには次のものがあります:

server.errorlog    =  "/home/httpd/mywebsite.com/stats/mywebsite.com-error_log"

ログファイルの内容:

/home/httpd/mywebsite.com/stats/
-rw-r--r-- 1 apache apache 5173239 May 16 11:34 mywebsite.com-custom_log
-rwxrwxrwx 1 root   root         0 Mar 27  2009 mywebsite.com-error_log

/home/lxadmin/httpd/lighttpd/
-rwxrwxrwx  1 apache apache    2184 Apr 22 22:59 error.log
-rwxrwxrwx  1 apache apache 6088621 May 16 11:26 ligh.log

エラーかどうかを確認するためにエラーログchmod 777を発行しましたが、明らかにそうではありません。

だから私の質問は次のとおりです。エラーログを有効にするにはどうすればよいですか。

回答:


8

Apacheやnginxとは異なり、lighttpdのエラーメッセージに仮想ホストごとのログファイルを使用することはできません。server.errorlog変数はlighttpdでグローバルです。詳細については、機能リクエスト#665を参照してください。


7

error_logは適切に構成されているようです。

lighttpdプロセスをlsofして、error_logが開かれているかどうかを確認しましたか?

lsof -p `pidof lighttpd`

一方、内部エラーを強制的に発生させながら、同じプロセスを追跡してみてください。

strace -o strace.out -p `pidof lighttpd` 

strace.outを見てください。これは、error_logが書き込まれない理由を発見するだけでなく、内部サーバーエラーの問題自体をデバッグするのにも役立つ場合があります。

fastcgiプロセスに同じ「レシピ」を適用します。私の推測では、これはlighttpdプロセスとfastcgiプロセス間の接続の失敗に関連していると思われます。

お役に立てれば。


ありがとう、私はlsofを試します、そして、straceをするために、私はまだエラーが発生するのを待ちます。
トマススミコフスキー

私のシステムにある多くのApacheプロセスの1つでlsofを試しましたが、オープンエラーログがありません。しかし、今はまだこのエラー状況はありません。
トマススミコフスキー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.