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

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

491
задан 7 January 2017 в 13:51

14 ответов

6 # 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 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" (без него не будет работать).

575
ответ дан 7 January 2017 в 13:51

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

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

31
ответ дан 7 January 2017 в 13:51
  • Откройте терминал
  • Откройте файл /etc/apache2/httpd.conf :

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

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

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

     sudo service apache2 restart
     

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

28
ответ дан 7 January 2017 в 13:51

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

sudo nano /etc/apache2/apache2.conf

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

ServerName localhost

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

sudo service apache2 restart

Готово.

23
ответ дан 7 January 2017 в 13:51

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

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

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

ServerName myhost.mycomain.tld

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

6
ответ дан 7 January 2017 в 13:51

13.10 или newer

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

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

sudo service apache2 reload

или

sudo apache2ctl graceful

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

187
ответ дан 7 January 2017 в 13:51

В Ubuntu 16.04:

sudo -i

echo 'ServerName localhost' > /etc/apache2/conf-available/server-name.conf
a2enconf server-name
2
ответ дан 7 January 2017 в 13:51

Добавить ServerName localhost

в

 sudo leafpad /etc/apache2/apache2.conf

 sudo leafpad /etc/apache2/httpd.conf

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

1
ответ дан 7 January 2017 в 13:51

Указание Имя сервера 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

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

1
ответ дан 7 January 2017 в 13:51

В Ubuntu 16.04 :

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

sudo vi  /etc/apache2/httpd.conf

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

sudo vi /etc/apache2/apache2.conf

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

sudo apache2ctl configtest

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

Syntax OK

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

sudo service apache2 reload

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

sudo service apache2 restart
2
ответ дан 7 January 2017 в 13:51

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

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

0
ответ дан 7 January 2017 в 13:51

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

Если вам нужен localhost:

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

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

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

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

0
ответ дан 7 January 2017 в 13:51

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

apachectl -t -D DUMP_INCLUDES

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

ServerName localhost

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

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

0
ответ дан 7 January 2017 в 13:51

В Ubuntu 16.04 :

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

sudo vi  /etc/apache2/httpd.conf

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

sudo vi /etc/apache2/apache2.conf

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

sudo apache2ctl configtest

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

Syntax OK

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

0
ответ дан 7 January 2017 в 13:51

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

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