apache2: no se pudo determinar de manera confiable el nombre de dominio completo del servidor, utilizando 127.0.1.1 para ServerName

73

Sigo recibiendo esta advertencia cuando (re) inicio 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 ]

Este es el contenido de mi etc/hostsarchivo:

#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

Este es el contenido de mi /etc/apache2/sites-enabled/000-defaultarchivo:

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

Cuando voy http://testproject.localhost, me sale una página en blanco.

¿Alguien puede ver lo que estoy haciendo mal?

usuario35402
fuente

Respuestas:

52

Por defecto, Ubuntu no especifica un ServerName en la configuración de Apache, porque no sabe cuál es el nombre de su servidor. Intenta una búsqueda inversa en su dirección IP, que no devuelve nada, por lo que solo tiene que usar la dirección IP como ServerName .

Para solucionarlo, agregue una directiva ServerName fuera de cualquier host virtual , por ejemplo /etc/apache2/httpd.conf, en , o configure una respuesta DNS inversa para su dirección IP principal, en este caso, 127.0.1.1

Está perfectamente bien ignorarlo también.

crb
fuente
3
Esto es contrario a la intuición. Si agrego el ServerName fuera de cualquier host virtual, ¿cómo puedo servir varios hosts virtuales desde el mismo servidor Apache? (esto después de todo, es el punto de los servidores virtuales con nombre) - A MENOS, estás diciendo que puedo tener más de 1 entrada de ServerName en (digamos) /etc/apache2/httpd.conf
user35402
77
Luego puede agregar ServerName / ServerAlias ​​dentro de los bloques de VirtualHost para que VirtualHost solo coincida con los nombres de host que desee. Lea httpd.apache.org/docs/2.2/mod/core.html#servername para conocer los detalles.
crb
He estado buscando esta respuesta durante más de una hora. Tanta mierda en internet con respecto a esto, pero esto solucionó mi problema. Thx
Mike
¡@Mike tú y otros son genios! He estado buscando esta respuesta durante cuatro días. (Ok, no totalmente días hábiles). +1 porque esta es la primera respuesta que explica que puedo agregar una directiva ServerName fuera de los hosts virtuales sin afectarlos. Con eso en mente, la solución de ReinoutS funcionó para mí (+1 para él también).
Sony Santos
27

Aquí hay una solución rápida:

echo ServerName $HOSTNAME > /etc/apache2/conf.d/fqdn
ReinoutS
fuente
Gracias. Ninguna de las soluciones con / etc / hosts ni httpd.conf funcionó para mí, pero esto sí.
Ryan
1
Lo arregló en Ubuntu 13.04 con apache2, ¡gracias!
dmanexe
16

Otra forma de evitar esa advertencia es poner un nombre de dominio totalmente calificado en la 127.0.1.1línea de /etc/hosts. Ni siquiera tiene que ser un fqdn que realmente resolvería cualquier cosa en un servidor dns.

127.0.1.1  hpdtp-ubuntu910.lan  hpdtp-ubuntu910

haría el truco, al mismo tiempo que preservaría el comportamiento de cualquier programa que no esperara el extra .lan. El orden es importante; los nombres con más niveles deben especificarse primero, como en este ejemplo donde la .landirección viene antes que la otra dirección.

Ryan Ahearn
fuente
7

Esta solución funciona para mis necesidades de desarrollo:

Antecedentes:

Sid de Debian Linux:
Desarrollo VirtualHost: Tengo 10 nombres de servidor (10 entradas de host virtual dentro de sitios disponibles)

Asigné a cada uno una dirección IP localhost única dentro /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

Si va a agregar otro virtualhost (tengo bastantes para el desarrollo) agregue una entrada a otra dirección IP localhost y habilite el sitio antes de reiniciar Apache 2.2:

127.0.0.11 *newhost*

Para cada entrada que desee habilitar como archivo VirtualHost:

/ etc / apache2 / sites-available /

joe joomla schoo forrest store editor studios drupal gráficos wordpress

Todos los hosts virtuales están habilitados / deshabilitados a través de a2ensite / a2dissite hostname

Para suprimir el error

Reiniciando el servidor web: apache2apache2: No se pudo determinar de manera confiable el nombre de dominio completo del servidor, usando 127.0.0.1 para ServerName ... esperando apache2: No se pudo determinar de manera confiable el nombre de dominio completo del servidor, usando 127.0.0.1 para ServerName ''

edite httpd.conf en /etc/apache2/httpd.conf[archivo vacío en Debian]:

ServerName 127.0.1.1

La búsqueda se resuelve para todos los nombres que agregue , comente o deshabilite en la línea.

En caso de que lo olvide: la única entrada VirtualHost *: 80 solo debe estar dentro del archivo 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>

Dentro de su entrada VirtualHost, deje fuera VirtualHost *: 80

Ejemplo: virtualhost joe

<VirtualHost *:80>
    **ServerAlias joe**
    **...**
</VirtualHost>
Marc Driftmeyer
fuente
5

Te falta una entrada de ServerName en el nivel de configuración del servidor. Debe tener una entrada ServerName fuera de cualquier host, para que Apache la use como predeterminada.

Poner una entrada ServerName dentro de un VirtualHost no solucionará el problema. Ver ServerName Directiva .

David
fuente
3

Para solucionarlo, necesitamos editar /etc/apache2/httpd.conf o /etc/apache2.conf y agregar la siguiente línea:

ServerName nameofserver
niekutis
fuente
1
¡Tienes razón! Pero esta respuesta duplica el contenido de la respuesta de crb sin proporcionar ninguna información o visión nueva. Consideraría eliminarlo o agregar más detalles que sean diferentes de las respuestas de otras personas.
Royce Williams
1

Creo que debe agregar ServerNameel host virtual predeterminado. Como no está allí, está tomando la dirección IP predeterminada. Y es una especie de advertencia. Su servidor web seguirá siendo funcional, supongo.

vpram86
fuente
No entiendo tu comentario. Ya tengo ServerName en mi archivo: <VirtualHost 127.0.0.1:8080> ServerName mysite.localhost ¿Podría aclarar su comentario?
1
Para el virtualhost -default-, no solo un virtualhost específico.
Kzqai
0
  1. debe agregar ServerName en su archivo httpd.conf usando los siguientes pasos

    sudo gedit /etc/apache2/httpd.conf
    

    Por defecto el httpd.confarchivo estará en blanco. Ahora, simplemente agregue la siguiente línea al archivo.

    ServerName localhost
    

    Guarde el archivo y salga de gedit. Finalmente reinicie el servidor.

    sudo /etc/init.d/apache2 restart
    

2) Agregar Include httpd.confal final deapache2.conf

kunjalpopat
fuente
-1

Si un archivo httpd.conf aún no existe en su directorio etc / apache2 después de la instalación, entonces el archivo de configuración principal de apache, apache2.conf, no tendrá una referencia, por lo que agregar algo a un httpd.conf creado no funcionará cualquier cosa. Simplemente puede agregar la línea "ServerName hostname" al archivo apache2.conf en su lugar.

As
fuente
-1

Es / etc / hosts todavía tienen estas entradas. (Me salté algunas respuestas arriba)

127.0.0.1 localhost 127.0.0.1 testproject.localhost

Ambas direcciones IP 127.0.0.1 son las mismas aquí.

Proporcione una dirección IP diferente a testproject.localhost desde la subred ip loopback.

Sharad Chhetri
fuente