Ошибка 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, но это сообщение было последней подсказкой перед зависанием загрузки.
Чтобы решить проблему, мне пришлось загрузиться в режиме восстановления и удалить своенравный файл журнала.