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

368

Когда я перезапускаю свой сервер 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? Что вызывает эту ошибку?

    
задан Deepu 14.02.2013 в 14:09
источник

14 ответов

450

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» (без работы не будет).

    
ответ дан Rinzwind 14.02.2013 в 14:18
источник
147

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

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

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

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

    
ответ дан Starx 26.12.2013 в 19:45
23
  • Откройте терминал
  • Откройте файл /etc/apache2/httpd.conf :

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

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

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

    sudo service apache2 restart
    

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

    
ответ дан green 14.02.2013 в 14:17
21

Apache2 также может получить полное доменное имя из правильно настроенного имени системного хоста, а не жестко закодированного в конфигурационный файл apache. Hardcoding также вызывает путаницу при изменении имени хоста. Фактически вам не нужны никакие директивы 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 .)

    
ответ дан Andrew Mao 18.09.2013 в 20:05
14

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

sudo nano /etc/apache2/apache2.conf

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

ServerName localhost

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

sudo service apache2 restart

Сделано.

    
ответ дан empugandring 16.04.2014 в 08:38
4

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

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

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

ServerName myhost.mycomain.tld

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

    
ответ дан areeda 06.09.2013 в 17:31
1

Добавить ServerName localhost

Для

 sudo leafpad /etc/apache2/apache2.conf

 sudo leafpad /etc/apache2/httpd.conf

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

    
ответ дан Serem 05.07.2014 в 11:36
1

В Ubuntu 16.04:

sudo -i

echo 'ServerName localhost' > /etc/apache2/conf-available/server-name.conf
a2enconf server-name
    
ответ дан Eduardo Cuomo 17.04.2017 в 15:26
0

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

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

    
ответ дан nobar 07.05.2013 в 17:17
0

Указание 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

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

    
ответ дан Stephen Ostermiller 24.03.2017 в 14:02
0

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

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

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

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

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

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

    
ответ дан Andrew Odri 17.11.2017 в 20:23
0

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

apachectl -t -D DUMP_INCLUDES

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

ServerName localhost

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

  

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

    
ответ дан kenorb 23.10.2017 в 14:24
0

В Ubuntu 16.04 :

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

sudo vi  /etc/apache2/httpd.conf

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

sudo vi /etc/apache2/apache2.conf

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

sudo apache2ctl configtest

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

Syntax OK

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

    
ответ дан daumie 08.01.2018 в 22:47
0

В Ubuntu 16.04 :

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

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
    
ответ дан daumie 08.01.2018 в 22:48