Làm cách nào để tìm nơi Apache giữ các tệp nhật ký?


10

Tôi cần tìm nơi Apache đang lưu giữ các bản ghi truy cập và lỗi cho một trang web.

Tôi có quyền truy cập root vào một máy chủ nơi hàng chục trang web được lưu trữ. Tôi đang cố gắng gỡ lỗi một trong những trang web đó. Khi tôi duyệt trang web, nó không hiển thị trên /var/logs/apache2/access.loghoặc /var/logs/apache2/error.log. (Các tệp ở đó và các trang web khác được ghi lại trên đó. Trên thực tế, có hàng trăm tệp nhật ký khác nhau).

Không locate httpd.logphải cũng không được find . -iname httpd.logthực hiện tại /bất kỳ kết quả.

Cấu hình apache cho trang web là:

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
Đây không phải là một bản sao, OP đã liên kết với bản sao được đề xuất trong chính câu hỏi và nêu rõ rằng thông tin không nằm trong /var/log/apache2/access.logđó là những gì bản sao gợi ý.
terdon

Hãy thửsudo lsof -nP -c apache2 -c httpd | grep -i log
Stéphane Chazelas

Câu trả lời:


4

Bạn có thể hỏi về thông tin của anh ấy từ các tệp nhật ký của Apache nhưng nói chung là tốt hơn để hỏi về những điều này từ thực tế thực tế. Phân tích các bản ghi có thể khó và bạn có thể sẽ mắc lỗi nếu bạn không quen với cách thiết lập cụ thể được thực hiện trên một hộp.

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"

Các mục chính bạn muốn xem xét như sau.

  1. Điều này cho bạn biết thư mục "root" mà tất cả các tệp mà Apache sẽ tham chiếu bắt đầu từ:

     -D HTTPD_ROOT="/etc/httpd"
    
  2. tập tin cấu hình được xác định, bắt đầu từ đây. Lưu ý rằng đường dẫn này có liên quan đến đường dẫn được đề cập trong # 1, vì vậy nó sẽ là/etc/httpd/conf/httpd.conf .

     -D SERVER_CONFIG_FILE="conf/httpd.conf"
    
  3. Nhật ký lỗi là ở đây.

     -D DEFAULT_ERRORLOG="logs/error_log"
    

    LƯU Ý: Điều này có thể hơi khó hiểu lúc đầu nhưng trên các bản phân phối Red Hat có một liên kết thường được thực hiện trong thư mục này, /etc/httpdđược gọi là logs.

    $ ls -ld /etc/httpd/logs
    lrwxrwxrwx. 1 root root 19 Jul  9  2012 /etc/httpd/logs -> ../../var/log/httpd
    
  4. Các tệp nhật ký khác có thể được Apache sử dụng sẽ được định nghĩa thêm trong tệp cấu hình , /etc/httpd/conf/httpd.conf.


1
Lệnh httpd -V không hoạt động trên Debian 9.
Christia

Hãy thửapache2 -V
Draex_

3

Nhìn vào cấu hình apache của bạn cho chuỗi ErrorLog .

Thường có một quy trình cho chính Apache. Mỗi Virtualhost cũng có thể xác định các tệp nhật ký của riêng mình, vì vậy hãy kiểm tra cả các tệp nhật ký đó.

Nếu Virtualhost không xác định tệp nhật ký của riêng mình thì nó sẽ sử dụng tệp được chỉ định trong cấu hình toàn cầu. Nếu bạn nghĩ rằng bạn đã tìm thấy tệp nhật ký chính xác nhưng bạn không thấy thông tin bạn cần thì hãy thử tăng LogLevel.


1
/etc/apache2# rgrep "ErrorLog" .hiển thị hàng tá tệp cấu hình chỉ định ${APACHE_LOG_DIR}/error.sitename.log, nhưng đây không phải là một trong số đó. /etc/apache2# rgrep "LogLevel" .chỉ cho tôi một vài tập tin mặc định.
chàng người Brazil đó

2
Trên Debian ${APACHE_LOG_DIR}được định nghĩa /var/log/apache2theo mặc định. Kiểm tra /etc/defaults/apache2xem nó đã được thay đổi.
bahamat

Nếu không có LogLevelthiết lập cho một Virtualhost cụ thể, bạn có thể thêm một.
bahamat

1

Tôi vừa tìm thấy một tập tin /etc/apache2/conf.d/other-vhosts-access-logcó chứa

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

Có vẻ như đó là một cách để kết hợp tất cả các bản ghi từ vhost trong một tệp duy nhất. Tôi đã kiểm tra và các truy cập đã được ghi lại ở đó.

( nguồn )

Chèn một ErrorLog và một lệnh AccessLog trên tệp cấu hình cho trang web đó đã cung cấp cho tôi các tệp nhật ký riêng biệt.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.