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

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

sudo /etc/init.d/apache2 restart

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

Restarting web server apache2
apache2: 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? Что вызывает эту ошибку?

14 ответов

Решение

13.04 и старше

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

Если вы вставите

ServerName localhost   

в любом httpd.conf или же apache2.conf в /etc/apache2 и перезапустите Apache, уведомление исчезнет.

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


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

127.0.0.1 localhost
127.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 aliases
127.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 -i

echo 'ServerName localhost' > /etc/apache2/conf-available/server-name.conf
a2enconf 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" section
echo "ServerName localhost" | sudo tee /etc/apache2/conf-available/servername.conf
# enable it by creating a symlink to it from the "enabled" section
sudo a2enconf servername
# restart the server
sudo service apache2 restart

Это в основном то же самое, что и ответ Старка, но в простой для копирования и вставки форме сценария. Первоначально я разместил это в вопросе, который был помечен как дубликат: /questions/471214/problema-s-perezapuskom-apache-2/471218#471218

Если вы используете bash и хотите иметь минимальные зависимости (и просто хотите использовать однострочную строку для скрипта точки входа, если вы используете Docker, как я), эти два параметра должны работать.

Если вы хотите localhost:

echo "ServerName localhost" >> /etc/apache2/apache2.conf

Если вы хотите существующее имя хоста:

echo "ServerName $(cat /etc/hostname)" >> /etc/apache2/apache2.conf

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

На 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 restart

Запустите следующую команду:

apachectl -t -D DUMP_INCLUDES

определить путь к вашему httpd.conf файл конфигурации, затем отредактируйте этот файл и раскомментируйте / измените строку, в которой указано значение для ServerName вариант, например

ServerName localhost

Для веб-сервера используйте зарегистрированное имя DNS (например, example.com).

Если у вашего хоста нет зарегистрированного DNS-имени, введите его IP-адрес здесь.

В Ubuntu 11.10 я увидел это сообщение вместе с зависанием при загрузке, потому что мой диск был переполнен. Один из файлов журнала стал мошенническим. Вероятно, на самом деле не было проблемы с Apache, но это сообщение было последней подсказкой перед зависанием загрузки.

Чтобы решить проблему, мне пришлось загрузиться в режиме восстановления и удалить своенравный файл журнала.

Другие вопросы по тегам