วิธีการเปิดใช้งานบันทึกข้อผิดพลาดใน lighttpd อย่างถูกต้อง?


12

ฉันมีระบบ Centos 5 ที่เปิดใช้งาน Lighttpd และ fastcgi มันเข้าสู่ระบบ แต่ไม่เข้าสู่ข้อผิดพลาด ฉันมีข้อผิดพลาดเซิร์ฟเวอร์ภายใน 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"
                         )
                 )))

และในไฟล์ config ที่ฉันมี:

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 ของคุณเพื่อดูว่ามีการเปิด error_log หรือไม่?

lsof -p `pidof lighttpd`

ในทางกลับกันลอง strace กระบวนการเดียวกันในขณะที่บังคับให้เกิดข้อผิดพลาดภายใน:

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

ลองดูที่ strace.out สิ่งนี้อาจมีประโยชน์ไม่เพียง แต่การค้นพบสาเหตุที่ error_log ไม่ได้ถูกเขียน แต่ยังแก้ไขข้อผิดพลาดของเซิร์ฟเวอร์ภายในด้วยตนเอง

ใช้ "สูตร" เดียวกันกับกระบวนการ fastcgi ฉันเดาว่านี่คือสิ่งที่เกี่ยวข้องกับการเชื่อมต่อที่ล้มเหลวระหว่างกระบวนการ lighttpd และ fastcgi

หวังว่านี่จะช่วยได้


ขอบคุณฉันจะลอง lsof และทำ strace ฉันยังรอข้อผิดพลาดเกิดขึ้น
Tomasz Smykowski

ฉันลอง lsof ในหนึ่งในหลาย ๆ กระบวนการ apache ที่ฉันมีในระบบของฉันและมันไม่มีบันทึกข้อผิดพลาดแบบเปิด แต่ตอนนี้ฉันยังไม่มีสถานการณ์ข้อผิดพลาดนี้
Tomasz Smykowski
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.