Поиск по сайту:

Ошибка конфигурации Apache AH00558: не удалось надежно определить полное доменное имя сервера.


Введение

Сообщение Apache AH00558: Не удалось надежно определить полное доменное имя сервера генерируется, когда Apache не настроен с глобальной директивой ServerName. Сообщение в основном носит информационный характер, и ошибка AH00558 не помешает правильной работе Apache.

В этом руководстве вы узнаете, как обнаружить сообщение AH00558, используя методы, описанные в руководстве по устранению распространенных ошибок Apache в начале этой серии. Вы также узнаете, как установить директиву ServerName для разрешения сообщения.

Если вы уже определили, что на ваш сервер Apache влияет сообщение AH00558, и хотите пропустить шаги по устранению неполадок, шаг «Настройка глобальной директивы ServerName» в конце этого руководства объясняет, как решить проблему. сообщение.

Устранение неполадок с помощью systemctl

Первым шагом при устранении неполадок с сообщением AH00558: Не удалось достоверно определить полное доменное имя сервера является проверка состояния Apache с помощью systemctl. Вывод systemctl во многих случаях будет содержать всю информацию, необходимую для разрешения сообщения.

В дистрибутивах Linux, производных от Ubuntu и Debian, выполните следующее, чтобы проверить состояние Apache:

  1. sudo systemctl status apache2.service -l --no-pager

В системах, производных от Rocky Linux, Fedora и Red Hat, используйте эту команду для проверки состояния Apache:

  1. sudo systemctl status httpd.service -l --no-pager

Флаг -l гарантирует, что systemctl выводит все содержимое строки, а не замещает длинные строки многоточием (). Флаг --no-pager выводит весь журнал на ваш экран, не вызывая такой инструмент, как less, который показывает только экран содержимого за раз.

Вы должны получить вывод, аналогичный следующему:

Output
● 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 Wed 2020-07-29 14:30:03 UTC; 33min ago Process: 34 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS) Main PID: 46 (apache2) Tasks: 55 (limit: 2344) CGroup: /system.slice/apache2.service ├─46 /usr/sbin/apache2 -k start ├─47 /usr/sbin/apache2 -k start └─48 /usr/sbin/apache2 -k start Jul 29 14:30:03 68e2cf19f3f1 systemd[1]: Starting The Apache HTTP Server... Jul 29 14:30:03 68e2cf19f3f1 apachectl[34]: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message Jul 29 14:30:03 68e2cf19f3f1 systemd[1]: Started The Apache HTTP Server.

Выделенная строка, содержащая сообщение AH00558, является важной. По сути, он информирует вас о том, что Apache не смог найти допустимую директиву ServerName в своем файле конфигурации, поэтому он будет использовать первый обнаруженный IP-адрес. В этом примере это общедоступный IP-адрес сервера: 172.17.02. Если вы устраняете неполадки с сообщением AH00558, обнаруженный IP-адрес может быть другим или это может быть удобочитаемое DNS-имя.

Если ваш вывод systemctl содержит автоматически определяемое значение любого IP-адреса или имени хоста, перейдите к последнему разделу этого руководства, Установка глобальной директивы ServerName для решения проблемы. В этом разделе вы настроите Apache с безопасным значением ServerName по умолчанию, используя IP-адрес для localhost: 127.0.0.1.

Если в выходных данных systemctl не указано значение, которое можно использовать для директивы ServerName, в следующем разделе этого руководства объясняется, как проверить systemd регистрирует, используя journalctl, чтобы найти сообщение AH00558.

Устранение неполадок с помощью journalctl

Чтобы просмотреть журналы systemd для Apache, вы будете использовать команду journalctl. При вызове journalctl есть два специальных флага, которые помогут вам найти определенные сообщения, если имеется большой объем записей журнала.

Первый флаг, который вы добавите к вызову journalctl, — это флаг —since Today. Это ограничит вывод команды только записями журнала, начинающимися с 00:00:00 текущего дня. Использование этого параметра поможет ограничить объем записей журнала, которые необходимо проверять при проверке на наличие ошибок.

Второй флаг, который вы будете использовать, — это тот же параметр --no-pager, который вы использовали с systemctl, который сразу выводит весь журнал на ваш экран.

В системах, производных от Ubuntu и Debian, выполните следующую команду:

  1. sudo journalctl -u apache2.service --since today --no-pager

В системах, производных от Rocky Linux, Fedora и Red Hat, используйте эту команду для проверки журналов:

  1. sudo journalctl -u httpd.service --since today --no-pager

Если ваш сервер Apache генерирует сообщение AH00558, просмотрите вывод команды journalctl на наличие строк, подобных следующим:

Output
-- Logs begin at Wed 2020-07-29 14:30:02 UTC, end at Wed 2020-07-29 14:45:03 UTC. -- . . . Jul 29 14:30:03 68e2cf19f3f1 systemd[1]: Starting The Apache HTTP Server... Jul 29 14:30:03 68e2cf19f3f1 apachectl[34]: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message Jul 29 14:30:03 68e2cf19f3f1 systemd[1]: Started The Apache HTTP Server.

