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

Когда я перезапускаю свой сервер Apache с помощью команды

sudo /etc/init.d/apache2 restart

Я получаю следующую ошибку:

Restarting web server apache2apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName... waiting apache2:Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName

Использует ли сервер 127.0.1.1 вместо 127.0.0.1? Что вызывает эту ошибку?

13.04 и старше

Это просто дружеское предупреждение и на самом деле не проблема (как в том, что что-то не работает).

Если вы пойдете в:

/etc/apache2/apache2.conf

и вставить:

ServerName localhost   

а затем перезапустите apache, введя в терминал:

sudo systemctl reload apache2

уведомление исчезнет.

Если у тебя есть имя внутри /etc/hostname вы также можете использовать это имя вместо localhost.


И он использует 127.0.1.1 если это находится внутри вашего /etc/hosts:

127.0.0.1 localhost127.0.1.1 myhostname

Предпочтительный способ

Устранение неполадок Apache

Если вы получаете эту ошибку:

apache2: Could not determine the server's fully qualified domain name, using 127.0.0.1 for ServerName

затем используйте текстовый редактор, такой как "sudo nano" в командной строке или "gksudo gedit" на рабочем столе, чтобы создать новый файл,

sudo nano /etc/apache2/conf.d/fqdn

или

gksu "gedit /etc/apache2/conf.d/fqdn"

затем добавьте

ServerName localhost

в файл и сохраните. Все это может быть сделано в одной команде со следующим:

 echo "ServerName localhost" | sudo tee /etc/apache2/conf.d/fqdn

Но в Ubuntu 14.04:

 echo "ServerName localhost" | sudo tee /etc/apache2/conf-available/fqdn.conf sudo a2enconf fqdn

Не забывайте про ".conf" (без него не получится).

13.10 или новее

Начиная с Apache 2.4, который доступен по умолчанию с 13.10, вы не можете использовать метод добавления конфигурационного файла в conf.d каталог.

Apache больше не использует conf.d каталог. Все конфигурационные файлы хранятся внутри /etc/apache2/conf-available каталог и все конфигурационные файлы теперь должны иметь .conf расширение.

Чтобы решить это сообщение в Apache 2.4, мы должны создать конфигурационный файл внутри каталога conf-available. Например servername.conf.

sudo vi /etc/apache2/conf-available/servername.conf

И внутри этого нам просто нужно добавить одну строку

ServerName localhost

Вы можете объединить две предыдущие команды в одну с помощью:

echo "ServerName localhost" | sudo tee /etc/apache2/conf-available/servername.conf

Если вы хотите использовать доменное имя или любое другое имя в зависимости от требований, это нормально, просто замените localhost со всем, что вам нужно. Далее вы должны включить эту конфигурацию. Для этого вам необходимо выполнить следующую команду:

sudo a2enconf servername

a2enconf это команда для включения файла конфигурации в Apache 2.4. Также обратите внимание, что servername по приведенной выше команде из имени файла конфигурации servername.conf. Если ваш конфигурационный файл был ngenericserver.conf тогда вам пришлось бы написать sudo a2enconf ngenericserver.

После этого перезагрузите сервер, и вышеупомянутое сообщение больше не будет вас беспокоить.

sudo service apache2 reload

или

sudo apache2ctl graceful

Теперь, после этого, вы увидите, что сообщение больше не будет отображаться, и проблема будет устранена.

Apache2 также может получить полное доменное имя из правильно настроенного системного имени хоста, а не жестко закодированного в конфигурационном файле apache. Жесткое кодирование также вызовет путаницу, если имя хоста изменится. Вам на самом деле ничего не нужно ServerName директивы в httpd.conf или любые конфигурационные файлы apache.

Поместите следующее в /etc/hosts:

# IPv4 and IPv6 localhost aliases127.0.0.1 hostname.domainname.com  hostname  localhost::1       hostname.domainname.com  hostname  localhost

где hostname.domainname.com это полное доменное имя вашего компьютера.

Вместе с правильно настроенным именем хоста в /etc/hostname/ или с hostnamectl, это также поможет другим службам на вашем компьютере работать должным образом (например, приглашение для входа, показывающее This is hostname.domainname.com вместо This is hostname.unknown_domain.)

  • Открыть терминал
  • Откройте /etc/apache2/httpd.conf файл:

    sudo editor /etc/apache2/httpd.conf # [1]
  • По умолчанию он будет пустым. Просто добавьте следующую строку:

    ServerName localhost
  • Сохраните файл и выйдите

  • Перезагрузите сервер

    sudo service apache2 restart

[1] Запустите редактор по умолчанию, см. sudo update-alternatives --config editor

В новой версии apache2 вы просто выполняете следующую команду:

sudo nano /etc/apache2/apache2.conf

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

ServerName localhost

Затем перезапустите apache2:

sudo service apache2 restart

Дело сделано.

Я нахожу, что немного лучше создать новый файл в /etc/conf.d что для изменения либо apache2.conf или httpd.conf.

Это личное предпочтение, которое отделяет мои изменения конфигурации от дистрибутивного пакета. Таким образом, обновления менее сложны.

Я создаю файл /etc/apache2/conf.d/AAserverName и он содержит только:

ServerName myhost.mycomain.tld

Другие предложения, безусловно, тоже работают.

В Ubuntu 16.04:

sudo -iecho 'ServerName localhost' > /etc/apache2/conf-available/server-name.confa2enconf server-name

На Ubuntu 16.04:

Добавь ServerName localhost к файлу httpd.conf используйте следующую команду.

sudo vi  /etc/apache2/httpd.conf

Затем включите эту строку Include httpd.conf в конце этого файла

sudo vi /etc/apache2/apache2.conf

Еще раз проверьте наличие синтаксических ошибок

sudo apache2ctl configtest

Теперь вы должны получить

Syntax OK

Теперь вы можете изящно перезапустить сервер, перезагрузив конфигурацию

sudo service apache2 reload

или завершите процесс и начните снова

sudo service apache2 restart

Добавь ServerName localhost

К

 sudo leafpad /etc/apache2/apache2.conf sudo leafpad /etc/apache2/httpd.conf

Это не ошибка.. Это просто напоминание другу

Уточняющий ServerName localhost в ваших файлах конфигурации за пределами разделов виртуального хоста есть способ сделать это.

Некоторые другие ответы предполагают, что вам следует изменить /etc/apache2/httpd.conf. Этот файл перезаписывается при обновлении apache с apt. Для конфигурации Apache, которую вы не хотите перезаписывать, вам следует создать новый файл. Вот "способ Debian" для внесения этого изменения в конфигурацию:

# create the configuration file in the "available" sectionecho "ServerName localhost" | sudo tee /etc/apache2/conf-available/servername.conf# enable it by creating a symlink to it from the "enabled" sectionsudo a2enconf servername# restart the serversudo service apache2 restart

Это в основном то же самое, что и ответ Старка, но в простой для копирования и вставки форме скрипта. Первоначально я опубликовал это в вопросе, который был помечен как дублирующий: https://askubuntu.com/a/432408