Мне дали задание понять, почему 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
Мои вопросы:
/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
Мне этого не хватало, поэтому я не получил логи.