httpd: не удалось надежно определить полное доменное имя сервера, используя 127.0.0.1 для ServerName


172

Я попытался перезапустить свой сервер Apache на CentOS 5.0 и получил это сообщение:

httpd: не удалось надежно определить полное доменное имя сервера, используя 127.0.0.1 для ServerName

Вот /etc/hostsфайл:

127.0.0.1    server4-245    server4-245.com    localhost.localdomain localhost
::1        localhost6.localdomain6 localhost6

Вот /etc/sysconfig/networkфайл:

NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=server4-245

У меня также есть это в файле Apache httpd.conf:

ServerName localhost

Тем не менее, я все еще получаю первое сообщение об ошибке при перезапуске Apache.


1
Убедитесь, что вы отредактировали право httpd.conf. Обычно ServerName xyэто просто отлично.
KingCrunch

Ответы:


95

Ваш файл hosts не содержит действительного полного доменного имени и не является localhostполным доменным именем. Полное доменное имя должно включать часть имени хоста, а также часть имени домена. Например, следующее является действительным полным доменным именем:

host.server4-245.com

Выберите полное доменное имя и включите его в свой /etc/hostsфайл на оба адреса IPv4 и IPv6, которые вы используете (в вашем случае, localhostили 127.0.0.1), и измените свой ServerNameв конфигурации httpd, чтобы он соответствовал.

/ и т.д. / хосты:

127.0.0.1    localhost.localdomain localhost host.server4-245.com
::1          localhost.localdomain localhost host.server4-245.com

httpd.conf:

ServerName host.server4-245.com

6
Также обратите внимание, что вы захотите изменить запись HOSTNAME в файле / etc / sysconfig / network так, чтобы она соответствовала выбранному вами имени.
Пол Стенгель

2
Хм. У меня есть: 127.0.0.1 localhost gondor gondor.localdomain 192.168.0.3 gondor.localdomain но, похоже, Linux не считает, что gondor.localdomain также является полным доменным именем. В чем проблема с этим? Должен ли я иметь ДВУ?
Адам

Привет, я попробовал все вышеперечисленное и все еще получаю те же ошибки, я не совсем понимаю, чего мне здесь не хватает. Мое полное доменное имя настроено так же, как и ваш ответ, на ak.local.com, но у меня все еще возникают проблемы. Я работаю на OSX 10.10
AKFourSeven

1
Я обнаружил, что: 127.0.0.1 myserver myserver.mydom.com ... etc << не работает 127.0.0.1 myserver.mydom.com myserver ... etc << работает
Martin

208

Если у вас нет httpd.confв папке /etc/apache2, вы должны иметь apache2.conf - просто добавьте:

ServerName localhost

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


2
Отлично работал на Ubuntu 12.04 LTS, работающей на нескольких виртуальных хостах.
Гор

3
Отлично работал на Mac OS 10.7.5 с несколькими виртуальными хостами.
DudeOnRock

1
Работал на Mac OS 10.7.5 под управлением Virtualbox
iWizard

3
Отлично работал на Centos 6.4.
Кел Солаар

7
Отлично работал на Centos 6 (облачная версия), хотя httpd.conf находился в / etc / httpd / conf /
gbarry

64

После первоначальной установки сервера Apache я получил следующую ошибку при перезапуске службы Apache в Ubuntu 12.04 (Precise Pangolin)

Решение действительно простое. Просто добавьте ServerNameдирективу /etc/apache2/httpd.conf:

sudo nano /etc/apache2/httpd.conf

Добавить: ServerName localhost

Наконец перезапустите сервер Apache:

sudo /etc/init.d/apache2 restart

1
В CentOS 7 путь будет /etc/httpd/conf/httpd.conf
Debashis

11

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

Предполагая, что мой сервер - myserver.myhome.com, а мой статический IP-адрес - 192.168.1.150:

  1. Отредактируйте файл hosts

    $ sudo nano -w /etc/hosts
    
    127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
    
    127.0.0.1 myserver.myhome.com myserver
    
    192.168.1.150 myserver.myhome.com myserver
    
    ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
    ::1 myserver.myhome.com myserver
    
  2. Изменить httpd.conf

    $ sudo nano -w /etc/apache2/httpd.conf
    
    ServerName myserver.myhome.com
    
  3. Изменить сеть

    $ sudo nano -w /etc/sysconfig/network HOSTNAME=myserver.myhome.com
    
  4. проверить

    $ hostname
    
    (output) myserver.myhome.com
    
    $ hostname -f
    
    (output) myserver.myhome.com
    
  5. Перезапустите Apache

    $ sudo /etc/init.d/apache2 restart
    

Оказалось, что разница включала myserver.myhome.comкак 127.0.0.1, так и статический IP-адрес 192.168.1.150 в файле hosts. То же самое на Ubuntu Server и CentOS.


9

В httpd.conf выполните поиск «ServerName». Обычно это закомментировано по умолчанию на Mac. Просто раскомментируйте его и заполните. Убедитесь, что у вас также есть имя / IP, установленное в / etc / hosts.


Спасибо, это было полезно. httpd не собирал мои fqdn в / etc / hosts, и мое имя хоста было настроено правильно.
Banjer

8

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

Чтобы найти файл httpd.confконфигурации Apache, выполните:

apachectl -t -D DUMP_INCLUDES

Затем отредактируйте файл и раскомментируйте или измените ServerNameстроку на:

ServerName localhost

Затем перезапустите ваш Apache: sudo apachectl restart


1
«Убедитесь, что вы редактируете правильный файл htttpd.conf», это помогло мне в macOS. Я не редактировал нужный http.confфайл. Спасибо.
Asme Just


3

Есть два способа устранить эту ошибку:

  1. Include /etc/apache2/httpd.conf

    Добавьте указанную выше строку в файл /etc/apache2/apache2.conf

  2. Добавьте эту строку в конец файла /etc/apache2/apache2.conf :

    ServerName localhost


1

В некоторых случаях я разрешал полное доменное имя, добавляя имя моего сервера в файл /etc/apache2/httpd.conf и в /etc/apache2/apache2.confфайл.

Введите hostname -fсвой терминал. Этот запрос вернет ваше имя хоста.

Затем отредактируйте /etc/apache2/httpd.confфайл (или создайте его, если он по какой-то причине не существует) и добавьте ServerName <your_hostname>.

Кроме того, я также смог удалить сообщение, добавив ServerName <your_hostname>в /etc/apache2/apache2.confфайл.

Если все пойдет хорошо, когда вы перезапустите Apache, сообщение исчезнет.


1

Большинство ответов предлагают просто добавить ServerName localhostв/etc/apache2/apache2.conf .

Но цитируем документацию Apache  :

Наличие этого сообщения об ошибке также указывает на то, что Apache httpd не смог получить полное имя хоста, выполнив обратный поиск по IP-адресу вашего сервера. Хотя приведенные выше инструкции в любом случае избавят от предупреждения, также неплохо исправить разрешение имен, чтобы это обратное сопоставление работало.

Поэтому добавление такой строки, /etc/hostsвероятно, является более надежным решением:

192.0.2.0  foobar.example.com  foobar

где 192.0.2.0 - статический IP-адрес сервера, указанного foobarв example.comдомене.

Можно проверить полное доменное имя, например, с

hostname -A

(ярлык для hostname --all-fqdn).


1

Оказывается, у меня была эта проблема, и это потому, что я использовал «табуляции» для отступа строк вместо пробелов. Просто публикуем, на случай, если это кому-нибудь поможет.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.