Set the servername directive globally to suppress this message windows

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

Эта серия мануалов поможет вам предотвратить или устранить самые распространенные ошибки, которые возникают при работе с веб-сервером Apache.

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

Ошибка конфигурации Apache «AH00558: Could not reliably determine the server’s fully qualified domain name» возникает, когда в настройках Apache нет глобальной директивы ServerName. Сообщение в основном предназначено для информирования, и сама по себе ошибка AH00558 не помешает правильной работе Apache.

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

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

Поиск ошибки с помощью systemctl

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

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

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

В CentOS, Fedora и других системах, производных от RedHat, используйте эту команду:

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

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

Вы должны получить такой вывод:

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. В вашем случае IP-адрес может быть другим, это также может быть человекочитаемое DNS-имя.

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

Читайте также:  Linux или windows энергопотребление

Если в выходных данных 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

В CentOS, Fedora и других RedHat-подобных системах используйте эту команду:

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

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

— 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. Она может перехватывать подобные сообщения перед перезагрузкой или перезапуском Apache, и вам не придется искать ошибки в логах systemctl и journalctl.

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

sudo apachectl configtest

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

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.

Установка глобальной директивы ServerName

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

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

Читайте также:  Чем хороша linux ubuntu

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

В системах Ubuntu и Debian откройте файл /etc/apache2/apache2.conf с правами root:

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

В CentOS, Fedora и других системах RedHat откройте файл /etc/httpd/conf/httpd.conf с правами root:

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

Сохраните и закройте файл, когда закончите.

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

sudo apachectl configtest

Если apachectl не обнаружила ошибок в конфигурации, вы увидите:

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

В системах Ubuntu и Debian запустите:

sudo systemctl restart apache2.service

В системах CentOS, Fedora и RedHat используйте эту команду:

sudo systemctl restart httpd.service

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

Заключение

В этом мануале вы познакомились с ошибкой AH00558: Could not reliably determine the server’s fully qualified domain name. Хотя эти сообщения не препятствуют запуску Apache, их можно устранить, установив глобальную директиву ServerName.

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

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

Где в Apache 2 вы устанавливаете директиву ServerName глобально?

Я пытаюсь проверить локальный сайт, локально. Как я понимаю, в Apache 2 (и, возможно, в Apache) есть что-то, что называется VirtualHost . Мое небольшое понимание говорит мне, что виртуальный хостинг — это способ, при котором один сервер / IP-адрес может обслуживать несколько доменов.

Во всяком случае, я получаю следующую ошибку при запуске Apache 2, configtest чтобы увидеть, где у меня не получается . Я использую Apache 2.4.10-1, и кажется, что между Apache 2.2 и Apache 2.4 произошло много изменений, о которых я не знаю.

Это /etc/hosts файл:

Я также вижу пустой /etc/hosts.conf файл. Возможно, /etc/hosts необходимо скопировать данные, чтобы /etc/hosts.conf сервер мог принять это во внимание?

Это файл конфигурации сайта:

Я также читал о привязке к адресам и портам , но я не очень хорошо понял по нескольким причинам. Он не дает / делится примером того, в какой файл нужно поместить эти строки и что будет до и после. Пример был бы намного лучше.

Я сделал это и перезапустил сервер, но все равно получаю ту же ошибку.

Кажется, в Debian есть три файла конфигурации, которые мне нужно знать и понимать.

Читайте также:  Как сделать параметры экрана по умолчанию windows

Очевидно, apache2.conf — это файл глобальной конфигурации, а httpd.conf — файл пользовательской конфигурации. Есть также ports.conf. Оба apache2.conf и ports.conf имеют значения по умолчанию, за исключением того, что я изменил уровень логики Apache с warn на debug .

Я попробовал еще одну вещь:

Может быть, у кого-то есть больше понимания.

Установка Apache на Linux Subsystem for Windows. Решение сопутствующих ошибок

Добрый день. В этой статье я расскажу как установить Apache на подсистему Linux в Windows 10. Инструкция подразумевает что Вы уже включили новую фичу в своей системе.

  1. Открываем BASH консоль

Ждем. Когда процесс закончится. Сразу оговормся что автостарт apache не происходит потому что в Linux Subsystem for Windows отсутствует демон Upstart. Я пока разбираюсь с этой проблемой. Для того чтобы запустить apache пишем в терминале

Апач запуститься. Открываем любимый браузер и пишем в адресной строке localhost

ПРОБЛЕМЫ.
После запуска Apache. внимательные пользователи сразу же обратят внимание в лог консоли. Там будет несколько сообщений об ошибках, не критичных, но все же они есть. Список

1. AH00557: apache2: apr_sockaddr_info_get() failed for DESKTOP-RM4S1IT
2. AH00558: apache2: Could not reliably determine the server’s fully qualified domain name, using 127.0.0.1. Set the ‘ServerName’ directive globally to suppress this message
3. [core:warn] [pid 6417:tid 140018619451264] (22)Invalid argument: AH00076: Failed to enable APR_TCP_DEFER_ACCEPT

Итак, начинаем последовательно их решать.
1. AH00557: apache2: apr_sockaddr_info_get() failed for DESKTOP-RM4S1IT

В данном случае «DESKTOP-RM4S1IT» является именем моего ноутбука. Решение данной проблемы очень простое. Копируем куда-нибудь это имя и пишем в терминале

Добавляем в этот файл в самом верху следующую запись

Закрываем файл нажатием Ctrl+X после клавиша Y и после клавиша Enter.
После этого перезагружаем апач командой sudo service apache2 restart и видим что первая ошибка исчезла. Переходим к решению второй.

2. AH00558: apache2: Could not reliably determine the server’s fully qualified domain name, using 127.0.0.1. Set the ‘ServerName’ directive globally to suppress this message
Итак, чаще всего такая ошибка в apache (Не только в Linux Subsystem но и в целом в среде Unix) возникает по причине отсутствия параметра «ServerName» в httpd.conf веб сервера.
Исправить ее достаточно просто. Переходим к окну терминала Linux пишем команду

Откроется конфиг файл Apache. Проматываем его в самый конец (кнопочки Page Down, Page Up) и в самый низ файла с новой строки, объявлем такую директиву

Закрываем файл нажатием Ctrl+X после клавиша Y и после клавиша Enter.
После этого перезагружаем апач командой sudo service apache2 restart и видим что вторая ошибка исчезла. Переходим к решению крайней.

3. [core:warn] [pid 6417:tid 140018619451264] (22)Invalid argument: AH00076: Failed to enable APR_TCP_DEFER_ACCEPT

Для решения это ошибки нужно вновь отредактировать файл apache2.conf. Переходим к окну терминала Linux пишем команду

Откроется конфиг файл Apache. Проматываем его в самый конец (кнопочки Page Down, Page Up). С новой строки добавляем еще одну директиву следующего содержания

Это будет выглядеть вот так

Закрываем файл нажатием Ctrl+X после клавиша Y и после клавиша Enter.
После этого перезагружаем апач командой sudo service apache2 restart и видим что при старте Apache у нас не присутствует ни одной ошибки.

Оцените статью