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

73

Я продолжаю получать это предупреждение, когда я (пере) запускаю Apache.

* 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 [ OK ]

Это содержимое моего etc/hostsфайла:

#127.0.0.1  hpdtp-ubuntu910
#testproject.localhost  localhost.localdomain   localhost
#127.0.1.1  hpdtp-ubuntu910

127.0.0.1   localhost
127.0.0.1   testproject.localhost
127.0.1.1   hpdtp-ubuntu910



# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

Это содержимое моего /etc/apache2/sites-enabled/000-defaultфайла:

<VirtualHost *:80>
  ServerName testproject.localhost
  DocumentRoot "/home/morpheous/work/websites/testproject/web"
  DirectoryIndex index.php
  <Directory "/home/morpheous/work/websites/testproject/web">
    AllowOverride All
    Allow from All
  </Directory>

  Alias /sf /lib/vendor/symfony/symfony-1.3.2/data/web/sf
  <Directory "/lib/vendor/symfony/symfony-1.3.2/data/web/sf">
    AllowOverride All
    Allow from All
  </Directory>
</VirtualHost>

Когда я иду в http://testproject.localhost, я получаю пустую страницу.

Кто-нибудь может определить, что я делаю не так?

user35402
источник

Ответы:

52

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

Чтобы исправить это, либо добавьте директиву ServerName вне виртуального хоста, например, в /etc/apache2/httpd.conf, либо настройте обратный DNS-ответ для вашего основного IP-адреса, в данном случае 127.0.1.1.

Это также прекрасно, игнорировать это тоже.

CRB
источник
3
Это нелогично. Если я добавлю ServerName вне каких-либо виртуальных хостов - как я могу обслуживать несколько виртуальных хостов с одного сервера Apache? (в конце концов, это точка именованных виртуальных серверов) - ЕСЛИ вы говорите, что я могу иметь более 1 записи ServerName в (скажем) /etc/apache2/httpd.conf
user35402
7
Затем вы можете добавить ServerName / ServerAlias ​​внутри блоков VirtualHost, чтобы VirtualHost соответствовал только нужным именам хостов. Прочитайте httpd.apache.org/docs/2.2/mod/core.html#servername для ознакомления .
crb
Я искал этот ответ более часа. В интернете столько хрена по этому поводу, но это решило мою проблему. Спасибо
Майк
@ Майк и ты гений! Я ищу этот ответ в течение четырех дней. (Хорошо, не полностью рабочие дни.). +1, потому что это первый ответ, объясняющий, что я могу добавить директиву ServerName вне виртуальных хостов, не затрагивая их. Учитывая это, решение ReinoutS сработало для меня (+1 к нему тоже).
Sony Santos
27

Вот быстрое решение:

echo ServerName $HOSTNAME > /etc/apache2/conf.d/fqdn
ReinoutS
источник
Благодарю. Ни одно из исправлений, использующих / etc / hosts или httpd.conf, не сработало для меня, но это сработало.
Райан
1
Исправлено на Ubuntu 13.04 под управлением apache2, спасибо!
dmanexe
16

Другой способ обойти это предупреждение - поместить полное доменное имя в 127.0.1.1строку /etc/hosts. Это даже не должно быть fqdn, которое фактически разрешает что-либо на DNS-сервере.

127.0.1.1  hpdtp-ubuntu910.lan  hpdtp-ubuntu910

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

Райан Ахерн
источник
7

Это решение работает для моих нужд разработки:

Фон:

Debian Linux Sid:
VirtualHost Разработка: у меня есть 10 имен серверов (доступно 10 записей на виртуальных хостах внутри сайтов)

Я назначил каждому уникальный локальный IP-адрес внутри /etc/hosts:

127.0.0.1   joe   localhost.localdomain   localhost
127.0.1.1   joe
127.0.1.2   joomla
127.0.1.3   schmoo
127.0.1.4   forrest
127.0.1.5   store
127.0.1.6   publisher
127.0.1.7   studios
127.0.1.8   drupal
127.0.1.9   graphics
127.0.1.10  wordpress
...

The following lines are desirable for IPv6 capable hosts

::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

Если вы собираетесь добавить еще один виртуальный хост (у меня их немало для разработки), добавьте запись к другому IP-адресу локального хоста и включите сайт перед перезапуском Apache 2.2:

127.0.0.11 *newhost*

Для каждой записи, которую вы хотите включить в качестве файла VirtualHost:

/ и т.д. / apache2 / сайты-доступны /

