Jak poprawnie włączyć dziennik błędów w lighttpd?

12

Mam system Centos 5 z włączoną funkcją Lighttpd i fastcgi. Zapewnia dostęp do dziennika, ale nie rejestruje błędów. Mam błąd wewnętrzny serwera 500 i brak informacji w dzienniku, a gdy próbuję otworzyć nieistniejący plik - brak informacji w dzienniku błędów. Jak włączyć to poprawnie?

Poniżej znajduje się lista modułów, które włączyłem:

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

Oto ustawienia debugowania:

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

Ustawienie ścieżki do dziennika błędów i dostępu:

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

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

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

I w dołączonym pliku konfiguracyjnym mam:

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

Co przychodzi do plików dziennika:

/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

Dałem dzienniki błędów chmod 777, aby spróbować sprawdzić, czy to jest problem, ale najwyraźniej tak nie jest.

Więc moje pytanie brzmi: co zrobić, aby włączyć dziennik błędów?

Tomasz Smykowski
źródło

Odpowiedzi:

8

W przeciwieństwie do Apache i nginx, nie można używać plików dziennika hosta wirtualnego do komunikatów o błędach w lighttpd. server.errorlogzmienna jest globalna w lighttpd, zobacz więcej szczegółów Żądanie funkcji # 665 .

Emre Yazici
źródło
7

Twój dziennik błędów wydaje się być dobrze skonfigurowany.

Czy próbowałeś lsof procesu lighttpd, aby zobaczyć, czy ma otwarty dziennik błędów?

lsof -p `pidof lighttpd`

Z drugiej strony spróbuj zastosować ten sam proces, jednocześnie zmuszając do wystąpienia błędu wewnętrznego:

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

Spójrz na strace.out. Może to być przydatne nie tylko do odkrycia, dlaczego dziennik_błędów nie jest zapisywany, ale także do debugowania samego problemu z błędem serwera wewnętrznego.

Zastosuj ten sam „przepis” do procesów fastcgi. Domyślam się, że jest to związane z nieudanymi połączeniami między procesami lighttpd i fastcgi.

Mam nadzieję że to pomoże.

Marco Ramos
źródło
Dziękuję, spróbuję lsof i do zrobienia strace wciąż czekam na wystąpienie błędu.
Tomasz Smykowski
Próbowałem lsof na jednym z wielu procesów Apache, które mam w moim systemie i nie ma otwartego dziennika błędów. Ale teraz nie mam tej sytuacji błędu.
Tomasz Smykowski