Apache ไม่สามารถโหลดซ้ำ ... มีบันทึกที่ฉันสามารถดูรายละเอียดได้หรือไม่


12

ฉันมีเว็บเซิร์ฟเวอร์ที่ฉันกำลังเพิ่มไซต์อยู่

หลังจากวิ่งa2ensiteฉันวิ่งservice apache2 reloadและได้สิ่งนี้:

[FAIL] การโหลดเว็บเซิร์ฟเวอร์ใหม่อีกครั้ง: apache2 ล้มเหลว!

มีไฟล์บันทึกที่ฉันสามารถค้นหารายละเอียดเพิ่มเติมได้หรือไม่

คำตอบ:


9

คุณสามารถดูว่าhttpdมีการกำหนดค่าให้ค้นหาไฟล์กำหนดค่าโดยใช้-Vสวิตช์ได้ที่:

$ httpd -V
Server version: Apache/2.2.15 (Unix)
Server built:   Feb 13 2012 22:31:42
Server's Module Magic Number: 20051115:24
Server loaded:  APR 1.3.9, APR-Util 1.3.9
Compiled using: APR 1.3.9, APR-Util 1.3.9
Architecture:   64-bit
Server MPM:     Prefork
  threaded:     no
    forked:     yes (variable process count)
Server compiled with....
 -D APACHE_MPM_DIR="server/mpm/prefork"
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
 -D APR_USE_SYSVSEM_SERIALIZE
 -D APR_USE_PTHREAD_SERIALIZE
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D DYNAMIC_MODULE_LIMIT=128
 -D HTTPD_ROOT="/etc/httpd"
 -D SUEXEC_BIN="/usr/sbin/suexec"
 -D DEFAULT_PIDLOG="run/httpd.pid"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_LOCKFILE="logs/accept.lock"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="conf/mime.types"
 -D SERVER_CONFIG_FILE="conf/httpd.conf"

คุณยังสามารถใช้คำสั่งlsofเพื่อดูว่าไฟล์ใดที่กระบวนการ Unix กำลังเข้าถึง เวอร์ชันของฉันhttpdกำลังใช้พอร์ตหุ้น 80 ดังนั้นเปลี่ยน 80 เป็น 8443 ในกรณีของคุณ!

$ netstat -tapn|grep ::80
tcp        0      0 :::80                       :::*                        LISTEN      5338/httpd     

ตอนนี้คุณสามารถเรียกใช้lsofเพื่อค้นหาตำแหน่งที่ไฟล์บันทึกกำลังถูกเขียนไปที่:

$ lsof -p 5338|grep log
httpd   5338 root  mem    REG  253,0    10440   3141 /usr/lib64/httpd/modules/mod_logio.so
httpd   5338 root  mem    REG  253,0    27200   3139 /usr/lib64/httpd/modules/mod_log_config.so
httpd   5338 root    2w   REG  253,0     2014 395029 /var/log/httpd/error_log
httpd   5338 root    7w   REG  253,0     4140 394789 /var/log/httpd/access_log

คุณควรจะสามารถระบุตำแหน่งของaccess_logไฟล์การตั้งค่าและดูผ่านเพื่อกำหนดคำสั่ง "Directory" และ "Location" สิ่งเหล่านี้ระบุสิ่งที่ไดเรกทอรีท้องถิ่นที่จะใช้เมื่อบอก Apache ไฟล์ที่จะให้บริการ

ตอนนี้คืออะไร

ฉันจะดูผ่านaccess_logเพื่อให้แน่ใจว่ามีรายการอยู่ในนั้นที่สอดคล้องกับการเข้าถึงเซิร์ฟเวอร์ สิ่งที่ฉันหมายถึงคือถ้าฉันเรียกดูเซิร์ฟเวอร์ที่http://www.somedom.com/somefileฉันควรเห็นการเข้าถึงที่บันทึกไว้ในaccess_logไฟล์เช่นนี้:

192.168.1.110 - - [17/Jul/2013:14:39:50 -0400] "GET /somefile HTTP/1.1" 200 4303 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/5
37.36 (KHTML, like Gecko) Chrome/27.0.1453.110 Safari/537.36"

ไฟล์อยู่ที่ไหน

คุณสามารถนำความรู้ข้างต้นที่เราได้รับมาและเริ่มนำไปใช้เช่น:

บิตเหล่านี้จากhttpd -Vบอกรากของ Apache:

-D HTTPD_ROOT="/etc/httpd"
-D SERVER_CONFIG_FILE="conf/httpd.conf"

ดังนั้นเราจึงรู้ว่าไฟล์กำหนดค่าหลักอยู่ที่นี่: /etc/httpd/conf/httpd.conf. ดังนั้นให้มองผ่านไฟล์นั้นสำหรับบรรทัดเหล่านี้:

$ grep -E "DocumentRoot|Directory \"|^Include" /etc/httpd/conf/httpd.conf |grep -v "^#"
Include conf.d/*.conf
DocumentRoot "/var/www/html"
<Directory "/var/www/html">
<Directory "/var/www/icons">
<Directory "/var/www/cgi-bin">
    <Directory "/var/www/error">

access_logดังนั้นตอนนี้ฉันรู้ว่าไดเรกทอรีเหล่านี้เป็นแหล่งที่มีศักยภาพสำหรับไฟล์ที่เราเห็นใน DocumentRootและฉันมองผ่านไฟล์Directories somefileถ้ามันไม่ได้อยู่ในสถานที่ใด ๆ เหล่านี้แล้วผมโฟกัสต่อไปในIncludeไดเรกทอรีดังกล่าวข้างต้นในการส่งออกgrep/etc/httpd/conf.d/*.conf

ไฟล์เหล่านี้เป็นการกำหนดค่าเพิ่มเติมที่ Apache ใช้ดังนั้นคุณต้องทำซ้ำขั้นตอนโดยใช้grepเพื่อค้นหาไฟล์เหล่านี้เช่นกัน


14

หากคุณไม่พบไฟล์บันทึกหรือไฟล์บันทึกว่างเปล่าคุณสามารถเรียกใช้การทดสอบการกำหนดค่า apache ที่จะพิมพ์ปัญหาใด ๆ กับไฟล์การกำหนดค่า:

apachectl configtest

2

service apache2 restartวิ่ง มันจะแสดงข้อความข้อผิดพลาดใด ๆ (โดยปกติแล้วบริการจะเรียกใช้การทดสอบการกำหนดค่าก่อนที่จะหยุดและเริ่มต้น Apache)

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