Як знайти, де 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
Це не обман, ОП зв'язав із запропонованим дублікатом у самому запитанні і чітко зазначає, що інформація не в /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. Конфігураційні файли визначені, починаючи тут. Зауважте, що цей шлях відносно шляху, зазначеного в №1, так би і було /etc/httpd/conf/httpd.conf.

     -D SERVER_CONFIG_FILE="conf/httpd.conf"
    
  3. Журнал помилок тут.

     -D DEFAULT_ERRORLOG="logs/error_log"
    

    Примітка: Це один може бути трохи заплутаним на перший , але на Red Hat дистрибутивах є посилання , що часто робиться в цьому каталозі, /etc/httpdназивається logs.

    $ ls -ld /etc/httpd/logs
    lrwxrwxrwx. 1 root root 19 Jul  9  2012 /etc/httpd/logs -> ../../var/log/httpd
    
  4. Інші файли журналів , які можуть бути використані по Apache будуть визначені додатково в файлі конфігурації /etc/httpd/conf/httpd.conf.


1
Команда httpd -V не працює в Debian 9.
Christia

Спробуйтеapache2 -V
Draex_

3

Подивіться в вашому апача конфігурації для рядка ErrorLog.

Зазвичай є один для самого процесу Apache. Кожен VirtualHost також може визначати власні файли журналів, тому перевіряйте їх також.

Якщо VirtualHost не визначає власний файл журналу, він буде використовувати той, який вказаний у глобальній конфігурації. Якщо ви вважаєте, що знайшли правильний файл журналу, але не бачите потрібної інформації, спробуйте збільшити LogLevel.


1
/etc/apache2# rgrep "ErrorLog" .відображає десятки конфігураційних файлів, які задають ${APACHE_LOG_DIR}/error.sitename.log, але це не один із таких. /etc/apache2# rgrep "LogLevel" .отримує мені лише кілька файлів за замовчуванням.
Той бразильський хлопець

2
У Debian ${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 у конфігураційний файл для цього сайту надали мені окремі файли журналу.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.