ฉันจะค้นหาตำแหน่งที่ Apache จัดเก็บไฟล์บันทึกได้อย่างไร


11

ฉันต้องการค้นหาว่าApache กำลังเก็บบันทึกการเข้าถึงและข้อผิดพลาดไว้ที่ไหนสำหรับเว็บไซต์

ฉันมีสิทธิ์เข้าถึงรูทไปยังเซิร์ฟเวอร์ที่โฮสต์ไซต์หลายสิบแห่ง ฉันพยายามที่จะแก้ปัญหาหนึ่งในเว็บไซต์เหล่านั้น เมื่อฉันเรียกดูเว็บไซต์ก็ไม่ได้แสดงบนหรือ/var/logs/apache2/access.log /var/logs/apache2/error.log(ไฟล์อยู่ที่นั่นและไซต์อื่น ๆ เข้าสู่ระบบในความเป็นจริงมีไฟล์บันทึกที่แตกต่างกันหลายร้อยรายการ)

ทั้งlocate httpd.logมิได้find . -iname httpd.logดำเนินการใน/ประเด็นผลใด ๆ

การกำหนดค่า apache สำหรับไซต์คือ:

ServerName REDACTED.com.br
DocumentRoot /var/www/xyz/wiki
AssignUserId xyz_wiki xyz_wiki

<Directory /var/www/xyz/wiki/data>
order allow,deny
deny from all
</Directory>
<Directory /var/www/xyz/wiki/conf>
order allow,deny
deny from all
</Directory>
<Directory /var/www/xyz/wiki/bin>
order allow,deny
deny from all
</Directory>
<Directory /var/www/xyz/wiki/inc>
order allow,deny
deny from all
</Directory>

php_admin_value open_basedir /var/www/xyz/wiki/:/mnt/vdImagem/www/xyz/wiki/

6
นี่ไม่ใช่การล่อลวง, OP ได้เชื่อมโยงกับการทำซ้ำที่เสนอในคำถามนั้นเองและระบุอย่างชัดเจนว่าข้อมูลไม่ได้อยู่ใน/var/log/apache2/access.logสิ่งที่ซ้ำซ้อนแนะนำ
terdon

ลองsudo lsof -nP -c apache2 -c httpd | grep -i log
Stéphane Chazelas

คำตอบ:


5

คุณสามารถสอบถามเกี่ยวกับข้อมูลของเขาจากไฟล์บันทึกของ Apache แต่โดยทั่วไปจะดีกว่าหากคุณสอบถามสิ่งเหล่านี้จากการปฏิบัติการจริง การแยกวิเคราะห์บันทึกอาจมีความยุ่งยากและคุณอาจจะทำผิดพลาดหากคุณไม่คุ้นเคยกับการตั้งค่าบางอย่างในกล่อง

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"

รายการสำคัญที่คุณต้องการดูมีดังนี้

  1. สิ่งนี้จะบอกคุณไดเรกทอรี "root" ที่ไฟล์ทั้งหมด Apache จะอ้างอิงเริ่มต้นจาก:

     -D HTTPD_ROOT="/etc/httpd"
    
  2. ไฟล์ config ถูกกำหนดเริ่มต้นที่นี่ โปรดทราบว่าเส้นทางนี้จะสัมพันธ์กับเส้นทางที่กล่าวถึงใน # 1 /etc/httpd/conf/httpd.confจึงจะ

     -D SERVER_CONFIG_FILE="conf/httpd.conf"
    
  3. บันทึกข้อผิดพลาดอยู่ที่นี่

     -D DEFAULT_ERRORLOG="logs/error_log"
    

    หมายเหตุ: หนึ่งนี้อาจจะมีบิตสับสนในตอนแรก แต่ใน distros Red Hat มีการเชื่อมโยงที่มักจะทำในไดเรกทอรีนี้เรียกว่า/etc/httpdlogs

    $ ls -ld /etc/httpd/logs
    lrwxrwxrwx. 1 root root 19 Jul  9  2012 /etc/httpd/logs -> ../../var/log/httpd
    
  4. ไฟล์บันทึกอื่น ๆ ที่อาปาเช่อาจใช้จะถูกกำหนดเพิ่มเติมในไฟล์ปรับแต่ง, /etc/httpd/conf/httpd.conf.


1
คำสั่ง httpd -V ใช้ไม่ได้กับ Debian 9
Christia

ลองapache2 -V
Draex_

3

มองในการกำหนดค่าของ Apache ErrorLogสตริง

โดยปกติจะมีกระบวนการหนึ่งสำหรับกระบวนการ Apache เอง VirtualHost แต่ละตัวยังสามารถกำหนดไฟล์บันทึกของตนเองเพื่อตรวจสอบไฟล์เหล่านั้นด้วย

หาก VirtualHost ไม่ได้กำหนดไฟล์บันทึกของตัวเองมันจะใช้ไฟล์ที่ระบุในการกำหนดค่าทั่วโลก หากคุณคิดว่าคุณได้พบแฟ้มบันทึกที่ถูกต้อง LogLevelแต่คุณไม่เห็นข้อมูลที่คุณต้องการแล้วลองเพิ่ม


1
/etc/apache2# rgrep "ErrorLog" .แสดงไฟล์ config หลายไฟล์ที่ระบุ${APACHE_LOG_DIR}/error.sitename.logแต่นี่ไม่ใช่หนึ่งในนั้น /etc/apache2# rgrep "LogLevel" .ทำให้ฉันได้รับไฟล์เริ่มต้นเพียงไม่กี่
Guy บราซิลนั่น

2
บนเดเบียน${APACHE_LOG_DIR}ถูกกำหนด/var/log/apache2โดยค่าเริ่มต้น ตรวจสอบ/etc/defaults/apache2ว่ามีการเปลี่ยนแปลงหรือไม่
บาฮามาต

หากไม่มีการLogLevelตั้งค่าสำหรับ VirtualHost เฉพาะคุณสามารถเพิ่มได้
บาฮามาต

1

ฉันเพิ่งพบไฟล์/etc/apache2/conf.d/other-vhosts-access-logที่มี

# Define an access log for VirtualHosts that don't define their own logfile
CustomLog ${APACHE_LOG_DIR}/other_vhosts_access.log vhost_combined

ดูเหมือนว่าเป็นวิธีการรวมบันทึกทั้งหมดจาก vhosts ในไฟล์เดียว ฉันตรวจสอบแล้วและมีการบันทึกการเข้าถึงที่นั่น

(ที่มา )

การแทรก ErrorLog และคำสั่ง AccessLog ในไฟล์กำหนดค่าสำหรับไซต์นั้นให้ฉันมีไฟล์บันทึกแยกต่างหาก

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