Jak znaleźć miejsce, w którym Apache przechowuje pliki dziennika?

11

Muszę dowiedzieć się, gdzie Apache przechowuje dzienniki dostępu i błędów dla witryny.

Mam dostęp root do serwera, na którym hostowane są dziesiątki witryn. Próbuję debugować jedną z tych witryn. Gdy przeglądam stronę, nie wyświetla się ona w /var/logs/apache2/access.loglub /var/logs/apache2/error.log. (Pliki są tam i inne strony są na nich logowane. W rzeczywistości istnieją setki różnych plików dziennika).

Ani locate httpd.lognie find . -iname httpd.logwykonywano /żadnych wyników.

Konfiguracja apache dla witryny to:

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/
Ten brazylijski facet
źródło
6
To nie jest duplikat, PO powiązał z proponowanym duplikatem w samym pytaniu i wyraźnie stwierdza, że ​​nie ma informacji, w /var/log/apache2/access.logktórych sugeruje duplikat.
terdon
Spróbujsudo lsof -nP -c apache2 -c httpd | grep -i log
Stéphane Chazelas,

Odpowiedzi:

5

Możesz zapytać o jego informacje z plików dziennika Apache, ale ogólnie lepiej jest zapytać o te rzeczy z rzeczywistego pliku wykonywalnego. Analiza dzienników może być trudna i prawdopodobnie popełnisz błąd, jeśli nie znasz się na tym, jak przeprowadzono konkretną konfigurację na pudełku.

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"

Najważniejsze elementy, na które chcesz spojrzeć, są następujące.

  1. Informuje to katalog „główny”, że wszystkie pliki, do których odwołuje się Apache, zaczynają się od:

     -D HTTPD_ROOT="/etc/httpd"
    
  2. Pliki konfiguracyjne są zdefiniowane, zaczynając od tutaj. Zauważ, że ta ścieżka jest względna do ścieżki wymienionej w punkcie 1, więc tak by było /etc/httpd/conf/httpd.conf.

     -D SERVER_CONFIG_FILE="conf/httpd.conf"
    
  3. Dziennik błędów jest tutaj.

     -D DEFAULT_ERRORLOG="logs/error_log"
    

    UWAGA: Ten może być nieco mylące, ale w pierwszym dniu dystrybucji Red Hat istnieje związek, który jest często wykonana w tym katalogu, /etc/httpdnazywa logs.

    $ ls -ld /etc/httpd/logs
    lrwxrwxrwx. 1 root root 19 Jul  9  2012 /etc/httpd/logs -> ../../var/log/httpd
    
  4. Inne pliki dziennika, które mogą być wykorzystywane przez Apache będzie dalej zdefiniowane w pliku konfiguracyjnym /etc/httpd/conf/httpd.conf.

slm
źródło
1
Komenda httpd -V nie działa w Debianie 9.
Christia,
Spróbujapache2 -V
Draex_
3

Poszukaj ciągu w konfiguracji Apache ErrorLog.

Zwykle jest jeden dla samego procesu Apache. Każdy VirtualHost może również definiować własne pliki dziennika, więc również je sprawdź.

Jeśli VirtualHost nie zdefiniuje własnego pliku dziennika, użyje tego określonego w konfiguracji globalnej. Jeśli uważasz, że znalazłeś właściwy plik dziennika, ale nie widzisz potrzebnych informacji, spróbuj zwiększyć LogLevel.

bahamat
źródło
1
/etc/apache2# rgrep "ErrorLog" .wyświetla dziesiątki określonych plików konfiguracyjnych ${APACHE_LOG_DIR}/error.sitename.log, ale nie jest to jeden z nich. /etc/apache2# rgrep "LogLevel" .dostaje mi tylko kilka domyślnych plików.
Ten Brazylijczyk
2
Na Debianie ${APACHE_LOG_DIR}jest /var/log/apache2domyślnie zdefiniowany . Sprawdź, /etc/defaults/apache2czy został zmieniony.
bahamat
Jeśli nie ma LogLevelzestawu dla konkretnego VirtualHost, możesz go dodać.
bahamat
1

Właśnie znalazłem plik, /etc/apache2/conf.d/other-vhosts-access-logktóry zawiera

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

Wygląda na to, że jest to sposób na połączenie wszystkich dzienników z hostów vhost w jednym pliku. Sprawdziłem i rejestrowano tam dostęp.

( źródło )

Wstawienie ErrorLog i dyrektywy AccessLog w pliku konfiguracyjnym dla tej witryny zapewniło mi osobne pliki dziennika.

Ten brazylijski facet
źródło