Wie aktiviere ich das Fehlerprotokoll in lighttpd richtig?

12

Ich habe ein Centos 5-System mit Lighttpd und aktiviertem Fastcgi. Der Zugriff wird protokolliert, Fehler werden jedoch nicht protokolliert. Ich habe Internal Server Error 500 und keine Informationen im Protokoll und wenn ich versuche, nicht vorhandene Datei zu öffnen, auch - keine Informationen im Fehlerprotokoll. Wie kann ich es richtig aktivieren?

Unten finden Sie eine Liste der Module, die ich aktiviert habe:

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" )

Hier sind die Einstellungen für das Debuggen:

## 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"

Pfad zu Fehler und Zugriffsprotokoll festlegen:

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

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

Einstellungen von 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"
                         )
                 )))

Und in der mitgelieferten Konfigurationsdatei habe ich:

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

Was kommt zu Protokolldateien:

/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

Ich habe die Fehlerprotokolle chmod 777 ausgegeben, um zu überprüfen, ob es das Problem ist, aber anscheinend ist es das nicht.

Meine Frage lautet also: Was ist zu tun, um das Fehlerprotokoll zu aktivieren?

Tomasz Smykowski
quelle

Antworten:

8

Im Gegensatz zu Apache und nginx können Sie in lighttpd keine Protokolldateien pro virtuellem Host für Fehlermeldungen verwenden. server.errorlogDie Variable ist in lighttpd global. Weitere Informationen finden Sie unter Featureanforderung # 665 .

Emre Yazici
quelle
7

Ihr error_log scheint gut konfiguriert zu sein.

Haben Sie versucht, Ihren lighttpd-Prozess zu lsofen, um festzustellen, ob das error_log geöffnet ist?

lsof -p `pidof lighttpd`

Versuchen Sie andererseits, denselben Prozess zu straffen, während ein interner Fehler auftritt:

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

Schauen Sie sich strace.out an. Dies kann nicht nur hilfreich sein, um herauszufinden, warum das Fehlerprotokoll nicht geschrieben wird, sondern auch, um das interne Serverfehlerproblem selbst zu debuggen.

Wenden Sie dasselbe "Rezept" auf die Fastcgi-Prozesse an. Ich vermute, dass dies mit Verbindungen zusammenhängt, die zwischen lighttpd- und fastcgi-Prozessen fehlschlagen.

Hoffe das hilft.

Marco Ramos
quelle
Vielen Dank, ich werde lsof versuchen, und um dies zu tun, warte ich immer noch auf den Fehler.
Tomasz Smykowski
Ich habe lsof auf einem von vielen Apache-Prozessen ausprobiert, die ich auf meinem System habe, und es hat kein offenes Fehlerprotokoll. Aber jetzt habe ich diese Fehlersituation noch nicht.
Tomasz Smykowski