Ошибка Apache: «Нельзя достоверно определить полное доменное имя сервера»

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

sudo /etc/init.d/apache2 restart

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

Перезапуск веб-сервера apache2
apache2: Не удалось достоверно определить полное доменное имя сервера, используя 127.0.1.1 для ServerName
... Ожидание apache2:
Не удалось достоверно определить полное доменное имя сервера, используя 127.0.1.1 для ServerName

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

383 голоса | спросил Deepu 14 FebruaryEurope/MoscowbThu, 14 Feb 2013 17:09:30 +0400000000pmThu, 14 Feb 2013 17:09:30 +040013 2013, 17:09:30

14 ответов


469

13.04 и старше

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

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

Имя_сервера 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: Не удалось определить полное доменное имя сервера,
использование 127.0.0.1 для ServerName

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

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

или

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

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

Имя_сервера 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» (без работы не будет).

ответил Rinzwind 14 FebruaryEurope/MoscowbThu, 14 Feb 2013 17:18:12 +0400000000pmThu, 14 Feb 2013 17:18:12 +040013 2013, 17:18:12
156

13.10 или новее

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

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

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

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

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

Имя_сервера localhost

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

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

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

sudo a2enconf имя_сервера

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

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

sudo service apache2 reload

или

sudo apache2ctl изящный

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

ответил Starx 26 ThuEurope/Moscow2013-12-26T22:45:55+04:00Europe/Moscow12bEurope/MoscowThu, 26 Dec 2013 22:45:55 +0400 2013, 22:45:55
24
  • Откройте терминал
  • Откройте файл /etc/apache2/httpd.conf:

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

    Имя_сервера localhost
    
  • Сохраните файл и выйдите из него

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

    sudo service apache2 restart
    

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

ответил green 14 FebruaryEurope/MoscowbThu, 14 Feb 2013 17:17:31 +0400000000pmThu, 14 Feb 2013 17:17:31 +040013 2013, 17:17:31
22

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

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

# IPv4 и IPv6 localhost aliases
127.0.0.1 hostname.domainname.com hostname localhost
:: 1 hostname.domainname.com имя хоста localhost

где hostname.domainname.com - полное доменное имя вашей машины.

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

ответил Andrew Mao 18 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowWed, 18 Sep 2013 22:05:21 +0400 2013, 22:05:21
15

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

sudo nano /etc/apache2/apache2.conf

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

Имя_сервера localhost

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

sudo service apache2 restart

Сделано.

ответил empugandring 16 AMpWed, 16 Apr 2014 10:38:35 +040038Wednesday 2014, 10:38:35
4

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

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

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

Имя_сервера myhost.mycomain.tld

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

ответил areeda 6 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 06 Sep 2013 19:31:51 +0400 2013, 19:31:51
2

В Ubuntu 16.04:

sudo -i

echo 'ServerName localhost'> /etc/apache2/conf-available/server-name.conf
Имя сервера a2enconf
ответил Eduardo Cuomo 17 PMpMon, 17 Apr 2017 16:26:17 +030026Monday 2017, 16:26:17
1

Добавить Имя_сервера localhost

Для

sudo leafpad /etc/apache2/apache2.conf

 sudo leafpad /etc/apache2/httpd.conf

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

ответил Serem 5 J000000Saturday14 2014, 13:36:40
0

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

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

ответил nobar 7 Maypm13 2013, 19:17:07
0

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

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

# создать файл конфигурации в разделе «Доступные»
echo "ServerName localhost" | sudo tee /etc/apache2/conf-available/servername.conf
# включить его, создав символическую ссылку на него из раздела «включено»
sudo a2enconf имя_сервера
# перезапустить сервер
sudo service apache2 restart

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

ответил Stephen Ostermiller 24 MarpmFri, 24 Mar 2017 16:02:10 +03002017-03-24T16:02:10+03:0004 2017, 16:02:10
0

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

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

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

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

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

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

ответил Andrew Odri 17 52017vEurope/Moscow11bEurope/MoscowFri, 17 Nov 2017 22:23:57 +0300 2017, 22:23:57
0

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

apachectl -t -D DUMP_INCLUDES

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

Имя_сервера localhost

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

  

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

ответил kenorb 23 +03002017-10-23T15:24:06+03:00312017bEurope/MoscowMon, 23 Oct 2017 15:24:06 +0300 2017, 15:24:06
0

В Ubuntu 16.04 :

Добавьте имя_сервера localhost в файл httpd.conf usin gthe следующую команду.

sudo vi /etc/apache2/httpd.conf

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

sudo vi /etc/apache2/apache2.conf

Проверьте снова синтаксические ошибки

sudo apache2ctl configtest

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

Синтаксис OK

Теперь вы можете корректно перезагрузить сервер, перезагрузив конфигурацию sudo service apache2 restart

ответил daumie 9 Jam1000000amTue, 09 Jan 2018 00:47:06 +030018 2018, 00:47:06
0

В Ubuntu 16.04 :

Добавьте имя_сервера localhost в файл httpd.conf usin gthe следующую команду.

sudo vi /etc/apache2/httpd.conf

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

sudo vi /etc/apache2/apache2.conf

Проверьте снова синтаксические ошибки

sudo apache2ctl configtest

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

Синтаксис OK

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

sudo service apache2 reload

или убейте процесс и запустите его снова

sudo service apache2 restart
ответил daumie 9 Jam1000000amTue, 09 Jan 2018 00:48:25 +030018 2018, 00:48:25

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132