Как мне найти, где Apache хранит файлы журналов?


10

Мне нужно найти, где Apache хранит журналы доступа и ошибок для сайта.

У меня есть root-доступ к серверу, на котором размещены десятки сайтов. Я пытаюсь отладить один из этих сайтов. Когда я просматриваю сайт, он не отображается на /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
Стефан Шазелас

Ответы:


4

Вы можете узнать о его информации из файлов журнала 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. Это говорит вам о «корневом» каталоге, с которого будут ссылаться все файлы, на которые ссылается 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

Посмотрите в вашей конфигурации Apache для строки 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.