Apache не перезагружается … Есть ли журнал, в который я могу заглянуть?

У меня есть веб-сервер, над которым я работаю над добавлением сайта.

После запуска a2ensite я запустил service apache2 reload и получил следующее:

[FAIL] Перезагрузка конфигурации веб-сервера: ошибка apache2!

Есть ли файл журнала, который я могу найти для более подробной информации?

Вы можете увидеть, где 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" 

Вы также можете использовать команду lsof для просмотра файлов, к которым обращается процесс Unix. Моя версия httpd использует порт запаса 80, поэтому измените 80 на 8443 в вашем случае!

 $ netstat -tapn|grep ::80 tcp 0 0 :::80 :::* LISTEN 5338/httpd 

Теперь вы можете запустить lsof чтобы узнать, где записываются файлы журнала:

 $ lsof -p 5338|grep log httpd 5338 root mem REG 253,0 10440 3141 /usr/lib64/httpd/modules/mod_logio.so httpd 5338 root mem REG 253,0 27200 3139 /usr/lib64/httpd/modules/mod_log_config.so httpd 5338 root 2w REG 253,0 2014 395029 /var/log/httpd/error_log httpd 5338 root 7w REG 253,0 4140 394789 /var/log/httpd/access_log 

Вы должны определить местоположение access_log а также файлы конфигурации и просмотреть их, чтобы определить директивы «Directory» и «Location». Они определяют, какие локальные каталоги использовать при передаче Apache файлам.

Что теперь?

Затем я просмотрел access_log чтобы убедиться, что там есть записи, соответствующие обращениям к серверу. Что я имею в виду, если я просматриваю сервер по адресу http://www.somedom.com/somefile я должен увидеть этот доступ, записанный в файле access_log следующим образом:

 192.168.1.110 - - [17/Jul/2013:14:39:50 -0400] "GET /somefile HTTP/1.1" 200 4303 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/5 37.36 (KHTML, like Gecko) Chrome/27.0.1453.110 Safari/537.36" 

Где файлы?

Вы можете взять вышеуказанные знания, которые мы приобрели, и начать применять их так:

Эти биты из httpd -V нам об этом Apache:

 -D HTTPD_ROOT="/etc/httpd" -D SERVER_CONFIG_FILE="conf/httpd.conf" 

Итак, мы знаем, что основной файл конфигурации находится здесь: /etc/httpd/conf/httpd.conf . Поэтому просмотрите этот файл для этих строк:

 $ grep -E "DocumentRoot|Directory \"|^Include" /etc/httpd/conf/httpd.conf |grep -v "^#" Include conf.d/*.conf DocumentRoot "/var/www/html" <Directory "/var/www/html"> <Directory "/var/www/icons"> <Directory "/var/www/cgi-bin"> <Directory "/var/www/error"> 

Поэтому теперь я знаю, что эти каталоги являются потенциальными источниками для файла, который мы видели в access_log . DocumentRoot и somefile , somefile я просмотрел для файла, somefile . Если он не находится ни в одном из этих мест, тогда я бы сосредоточил внимание на каталоге Include упомянутом выше в выводе grep , /etc/httpd/conf.d/*.conf .

Эти файлы являются дополнительными конфигурациями, которые Apache использует, поэтому вам нужно будет повторить шаги, используя grep чтобы просмотреть эти файлы.

Если вы не можете найти файл журнала или файл журнала пуст, вы можете запустить тест конфигурации apache, который будет распечатывать любые проблемы с файлами конфигурации:

 apachectl configtest 

Запустите service apache2 restart . Он отобразит любое сообщение об ошибке (обычно служба запускает тест конфигурации перед остановкой и запуском apache)