I’m looking for a command that checks the validity of the config files in Apache server on both Debian and RHEL distros. I need to do this prior to restart, so there will be no downtime.
ivanleoncz
1,6335 gold badges19 silver badges32 bronze badges
asked Feb 7, 2011 at 10:14
answered Feb 7, 2011 at 10:16
keatchkeatch
4,4261 gold badge15 silver badges3 bronze badges
4
The Apache config test (apachectl configtest
, or its equivalents) only tests the config file (and the files it recursively includes) for valid syntax. However, the original question asked for preventing downtime. Even when apachectl configtest
does not return an error, an actual restart may still fail, causing downtime.
Common causes for such failures include missing or inaccessible SSL certificates, missing directories for log files or a missing website root directory. Often, such errors are caused by removing a vhost’s directory without removing the vhost Apache config file. It is highly recommended to use a tool like puppet or ansible to prevent such inconsistencies.
Seeing that this question is the number one hit when googling «apache config lint» I thought I’d mention this little detail…
answered Feb 19, 2019 at 11:39
BertDBertD
2612 silver badges3 bronze badges
9
apachectl configtest
is the correct answer.
Unfortunately I’ve got a windows installation where apachectl is missing.
Here calling httpd
also helps.
answered Nov 16, 2015 at 6:09
Matthias MMatthias M
2212 silver badges4 bronze badges
What I usually do is
apache2ctl -t && apache2ctl graceful
answered Jun 21, 2020 at 10:40
mivkmivk
3,8643 gold badges37 silver badges32 bronze badges
2
There is always a good idea to take a look at the error logs.
less /var/log/httpd/error_log
— Paul
answered Dec 6, 2022 at 11:30
1
I have actually tried before:
apachectl configtest
We can actually see the status code to know the error:
/etc/init.d/apache2 restart; systemctl status apache2.service
● apache2.service — The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; disabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Sun 2021-05-30 17:16:45 +08; 41ms ago
Docs: https://httpd.apache.org/docs/2.4/
Process: 168391 ExecStart=/usr/sbin/apachectl start (code=exited, status=1/FAILURE)
CPU: 67msMay 30 17:16:45 kali systemd[1]: Starting The Apache HTTP Server…
May 30 17:16:45 kali apachectl[168394]: AH00526: Syntax error on line
13 of /etc/apache2/mods-enabled/security2.conf
answered May 30, 2021 at 9:17
Alvin567Alvin567
1111 silver badge7 bronze badges
I’m looking for a command that checks the validity of the config files in Apache server on both Debian and RHEL distros. I need to do this prior to restart, so there will be no downtime.
ivanleoncz
1,6335 gold badges19 silver badges32 bronze badges
asked Feb 7, 2011 at 10:14
answered Feb 7, 2011 at 10:16
keatchkeatch
4,4261 gold badge15 silver badges3 bronze badges
4
The Apache config test (apachectl configtest
, or its equivalents) only tests the config file (and the files it recursively includes) for valid syntax. However, the original question asked for preventing downtime. Even when apachectl configtest
does not return an error, an actual restart may still fail, causing downtime.
Common causes for such failures include missing or inaccessible SSL certificates, missing directories for log files or a missing website root directory. Often, such errors are caused by removing a vhost’s directory without removing the vhost Apache config file. It is highly recommended to use a tool like puppet or ansible to prevent such inconsistencies.
Seeing that this question is the number one hit when googling «apache config lint» I thought I’d mention this little detail…
answered Feb 19, 2019 at 11:39
BertDBertD
2612 silver badges3 bronze badges
9
apachectl configtest
is the correct answer.
Unfortunately I’ve got a windows installation where apachectl is missing.
Here calling httpd
also helps.
answered Nov 16, 2015 at 6:09
Matthias MMatthias M
2212 silver badges4 bronze badges
What I usually do is
apache2ctl -t && apache2ctl graceful
answered Jun 21, 2020 at 10:40
mivkmivk
3,8643 gold badges37 silver badges32 bronze badges
2
There is always a good idea to take a look at the error logs.
less /var/log/httpd/error_log
— Paul
answered Dec 6, 2022 at 11:30
1
I have actually tried before:
apachectl configtest
We can actually see the status code to know the error:
/etc/init.d/apache2 restart; systemctl status apache2.service
● apache2.service — The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; disabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Sun 2021-05-30 17:16:45 +08; 41ms ago
Docs: https://httpd.apache.org/docs/2.4/
Process: 168391 ExecStart=/usr/sbin/apachectl start (code=exited, status=1/FAILURE)
CPU: 67msMay 30 17:16:45 kali systemd[1]: Starting The Apache HTTP Server…
May 30 17:16:45 kali apachectl[168394]: AH00526: Syntax error on line
13 of /etc/apache2/mods-enabled/security2.conf
answered May 30, 2021 at 9:17
Alvin567Alvin567
1111 silver badge7 bronze badges
11 января, 2018 1:44 пп
4 823 views
| Комментариев нет
Linux, VPS
Apache – это популярный веб-сервер с открытым исходным кодом, который отличается гибкостью, производительностью и широкой поддержкой. Данный мануал ознакомит вас с общими процедурами по поддержке Apache, включая управление сервисом, работу с виртуальными хостами и редактирование конфигураций.
Примечание: Мануал предназначен для пользователей, которые работают с Apache в Ubuntu. Если вы используете CentOS или другой дистрибутив RHEL, обратитесь к мануалу Установка LAMP stack на CentOS 7.
Каждый раздел может использоваться независимо от других, поэтому вы можете пропустить разделы, которые вам не нужны. Все условные значения в командах выделены красным; вместо этих значений вы можете подставить свои данные.
Каждый раздел предлагает ссылки на другие руководства, с которыми можно проконсультироваться.
Установка Apache
Чтобы установить сервис Apache, обновите индекс пакетов и запустите следующую команду:
sudo apt-get update
sudo apt-get install apache2
Читайте также: Установка веб-сервера Apache в Ubuntu 16.04
Автозагрузка Apache
Сервис Apache запускается автоматически. Если вы хотите изменить это поведение, введите:
sudo systemctl disable apache2.service
Чтобы снова добавить Apache в автозагрузку, введите:
sudo systemctl enable apache2.service
Управление сервисом Apache
Чтобы остановить сервер Apache, введите следующую команду:
sudo systemctl stop apache2
Чтобы запустить сервер Apache, введите:
sudo systemctl start apache2
Чтобы остановить сервис и запустить его снова, введите:
sudo systemctl restart apache2
Если вы изменили конфигурацию, вы можете перезагрузить Apache в текущей сессии. Введите следующую команду:
sudo systemctl reload apache2
Читайте также: Основы Systemd: управление сервисами и журналирование
Проверка состояния Apache
Чтобы проверить состояние Apache, введите команду:
sudo systemctl status apache2
Эта команда сообщит, работает ли Apache и покажет вам последние несколько строк логов.
Создание корневого каталога для статического сайта
При создании сайтов на Apache разработчики часто используют виртуальные хосты – это хосты, которые обслуживают отдельные сайты или домены. Для этого нужно создать document root, каталог верхнего уровня, который Apache проверяет при обслуживании контента.
sudo mkdir -p /var/www/example.com/public_html
Передайте права на каталог пользователю с доступом к sudo.
sudo chown -R $USER:$USER /var/www/example.com/public_html
Предоставьте остальным пользователям права на чтение контента:
find /var/www -type d -exec chmod 775 {} ;
Читайте также: Привилегии в Linux: что это и как с этим работать
Помните, что права доступа должны меняться в соответствии с ситуацией.
Создание корневого каталога для динамических файлов
Если ваш сайт использует динамические модули типа PHP, создайте каталог document root для этих файлов:
sudo mkdir -p /var/www/example.com/public_html
Передайте права на каталог пользователю sudo и группе www-data:
sudo chown -R 8host:www-data /var/www/example.com/public_html
Изменение конфигурации
При работе с виртуальными хостами необходимо изменить параметры конфигурации и добавить данные о домене, чтобы сервер Apache мог правильно реагировать на запросы.
Откройте файл виртуального хоста:
sudo nano /etc/apache2/sites-available/example.com.conf
Измените следующие строки:
ServerAdmin admin@example.com
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com/public_html
После изменения файл будет выглядеть так:
<VirtualHost *:80>
ServerAdmin admin@example.com
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com/public_html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Прежде чем сохранить файл, убедитесь, что в директивах нет ошибок.
Читайте также: Настройка виртуальных хостов Apache в Ubuntu 16.04
Включение и отключение конфигурационных файлов
Виртуальные хосты
Чтобы включить виртуальный хост, введите:
sudo a2ensite example.com.conf
Чтобы отключить конфигурационный файл (в данном примере это стандартный виртуальный хост):
sudo a2dissite 000-default.conf
Модули
Чтобы включить модули из каталога /etc/apache2/mods-available, введите:
sudo a2enmod example_mod
Чтобы отключить конкретный модуль:
sudo a2dismod example_mod
Конфигурационные файлы
Чтобы включить конфигурационные файлы из каталога /etc/apache2/conf-available (файлы, не связанные с виртуальными хостами), введите:
sudo a2enconf example-conf
Чтобы отключить файл, введите:
sudo a2disconf example-conf
Тестирование конфигурации
Каждый раз, когда вы вносите изменения в конфигурационные файлы Apache, обязательно выполните следующую команду, чтобы проверить наличие синтаксических ошибок:
sudo apache2ctl configtest
Важные файлы и каталоги Apache
Контент
Каталог /var/www/html хранит весь контент сайта (это корневой каталог сайта). Вы можете изменить стандартные настройки Apache и указать другие каталоги в var/www.
Конфигурация сервера
- /etc/apache2: конфигурационный каталог Apache (здесь хранятся все конфигурационные файлы веб-сервера).
- /etc/apache2/apache2.conf: главный конфигурационный файл веб-сервера, в котором находятся все глобальные параметры. Все остальные файлы загружаются через этот файл. Также тут хранятся директивы FollowSymLinks, которые отвечают за включение и отключение конфигурационных файлов.
- /etc/apache2/sites-available/: здесь находятся все виртуальные хосты (в том числе и отключенные). В этом каталоге происходят все изменения в настройке виртуального хоста. Эти файлы включаются с помощью команды a2ensite.
- /etc/apache2/sites-enabled/: здесь хранятся файлы включенных виртуальных хостов. При запуске или перезагрузке Apache читает конфигурационные файлы и ссылки в этом каталоге, чтобы собрать полную конфигурацию.
- /etc/apache2/conf-available и /etc/apache2/conf-enabled: работают по тому же принципу, что и sites-available и sites-enabled. Эти каталоги предназначены для хранения фрагментов конфигурации, которые не входят в виртуальные хосты.
- /etc/apache2/mods-available и /etc/apache2/mods-enabled: эти каталоги работают аналогичным образом. Они предназначены для хранения модулей. В них находятся файлы двух типов: файлы с расширением .load загружают модули, а файлы .conf хранят их конфигурации.
Логи
- /var/log/apache2/access.log – это лог, который регистрирует все запросы Apache (если в конфигурации веб-сервера не сказано другого).
- /var/log/apache2/error.log – это лог ошибок. Настроить уровень логирования можно с помощью параметра LogLevel в /etc/apache2/apache2.conf.
Другой способ доступа к информации о компонентах Apache – через journald. Этот инструмент собирает информацию логов приложений и ядра. Чтобы просмотреть записи для модуля Apache, введите:
sudo journalctl -u apache2
Заключение
Данный мануал перечислил общие процедуры по поддержке сервера Apache. Чтобы узнать больше о работе с Apache, ознакомьтесь со следующими руководствами:
- Установка стека LAMP в Ubuntu 16.04
- Перемещение корневого каталога Apache в Ubuntu 16.04
- Создание сертификата Let’s Encrypt для Apache в Ubuntu 16.04
- Использование файла .htaccess
- Перезапись URL-адресов на Apache в Ubuntu 16.04
- Настройка Apache как обратного прокси-сервера с помощью mod_proxy в Ubuntu 16.04
Tags: Apache
HTTP-сервер Apache — самый популярный веб-сервер в мире. Это бесплатный кроссплатформенный HTTP-сервер с открытым исходным кодом, обеспечивающий мощные функции, которые могут быть расширены с помощью самых разных модулей.
Если вы разработчик или системный администратор, скорее всего, вы регулярно имеете дело с Apache.
В этом руководстве мы рассмотрим наиболее важные и часто используемые команды Apache, включая запуск, остановку и перезапуск Apache.
Подготовка
Мы предполагаем, что вы вошли в систему как root или пользователь с привилегиями sudo. Команды в этом руководстве должны работать в любом современном дистрибутиве Linux, таком как Ubuntu 18.04, CentOS 7 и Debian 9 .
В Ubuntu и Debian служба Apache называется apache2
, тогда как в системе на основе Red Hat, такой как CentOS, имя службы Apache — httpd
.
Если вы используете CentOS, просто замените apache2
на httpd
в приведенных ниже командах.
Запустите Apache
Запустить Apache довольно просто. Просто введите следующую команду.
sudo systemctl start apache2
В случае успеха команда не производит никакого вывода.
Если вы используете более старый дистрибутив Linux без systemd, для запуска Apache введите:
sudo service apache2 start
Вместо того, чтобы вручную запускать службу Apache, рекомендуется настроить ее запуск при загрузке системы:
sudo systemctl enable apache2
Остановить Apache
Остановка Apache позволяет быстро завершить основной процесс Apache и все дочерние процессы, даже если есть открытые соединения.
Чтобы остановить Apache, выполните одну из следующих команд:
sudo systemctl stop apache2
sudo service apache2 stop
Перезагрузите Apache
Параметр перезапуска — это быстрый способ остановить, а затем запустить сервер Apache.
Используйте одну из следующих команд для перезапуска:
sudo systemctl restart apache2
sudo service apache2 restart
Это команда, которую вы, вероятно, будете использовать наиболее часто.
Перезагрузить Apache
Вам необходимо перезагрузить или перезапустить Apache всякий раз, когда вы вносите изменения в его конфигурацию.
При перезагрузке основной процесс apache завершает работу дочерних процессов, загружает новую конфигурацию и запускает новые дочерние процессы.
Чтобы перезагрузить Apache, используйте одну из следующих команд:
sudo systemctl reload apache2
sudo service apache2 reload
Проверить конфигурацию Apache
Каждый раз, когда вы вносите изменения в файл конфигурации сервера Apache, рекомендуется протестировать конфигурацию перед перезапуском или перезагрузкой службы.
Используйте следующую команду, чтобы проверить конфигурацию Apache на наличие синтаксических или системных ошибок:
sudo apachectl -t
Результат будет выглядеть так:
Syntax OK
Если есть ошибки, команда выводит подробное сообщение.
Просмотр статуса Apache
Чтобы проверить статус службы Apache, используйте следующую команду:
sudo systemctl status apache2
Результат будет выглядеть примерно так:
● apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset:
Drop-In: /lib/systemd/system/apache2.service.d
└─apache2-systemd.conf
Active: active (running) since Wed 2019-05-29 21:16:55 UTC; 6s ago
Process: 938 ExecStop=/usr/sbin/apachectl stop (code=exited, status=0/SUCCESS)
Process: 956 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCES
Main PID: 997 (apache2)
Tasks: 55 (limit: 1152)
CGroup: /system.slice/apache2.service
├─ 997 /usr/sbin/apache2 -k start
├─ 999 /usr/sbin/apache2 -k start
└─1000 /usr/sbin/apache2 -k start
Проверить версию Apache
Иногда вам может потребоваться узнать версию вашего Apache, чтобы вы могли отладить проблему или определить, доступна ли определенная функция.
Вы можете проверить свою версию Apache, запустив:
sudo apache2 -v
Server version: Apache/2.4.29 (Ubuntu)
Server built: 2019-04-03T13:22:37
Параметр -V
(верхний регистр) показывает версию Apache вместе с параметром конфигурации.
sudo apache2 -V
Выводы
В этом руководстве мы показали вам некоторые из наиболее важных команд Apache. Если вы хотите узнать больше о командной строке Apache, посетите документацию Apache.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.
8 сентября, 2020 11:28 дп
4 715 views
| Комментариев нет
Centos, Debian, LAMP Stack, Ubuntu
Эта серия мануалов поможет вам предотвратить или устранить самые распространенные ошибки, которые возникают при работе с веб-сервером Apache.
Каждый последующий мануал в этой серии включает описание распространенных ошибок Apache, связанных с конфигурацией, сетью, файловой системой или привилегиями. Мы начнем с обзора команд и логов, которые вы можете использовать для устранения неполадок Apache. В последующих руководствах мы подробно рассмотрим конкретные ошибки.
Есть три основные команды и несколько общих логов, которые вы можете использовать, чтобы начать устранение ошибок Apache. По сути здесь вы найдете стандартную стратегию поиска ошибок и их причин: обычно эти команды используются в указанном здесь порядке, после чего можно изучить логи на предмет конкретных диагностических данных.
Команды, которые необходимы для устранения неполадок Apache в большинстве дистрибутивов Linux:
- systemctl – используется для управления сервисами Linux и взаимодействия с ними через менеджер сервисов systemd.
- journalctl – используется для запроса и просмотра логов, созданных systemd.
- apachectl – при устранении неполадок эта команда используется для проверки конфигурации Apache.
Далее мы подробно опишем эти команды, способы их использования и расположение логов Apache, в которых можно найти дополнительную информацию об ошибках.
Примечание: В системах Debian и Ubuntu сервис и процесс Apache называется apache2, а в CentOS, Fedora и других системах RedHat – httpd. Имя сервиса и процесса – это единственное отличие команд запуска, остановки и проверки состояния Apache в разных системах. Логи journalctl также должны работать одинаково в любой системе Linux, которая использует systemd для управления Apache. При работе с этим мануалом вы должны использовать правильное имя сервиса в зависимости от вашего дистрибутива Linux.
Команды systemctl для Apache
Чтобы устранить распространенные ошибки Apache с помощью менеджера сервисов systemd, первым делом вам необходимо проверить состояние процессов Apache в вашей системе. Следующие команды systemctl помогут вам узнать больше о состоянии процессов Apache.
В Ubuntu и Debian используйте:
sudo systemctl status apache2.service -l --no-pager
Флаг -l отображает полный вывод без сокращения. Флаг –no-pager направляет вывод непосредственно на ваш терминал. Вы должны получить такой результат:
apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
Drop-In: /lib/systemd/system/apache2.service.d
└─apache2-systemd.conf
Active: active (running) since Mon 2020-07-13 14:43:35 UTC; 1 day 4h ago
Process: 929 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
Main PID: 1346 (apache2)
Tasks: 55 (limit: 4702)
CGroup: /system.slice/apache2.service
├─1346 /usr/sbin/apache2 -k start
. . .
Чтобы изучить процесс веб-сервера в CentOS и Fedora, используйте:
sudo systemctl status httpd.service -l --no-pager
Вы получите такой результат:
httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2020-07-14 19:46:52 UTC; 3s ago
Docs: man:httpd.service(8)
Main PID: 21217 (httpd)
Status: "Started, listening on: port 80"
Tasks: 213 (limit: 2881)
Memory: 16.6M
CGroup: /system.slice/httpd.service
├─21217 /usr/sbin/httpd -DFOREGROUND
. . .
Jul 14 19:46:52 localhost.localdomain httpd[21217]: Server configured, listening on: port 80
Независимо от дистрибутива вы должны обратить внимание на строку Active в выводе. Если ваш сервер Apache не отображается как active (running), хотя он должен работать, возможно, произошла ошибка и прервала его работу. Как правило, при возникновении ошибок в выводе будет строка failed:
Active: failed (Result: exit-code) since Tue 2020-07-14 20:01:29 UTC; 1s ago
Если проблема заключается в процессе или конфигурации Apache, вы можете устранить ее с помощью команды journalctl.
Команды journalctl для Apache
Чтобы проверить логи systemd для Apache, вы можете использовать команду journalctl. Логи systemd для Apache обычно содержат данные о проблемах с запуском или управлением процессом Apache.
Эти логи отделены от логов запросов и ошибок Apache. Команда journalctl отображает логи systemd, которые описывают сам сервис Apache (от его запуска до завершения работы, включая все ошибки процесса, которые могут возникнуть на этом пути).
В системах Ubuntu и Debian для проверки логов используйте следующую команду:
sudo journalctl -u apache2.service --since today --no-pager
Флаг –since today ограничивает вывод команды записями лога, начиная с 00:00:00 текущего дня. Использование этой опции поможет ограничить объем записей лога, которые вам необходимо изучить для выявления ошибок. Вы должны получить следующий результат:
Jul 14 20:12:14 ubuntu2004 systemd[1]: Starting The Apache HTTP Server...
Jul 14 20:12:14 ubuntu2004 systemd[1]: Started The Apache HTTP Server.
Если вы используете систему на базе CentOS или Fedora, введите эту версию команды:
sudo journalctl -u httpd.service --since today --no-pager
Вы получите такой результат:
Jul 14 20:13:09 centos8 systemd[1]: Starting The Apache HTTP Server...
. . .
Jul 14 20:13:10 centos8 httpd[21591]: Server configured, listening on: port 80
В случае ошибки в выводе будет строка, приведенная ниже (имя хоста будет отличаться в зависимости от дистрибутива Linux):
Jul 14 20:13:37 yourhostname systemd[1]: Failed to start The Apache HTTP Server.
Если в ваших логах Apache есть подобные ошибки, то следующее, что нужно сделать для устранения возможных проблем – это исследовать конфигурации Apache с помощью инструмента командной строки apachectl.
Устранение неполадок с помощью apachectl
Большинство дистрибутивов Linux включают утилиту apachectl в установку Apache по умолчанию. apachectl – бесценный инструмент, помогающий обнаруживать и диагностировать проблемы конфигурации Apache.
Проверьте конфигурацию Apache с помощью команды apachectl configtest. Инструмент проанализирует ваши файлы Apache и обнаружит все ошибки или недостающие настройки перед попыткой запуска сервера.
Команда одинакова для дистрибутивов Ubuntu, Debian, CentOS и Fedora:
sudo apachectl configtest
Если конфигурация Apache не содержит ошибок, вы получите такой результат:
Syntax OK
В зависимости от вашего дистрибутива Linux в выводе могут быть и другие строки, но самая важная строка – это та, в которой говорится, что с синтаксисом все ок.
Если в вашей конфигурации Apache есть ошибка (например, директива ссылается на деактивированный модуль) или опечатка, apachectl обнаружит ее и попытается уведомить вас о проблеме.
Например, попытка использовать в директиве отключенный модуль Apache приведет к появлению следующих сообщений apachectl:
AH00526: Syntax error on line 232 of /etc/apache2/apache2.conf:
Invalid command 'SSLEngine', perhaps misspelled or defined by a module not included in the server configuration
Action 'configtest' failed.
The Apache error log may have more information.
В этом примере модуль ssl не включен, поэтому при проверке конфигурации директива SSLEngine выдает ошибку. Последняя строка также указывает, что в логе ошибок Apache может содержаться дополнительная информация, и это следующее место для поиска подробной отладочной информации.
Логи Apache
Логи Apache – очень полезный ресурс для устранения неполадок. Как правило, каждая ошибка, возникающая в браузере или другом HTTP-клиенте, создает соответствующую запись в логах Apache. Иногда Apache также выводит в свои логи ошибки, связанные с конфигурацией, встроенными модулями и другой отладочной информацией.
Чтобы проверить ошибки при устранении неполадок Apache на сервере Fedora, CentOS или RedHat, изучите файл /var/log/httpd/error_log.
Если вы устраняете неполадки в системе Debian или Ubuntu, проверьте /var/log/apache2/error.log с помощью инструмента tail или less. Например, чтобы просмотреть последние две строки лога ошибок с помощью tail, выполните следующую команду:
sudo tail -n 2 /var/log/apache2/error.log
Замените количество строк, которые вы хотите изучить. Укажите количество строк вместо числа 2 в команде.
В системе CentOS или Fedora файл журнала для проверки – /var/log/httpd/error_log.
Ниже мы приводим пример пример ошибки (ее текст не зависит от дистрибутива Linux):
[Wed Jul 15 01:34:12.093005 2020] [proxy:error] [pid 13949:tid 140150453516032] (13)Permission denied: AH00957: HTTP: attempt to connect to 127.0.0.1:9090 (127.0.0.1) failed
[Wed Jul 15 01:34:12.093078 2020] [proxy_http:error] [pid 13949:tid 140150453516032] [client 127.0.0.1:42480] AH01114: HTTP: failed to make connection to backend: 127.0.0.1
Эти две строки представляют собой отдельные сообщения об ошибках. Обе они ссылаются на модуль, вызвавший ошибку (proxy в первой строке, proxy_http во второй), и содержат код ошибки, индивидуальный для модуля. Первый, AH00957, указывает на то, что сервер Apache пытался подключиться к бэкенд-серверу (в данном случае к 127.0.0.1 по порту 9090) с помощью модуля proxy, но не смог этого сделать.
Вторая ошибка исходит из первой: AH01114 – это ошибка модуля proxy_http, которая также указывает на то, что Apache не смог подключиться к бэкенд-серверу для выполнения HTTP-запроса.
Эти строки мы привели просто для примера. Если вы диагностируете ошибки на своем сервере Apache, скорее всего, вы найдете совсем другие строки с ошибками в ваших логах. Независимо от дистрибутива Linux, строки ошибок в логах всегда содержат соответствующий модуль Apache и код ошибки, а также текстовое описание ошибки.
Как только вы поймете, что могло вызвать вызывать проблему на вашем сервере Apache, вы можете продолжить исследование и устранение неполадок. Код ошибки и текстовое описание особенно полезны, поскольку дают конкретные указания, которые можно использовать для сужения диапазона возможных причин возникновения ошибки.
Заключение
Устранение ошибок Apache может включать как диагностику ошибок сервиса, так и обнаружение неверно настроенных параметров модулей. В этом вводном руководстве по диагностике Apache мы посмотрели, как использовать ряд утилит, чтобы сузить круг возможных причин появления ошибок. Обычно эти утилиты нужно использовать в том же порядке, в каком они описаны тут (но вы всегда можете пропустить некоторые действия или начать сразу с изучения логов, если у вас есть общее представление о том, в чем может быть проблема).
Однако чаще всего полезно следовать общей схеме устранения неполадок и использовать эти инструменты в описанном порядке. Начните с systemctl, чтобы проверить состояние сервера Apache. Если вам нужна дополнительная информация, изучите логи systemd для Apache с помощью команды journalctl. Если после проверки journalctl проблема все еще не ясна, проверьте конфигурации Apache с помощью команды apachectl configtest. Для более глубокого изучения неполадок проверьте логи Apache, обычно они указывают на конкретную ошибку (предоставляя полезные для диагностики данные и коды ошибок).
Tags: Apache, apachectl, journalctl, systemctl