Назад | Перейти на главную страницу

Ошибка apache и журналы доступа отсутствуют. В чем может быть причина и как их воссоздать?

Мне дали задание понять, почему 2 веб-сервера CentOS, на которых запущен apache 2.2.3, в определенных случаях испытывают очень высокие нагрузки. Первое, что я проверил, было /var/log/messages но потом я понял, что rsyslog по какой-то причине отключен, поэтому я его запустил и включил с помощью chkconfig. Затем я хотел проверить ошибки apache и журналы доступа, поэтому я перешел на /var/log/httpd но обнаружил, что папка пуста. Я проверил /etc/httpd/conf/httpd.conf и увидел эти строки:

ErrorLog logs/error_log
CustomLog logs/access_log combined

Насколько я знаю, это относится к /var/log/httpd/ но, как было сказано ранее, папка пуста. При написании этого вопроса я искал версию httpd на сервере и запускал httpd -v и вот ответ, который я получил:

[root@domU-IP httpd]# httpd -v
Server version: Apache/2.2.3
Server built:   May  4 2011 06:51:15
Unable to open logs

Мои вопросы:

  1. Что могло привести к исчезновению журналов? (Возможно, они вообще не создавались)
  2. Как я могу воссоздать журналы и убедиться, что в них записываются данные?
  3. Какие разрешения следует установить на /var/log/httpd? Текущие разрешения: drwx------ 2 root root

заранее спасибо

Когда ссылки на пути в конфигурации Apache не являются абсолютными (т.е. не начинаются с /) они относятся к каталогу, установленному в ServerRoot директива. Обычное значение по умолчанию для ServerRoot является /etc/httpd изготовление /etc/httpd/logs ваш каталог журналов.

Большинство упакованных версий Apache создают символическую ссылку из /etc/httpd/logs к /var/log/httpd. Либо фактический каталог в / etc / httpd отсутствует (или корневая файловая система заполнена), либо символическая ссылка может отсутствовать в вашей настройке.

Apache запускается с правами root и открывает файлы журнала от имени пользователя root, прежде чем отбрасывать привилегии, поэтому права доступа к каталогу в / var / log / httpd кажутся правильными.

Моя проблема заключалась в том, что для журнала доступа не было директивы Log. Я следовал инструкциям здесь https://ubuntuforums.org/showthread.php?t=1704686 что в основном говорит:

В Ubuntu у вас должен быть файл с именем /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

Мне этого не хватало, поэтому я не получил логи.