Джо Джумла Скоу Форрест магазин издательство студии Drupal графика WordPress

Все виртуальные хосты включены / отключены через имя хоста a2ensite / a2dissite

Подавить ошибку

Перезапуск веб-сервера: apache2apache2: не удалось надежно определить полное доменное имя сервера, используя 127.0.0.1 для ServerName ... ожидание apache2: не удалось надежно определить полное доменное имя сервера, используя 127.0.0.1 для ServerName ''

отредактируйте httpd.conf в /etc/apache2/httpd.conf[пустой файл в Debian]:

ServerName 127.0.1.1

Затем поиск разрешается для всех имен, которые вы добавляете , комментируете или отключаете в дальнейшем.

В случае, если вы забыли: единственная запись VirtualHost *: 80 должна находиться только в файле ports.conf ,

/etc/apache2/ports.conf

**NameVirtualHost *:80**
Listen 80

<IfModule mod_ssl.c>
   # If you add NameVirtualHost *:443 here, you will also have to change
   # the VirtualHost statement in /etc/apache2/sites-available/default-ssl
   # to <VirtualHost *:443>
   # Server Name Indication for SSL named virtual hosts is currently not
   # supported by MSIE on Windows XP.
   Listen 443
</IfModule>

<IfModule mod_gnutls.c>
   Listen 443
</IfModule>

В вашей записи VirtualHost пропустите VirtualHost *: 80

Пример: виртуальный хост Джо

<VirtualHost *:80>
    **ServerAlias joe**
    **...**
</VirtualHost>
Марк Дрифтмейер
источник
6

Установка ServerNameв httpd.conf у меня не сработала. Я исправил это, установив ServerName 127.0.0.1в /etc/apache2/conf.d/name.

Я использую Ubuntu 12.10 Alpha3 и ServerNameопределила в обоих местах.

Источник: http://linuxconfig.net/manual-howto/error-solution-could-not-reliably-determine-the-servers-fully-qualified-domain-name.html

Ник
источник
Круто, у меня это тоже сработало, была такая же проблема.
Приянк Болия
5

Вам не хватает записи ServerName уровня конфигурации сервера. Вам нужно иметь запись ServerName вне любого хоста, чтобы Apache использовал ее по умолчанию.

Помещение записи ServerName в VirtualHost не решит проблему. Смотрите директиву ServerName .

Дэвид
источник
3

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

ServerName nameofserver
niekutis
источник
1
Вы правы! Но этот ответ дублирует содержание ответа crb без предоставления какой-либо новой информации или понимания. Я хотел бы удалить его или добавить больше деталей, которые отличаются от ответов других людей.
Ройс Уильямс
1

Я считаю, что вам нужно добавить ServerNameвиртуальный хост по умолчанию. Так как его там нет, он принимает IP-адрес по умолчанию. И это своего рода предупреждение. Ваш веб-сервер все еще будет функционировать, я думаю.

vpram86
источник
Я не понимаю ваш комментарий. У меня уже есть ServerName в моем файле: <VirtualHost 127.0.0.1:8080> ServerName mysite.localhost Не могли бы вы уточнить свой комментарий?
1
Для -default- virtualhost, а не только для конкретного виртуального хоста.
Kzqai
0
  1. Вы должны добавить ServerName в ваш файл httpd.conf, выполнив следующие шаги

    sudo gedit /etc/apache2/httpd.conf
    

    По умолчанию httpd.confфайл будет пустым. Теперь просто добавьте следующую строку в файл.

    ServerName localhost
    

    Сохраните файл и выйдите из gedit. Наконец перезапустите сервер.

    sudo /etc/init.d/apache2 restart
    

2) Добавить Include httpd.confв концеapache2.conf

kunjalpopat
источник
-1

Если файл httpd.conf после установки еще не существует в каталоге etc / apache2, то основной файл конфигурации apache, apache2.conf, не будет ссылаться на него, поэтому добавление чего-либо в созданный httpd.conf не поможет что-нибудь. Вместо этого вы можете просто добавить строку «Имя хоста ServerName» в файл apache2.conf.

туз
источник
-1

В / etc / hosts все еще есть эти записи. (Я пропустил некоторые ответы выше)

127.0.0.1 localhost 127.0.0.1 testproject.localhost

Оба IP-адреса 127.0.0.1 здесь одинаковы.

Присвойте IP-адресу testproject.localhost другой IP-адрес из петлевой подсети.

Шарад Чхетри
источник