Вторая строка вывода — это сообщение AH00558. Строка включает общедоступный IP-адрес сервера, который Apache автоматически определяет и устанавливает по умолчанию во время выполнения. С этим сообщением в качестве подтверждения ошибки AH00558 вы можете перейти к настройке глобальной директивы ServerName для решения проблемы.

В противном случае в следующем разделе объясняется, как диагностировать сообщение об ошибке AH00558 с помощью команды apachectl.

Устранение неполадок с помощью apachectl

Ошибка AH00558: Не удалось надежно определить полное доменное имя сервера может быть обнаружена с помощью утилиты Apache apachectl. С помощью apachectl вы можете перехватывать подобные сообщения перед перезагрузкой или перезапуском Apache, и вам не нужно искать ошибки в журналах systemctl и journalctl. .

Чтобы проверить конфигурацию Apache на наличие сообщения AH00558, выполните следующую команду:

  1. sudo apachectl configtest

Вы должны получить вывод, подобный следующему, если на ваш сервер влияет сообщение об ошибке AH00558:

Output
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message Syntax OK

Как и в предыдущих разделах этого руководства, в которых для поиска сообщений AH00558 использовались systemctl и journalctl, строка, содержащая сообщение AH00558, выделенная в предыдущем примере, является важной. . Еще раз обратите внимание, что IP-адрес 172.17.0.2 в этом примере может отличаться на вашем сервере.

В следующем разделе этого руководства объясняется, как установить директиву ServerName для разрешения сообщений об ошибках AH00558.

Установка директивы Global ServerName

Чтобы устранить сообщение об ошибке AH00558: Не удалось надежно определить полное доменное имя сервера, вам потребуется добавить директиву ServerName в конфигурацию Apache. Apache использует директиву ServerName для сопоставления входящих HTTP-запросов с IP-адресом или DNS-именем хоста с помощью директив VirtualHost для обработки запросов для нескольких сайтов с использованием одного сервера.

В сообщении об ошибке отмечается, что также должна быть установлена глобальная директива ServerName. Это гарантирует, что Apache сможет изящно обрабатывать входящие запросы, которые не сопоставляются с VirtualHost, без дополнительных ошибок.

Для максимальной совместимости с различными конфигурациями Apache используйте значение 127.0.0.1 для глобальной директивы ServerName. При необходимости вы можете использовать другой IP-адрес или DNS-имя, соответствующие конфигурации вашего сервера, но безопаснее всего использовать 127.0.0.1.

В системах, производных от Ubuntu и Debian, откройте файл /etc/apache2/apache2.conf с привилегиями root, используя nano или предпочитаемый вами текстовый редактор:

  1. sudo nano /etc/apache2/apache2.conf

Добавьте строку, содержащую ServerName 127.0.0.1, в конец файла:

. . .
# Include the virtual host configurations:
IncludeOptional sites-enabled/*.conf

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
ServerName 127.0.0.1

В системах, производных от Rocky Linux, Fedora и Red Hat, откройте файл /etc/httpd/conf/httpd.conf с привилегиями root, используя nano или предпочитаемый вами текстовый редактор. :

  1. sudo nano /etc/httpd/conf/httpd.conf

Добавьте строку ServerName 127.0.0.1 в конец файла:

. . .
# Supplemental configuration
#
# Load config files in the "/etc/httpd/conf.d" directory, if any.
IncludeOptional conf.d/*.conf
ServerName 127.0.0.1

Сохраните и закройте файл, когда закончите. Если вы использовали nano, сделайте это, нажав CTRL + X, Y, а затем ENTER.

После добавления директивы ServerName в конфигурацию запустите apachectl, чтобы проверить правильность конфигурации.

  1. sudo apachectl configtest

Успешный вызов apachectl configtest должен привести к следующему результату:

Output
Syntax OK

Теперь вы можете перезагрузить конфигурацию Apache, используя соответствующую команду systemctl reload для вашего дистрибутива Linux.

В системах, производных от Ubuntu и Debian, выполните следующее:

  1. sudo systemctl reload apache2.service

В системах, производных от Rocky Linux, Fedora и Red Hat, используйте эту команду для перезагрузки конфигурации Apache:

  1. sudo systemctl reload httpd.service

После перезагрузки Apache сообщение об ошибке AH00558 больше не будет отображаться в ваших журналах. Вы можете подтвердить, что сообщения отключены, выполнив любую из трех команд systemctl, journalctl или apachectl, которые демонстрируются в этом руководстве.

Заключение

В этом руководстве вы узнали о сообщениях об ошибках AH00558: Не удалось надежно определить полное доменное имя сервера. Хотя эти сообщения не препятствуют запуску Apache, их можно устранить, установив глобальную директиву ServerName.

Вы узнали, как искать сообщения об ошибках AH00558 с помощью команд systemctl, journalctl и apachectl. Наконец, вы узнали, как изменить конфигурацию Apache в различных дистрибутивах Linux, чтобы отключить сообщения.

Если вы хотите узнать больше о том, как Apache использует директивы ServerName, обратитесь к документации Apache по виртуальным хостам на основе имен, которая более подробно объясняет эту директиву.