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, я отримую порожню сторінку.

Чи може хтось помітити, що я роблю неправильно?

Відповіді:


52

За замовчуванням Ubuntu не вказує ім’я сервера в конфігурації Apache, оскільки не знає, як називається ваш сервер. Він намагається здійснити зворотний пошук вашої IP-адреси, який нічого не повертає, тому він просто повинен використовувати IP-адресу як ім'я сервера .

Щоб виправити це, або додайте директиву ServerName за межами будь-якого віртуального хоста - наприклад /etc/apache2/httpd.conf, або встановіть зворотну відповідь DNS для вашої основної IP-адреси - у цьому випадку 127.0.1.1

Це цілком чудово також ігнорувати.


3
Це контрінтуїтивно. Якщо я додаю ServerName за межами будь-яких віртуальних хостів - як я можу обслуговувати декілька віртуальних хостів з одного сервера Apache? (це afterall, це пункт названих віртуальних серверів) - БІЛЬШЕ, ви говорите, що у мене може бути більше 1 запису ServerName (скажімо) /etc/apache2/httpd.conf
user35402

7
Потім ви можете додати ServerName / ServerAlias ​​до блоків VirtualHost, щоб VirtualHost відповідав лише іменам хосту, які ви хочете. Прочитайте httpd.apache.org/docs/2.2/mod/core.html#servername для нижньої частини.
crb

Я шукав цю відповідь більше години. В інтернеті стільки лайна з цього приводу, але це вирішило мою проблему. Thx
Майк

@Мейк ти та інші геніальні! Я шукаю цю відповідь чотири дні. (Гаразд, не повністю робочі дні.). +1, оскільки це перша відповідь, яка пояснює, що я можу додати директиву ServerName за межами віртуальних хостів, не впливаючи на них. Зважаючи на це, рішення ReinoutS працювало на мене (+1 також для нього).
Sony Santos

27

Ось швидке виправлення:

echo ServerName $HOSTNAME > /etc/apache2/conf.d/fqdn

Дякую. Жоден з виправлень, які використовують / 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 Development: у мене є 10 імен серверів (10 записів virtualhost всередині доступних сайтів)

Я призначив кожному з них унікальну IP-адресу localhost всередині /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

Якщо ви збираєтеся додати ще один virtualhost (у мене їх досить багато для розробки), додайте запис до іншої IP-адреси localhost та ввімкніть сайт перед перезапуском 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 joe

<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-rely-qualified-domain-name.html


Круто, це теж працювало для мене, було те саме питання.
Priyank Bolia

5

Вам не вистачає запису на сервері на рівні конфігурації сервера. Вам потрібно мати запис ServerName за межами будь-якого хоста, щоб Apache використовував його за замовчуванням.

Якщо поставити запис ServerName всередині VirtualHost, це не вирішить проблему. Див. Директиву ServerName .


3

Щоб виправити це, нам потрібно відредагувати /etc/apache2/httpd.conf або /etc/apache2.conf та додати наступний рядок:

ServerName nameofserver

1
Ти правий! Але ця відповідь дублює зміст відповіді КРБ, не надаючи будь-якої нової інформації чи розуміння. Я хотів би видалити його або додати більше деталей, що відрізняються від відповідей інших людей.
Ройс Вільямс

1

Я вважаю, що вам потрібно додати ServerNameвіртуальний хост за замовчуванням. Оскільки його немає, він приймає IP-адресу за замовчуванням. І це свого роду попередження. Я думаю, ваш веб-сервер все ще буде функціональним.


Я не розумію ваш коментар. Я вже маю ServerName у своєму файлі: <VirtualHost 127.0.0.1:8080> ServerName mysite.localhost Чи можете ви, будь ласка, уточнити коментар?

1
Для -default- virtualhost, а не просто конкретного 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


-1

Якщо після встановлення у вашому каталозі etc / apache2 файл httpd.conf вже не існує, основний файл конфігурації 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 з підмережі loopback ip.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.