Вопрос Ошибка 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? Что вызывает эту ошибку?


385
2018-02-14 13:09


происхождения




ответы:


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


470
2018-02-14 13:18



Это также упоминается в документации Ubuntu LAMP для Устранение неполадок Apache, Там они рекомендуют создать файл /etc/apache2/conf.d/fqdn с ServerName localhost в этом - icc97
Очень хороший ответ - но я бы также рекомендовал поместить его в каталог conf.d :) - cwd
/etc/apache2/conf.d/ не существует после моей установки lamp-server^ в 14.04 - redanimalwar
@redanimalwar Для 13.10 и новее см. @ Ответ Starx ниже. - Dan
На последнем этапе (создание sym-link в 14.04) я бы рекомендовал sudo a2enconf fqdn хотя он должен быть технически одинаковым. - yoshi


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

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


158
2017-12-26 18:45



Кто-нибудь знает, как заставить Apache сказать который с файлом конфигурации, с которым проблема связана? Я не знаю, почему разработчики никогда не думают помещать это в свои сообщения об ошибках - это вряд ли займет много кода! - John Y
Если у меня есть интернет-fqdm для этого сервера, это место для его размещения? т.е. должен ли я подставлять myhost.org вместо localhost? - CPBL
@CPBL Это будет имя сервера по умолчанию для всех сайтов. Если у вас есть только один сайт, то это все, что вам нужно сделать. Если на вашем сервере имеется несколько сайтов, вам также необходимо будет добавить директиву servername для каждого сайта в их соответствующей конфигурации виртуального хоста. - Dan
Работает на 14.04 LTS. - Parto
Ваша цитированная ссылка кажется мертвой, пожалуйста, исправьте. - Fredrick Gauss


  • Открыть терминал
  • Открой /etc/apache2/httpd.conf файл:

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

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

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

    sudo service apache2 restart
    

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


24
2018-02-14 13:17



после выполнения последней команды происходит следующая ошибка: ** Перезапуск веб-сервера apache2 / usr / sbin / apache2ctl: 87: ulimit: ограничение на установку ошибок (операция не разрешена) / usr / sbin / apache2ctl: 87: ulimit: ограничение на установку ошибок (операция not разрешено) (13) Разрешено: make_sock: не удалось привязать к адресу 0.0.0.0:80 нет доступных сокетов для прослушивания, завершение работы Не удалось открыть журналы Действие «start» не удалось. В журнале ошибок Apache может быть больше информации. [fail] ** @ green7 - Deepu
попробуйте 'sudo service apache2 restart' - waterloo2005


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.)


22
2017-09-18 18:05



+1 для «правильно настроенного имени системного компьютера». Я хотел настроить сервер должным образом. Это также зафиксировало мою ошибку в журнале [warn] RSA server certificate CommonName (CN) <fqdn> does NOT match server name!? - transistor1
Считаете ли вы, что это должно работать с Apache 2.2.22? Я все еще получаю «Не могу надежно определить полное доменное имя сервера, используя 127.0.1.1 для ServerName» - David Winiecki
Является hostname localhost должно быть myubuntuservername localhost? Или строковый литерал hostname localhost? Вы не поняли в своем ответе - Jonathan
Это должен быть принятый ответ. Кажется, вам может потребоваться связать FQDN с статическим IP-адресом, а не с 127.0.0.1, хоть. - Skippy le Grand Gourou


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

sudo nano /etc/apache2/apache2.conf

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

ServerName localhost

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

sudo service apache2 restart

Готово.


15
2018-04-16 06:38





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

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

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

ServerName myhost.mycomain.tld

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


4
2017-09-06 15:31





В Ubuntu 16.04:

sudo -i

echo 'ServerName localhost' > /etc/apache2/conf-available/server-name.conf
a2enconf server-name

2
2018-04-17 13:26





Добавить ServerName localhost

к

 sudo leafpad /etc/apache2/apache2.conf

 sudo leafpad /etc/apache2/httpd.conf

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


1
2017-07-05 09:36





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

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


0
2018-05-07 15:17





Определение 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

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


0
2018-03-24 13:02





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

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

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

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

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

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


0
2017-11-17 19:23