Ошибка конфигурации Apache AH00558: не удалось надежно определить полное доменное имя сервера.
Введение
Сообщение Apache AH00558: Не удалось надежно определить полное доменное имя сервера
генерируется, когда Apache не настроен с глобальной директивой ServerName
. Сообщение в основном носит информационный характер, и ошибка AH00558 не помешает правильной работе Apache.
В этом руководстве вы узнаете, как обнаружить сообщение AH00558, используя методы, описанные в руководстве по устранению распространенных ошибок Apache в начале этой серии. Вы также узнаете, как установить директиву ServerName
для разрешения сообщения.
Если вы уже определили, что на ваш сервер Apache влияет сообщение AH00558, и хотите пропустить шаги по устранению неполадок, шаг «Настройка глобальной директивы ServerName
» в конце этого руководства объясняет, как решить проблему. сообщение.
Устранение неполадок с помощью systemctl
Первым шагом при устранении неполадок с сообщением AH00558: Не удалось достоверно определить полное доменное имя сервера
является проверка состояния Apache с помощью systemctl
. Вывод systemctl
во многих случаях будет содержать всю информацию, необходимую для разрешения сообщения.
В дистрибутивах Linux, производных от Ubuntu и Debian, выполните следующее, чтобы проверить состояние Apache:
- sudo systemctl status apache2.service -l --no-pager
В системах, производных от Rocky Linux, Fedora и Red Hat, используйте эту команду для проверки состояния Apache:
- 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, выполните следующую команду:
- sudo journalctl -u apache2.service --since today --no-pager
В системах, производных от Rocky Linux, Fedora и Red Hat, используйте эту команду для проверки журналов:
- 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, выполните следующую команду:
- sudo apachectl configtest
Вы должны получить вывод, подобный следующему, если на ваш сервер влияет сообщение об ошибке AH00558:
OutputAH00558: 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
или предпочитаемый вами текстовый редактор:
- 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
или предпочитаемый вами текстовый редактор. :
- 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
, чтобы проверить правильность конфигурации.
- sudo apachectl configtest
Успешный вызов apachectl configtest
должен привести к следующему результату:
OutputSyntax OK
Теперь вы можете перезагрузить конфигурацию Apache, используя соответствующую команду systemctl reload
для вашего дистрибутива Linux.
В системах, производных от Ubuntu и Debian, выполните следующее:
- sudo systemctl reload apache2.service
В системах, производных от Rocky Linux, Fedora и Red Hat, используйте эту команду для перезагрузки конфигурации Apache:
- sudo systemctl reload httpd.service
После перезагрузки Apache сообщение об ошибке AH00558 больше не будет отображаться в ваших журналах. Вы можете подтвердить, что сообщения отключены, выполнив любую из трех команд systemctl
, journalctl
или apachectl
, которые демонстрируются в этом руководстве.
Заключение
В этом руководстве вы узнали о сообщениях об ошибках AH00558: Не удалось надежно определить полное доменное имя сервера
. Хотя эти сообщения не препятствуют запуску Apache, их можно устранить, установив глобальную директиву ServerName
.
Вы узнали, как искать сообщения об ошибках AH00558 с помощью команд systemctl
, journalctl
и apachectl
. Наконец, вы узнали, как изменить конфигурацию Apache в различных дистрибутивах Linux, чтобы отключить сообщения.
Если вы хотите узнать больше о том, как Apache использует директивы ServerName
, обратитесь к документации Apache по виртуальным хостам на основе имен, которая более подробно объясняет эту директиву.