Error de Apache "No se pudo determinar de manera confiable el nombre de dominio completo del servidor"

432

Cuando reinicio mi servidor Apache usando el comando

sudo /etc/init.d/apache2 restart

Obtuve el siguiente error:

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

¿El servidor usa 127.0.1.1 en lugar de 127.0.0.1? ¿Qué causa este error?

Deepu
fuente

Respuestas:

509

6 # 13.04 y mayores

Esto es solo una advertencia amistosa y no es realmente un problema (ya que algo no funciona).

Si vas a:

/etc/apache2/apache2.conf

e inserte:

ServerName localhost   

y luego reinicie apache escribiendo en la terminal:

sudo systemctl reload apache2

El aviso desaparecerá.

Si tiene un nombre dentro /etc/hostname, también puede usar ese nombre en lugar de localhost.


Y usa 127.0.1.1si está dentro de tu /etc/hosts:

127.0.0.1 localhost
127.0.1.1 myhostname

Metodo preferido

Solución de problemas de Apache

Si obtiene este error:

apache2: Could not determine the server's fully qualified domain name, 
using 127.0.0.1 for ServerName

luego use un editor de texto como "sudo nano" en la línea de comando o "gksudo gedit" en el escritorio para crear un nuevo archivo,

sudo nano /etc/apache2/conf.d/fqdn

o

gksu "gedit /etc/apache2/conf.d/fqdn"

Luego añade

ServerName localhost

al archivo y guardar. Todo esto se puede hacer en un solo comando con lo siguiente:

 echo "ServerName localhost" | sudo tee /etc/apache2/conf.d/fqdn

Pero en Ubuntu 14.04:

 echo "ServerName localhost" | sudo tee /etc/apache2/conf-available/fqdn.conf
 sudo a2enconf fqdn

No olvides el ".conf" (sin no funcionará).

Rinzwind
fuente
2
Esto también se menciona en la documentación de configuración de Ubuntu LAMP para la solución de problemas de Apache . Allí recomiendan crear un archivo /etc/apache2/conf.d/fqdn con ServerName localhostél
icc97
Muy buena respuesta, pero también recomendaría ponerlo en el directorio conf.d :)
cwd
3
/etc/apache2/conf.d/no existe después de mi instalación de lamp-server^en 14.04
redanimalwar
@redanimalwar Para la versión 13.10 y posteriores ver la respuesta de @ Starx a continuación.
Dan
3
Para el último paso (crear un enlace simbólico en 14.04) recomendaría, sudo a2enconf fqdnaunque técnicamente debería ser lo mismo.
nuala
176

13.10 o más reciente

A partir de Apache 2.4, que está disponible de forma predeterminada a partir de 13.10, no puede utilizar el método para agregar un archivo de configuración en el conf.ddirectorio.

Apache ya no usa el conf.ddirectorio. Todos los archivos de configuración se almacenan dentro del /etc/apache2/conf-availabledirectorio y todos los archivos de configuración ahora deben tener una .confextensión.

Para resolver este mensaje en Apache 2.4, tenemos que crear un archivo de configuración dentro del directorio conf-available. Por ejemplo servername.conf.

sudo vi /etc/apache2/conf-available/servername.conf

Y dentro de esto solo necesitamos agregar una línea

ServerName localhost

Puede combinar los dos comandos anteriores en uno con:

echo "ServerName localhost" | sudo tee /etc/apache2/conf-available/servername.conf

Si desea utilizar un nombre de dominio o cualquier otro nombre, dependiendo del requisito, está bien, simplemente reemplácelo localhostcon lo que necesite. A continuación, debe habilitar esta configuración. Para esto, debe ejecutar el siguiente comando:

sudo a2enconf servername

a2enconfes un comando para habilitar un archivo de configuración en Apaches 2.4. También tenga servernameen cuenta que en el comando anterior proviene del nombre del archivo de configuración servername.conf. Si su archivo de configuración fuera, ngenericserver.confentonces tendría que escribir sudo a2enconf ngenericserver.

Después de esto, vuelva a cargar el servidor y el mensaje anterior ya no lo molestará.

sudo service apache2 reload

o

sudo apache2ctl graceful

Ahora, después de esto, verá que el mensaje no se volverá a mostrar y se solucionará el problema.

Starx
fuente
3
¿Alguien sabe cómo hacer que Apache diga con qué archivo de configuración está teniendo el problema? No sé por qué los desarrolladores nunca piensan poner esto en sus mensajes de error: ¡apenas se necesita mucho código!
John Y
Si tengo un fqdm de Internet para este servidor, ¿es este el lugar para colocarlo? es decir, ¿debería sustituir myhost.org en lugar de localhost?
CPBL
1
@CPBL Este será el nombre del servidor predeterminado para todos los sitios. Si solo tiene un sitio, eso es todo lo que necesita hacer. Si tiene varios sitios en su servidor, también deberá agregar la directiva de nombre de servidor para cada sitio en su respectiva configuración de host virtual.
Dan
1
Funciona en 14.04 LTS.
Parto
1
Su enlace citado parece estar muerto, por favor arregle.
Fredrick Gauss
28

Apache2 también puede obtener el FQDN de un nombre de host del sistema configurado correctamente en lugar de codificarlo en el archivo de configuración de apache. La codificación rígida también causará confusión si cambia el nombre de host. En realidad, no necesita ninguna ServerNamedirectiva httpd.confni ningún archivo de configuración de Apache.

Ponga lo siguiente en /etc/hosts:

# IPv4 and IPv6 localhost aliases
127.0.0.1 hostname.domainname.com  hostname  localhost
::1       hostname.domainname.com  hostname  localhost

¿Dónde hostname.domainname.comestá el FQDN de su máquina?

Junto con un nombre de host configurado correctamente en /etc/hostname/o con hostnamectl, esto también ayudará a que otros servicios en su máquina se ejecuten correctamente (es decir, la solicitud de inicio de sesión, que se muestra en This is hostname.domainname.comlugar de This is hostname.unknown_domain).

Andrew Mao
fuente
55
+1 para "un nombre de host del sistema configurado correctamente". Quería configurar el servidor correctamente. Esto también solucionó mi error en el registro[warn] RSA server certificate CommonName (CN) <fqdn> does NOT match server name!?
transistor1
¿Crees que esto debería funcionar con Apache 2.2.22? Todavía obtengo "No se pudo determinar de manera confiable el nombre de dominio completo del servidor, usando 127.0.1.1 para ServerName"
David Winiecki
Se hostname localhostsupone que es myubuntuservername localhost? O la cadena literal hostname localhost? No fue claro en su respuesta
Jonathan
2
Esta debería ser la respuesta aceptada. Sin 127.0.0.1embargo, parece que puede necesitar asociar el FQDN a la dirección IP estática .
Skippy le Grand Gourou
1
Esta fue la mejor respuesta para mí en Ubuntu 18.04 Desearía que la documentación fuera coherente, aunque el nombre de dominio completo no es la misma terminología aquí ni en ningún otro lado. si mi nombre de dominio completo fuera google.com y mi nombre de servidor fuera google, mi entrada en / etc / hosts sería 127.0.0.1 google.com google. Podría reemplazar la línea localhost y el host local de anuncios al final de esta línea si yo deseo. Usé
NZ Dev
26
  • Abrir una terminal
  • Abre el /etc/apache2/httpd.confarchivo:

    sudo editor /etc/apache2/httpd.conf # [1]
    
  • Por defecto, estaría en blanco. Simplemente agregue la siguiente línea:

    ServerName localhost
    
  • Guarda el archivo y cierra

  • Reiniciar el servidor

    sudo service apache2 restart
    

[1] Lanzar editor predeterminado, ver sudo update-alternatives --config editor

verde
fuente
después de ejecutar el último comando, se produce el siguiente error ** Reinicio del servidor web apache2 / usr / sbin / apache2ctl: 87: ulimit: límite de configuración de error (operación no permitida) / usr / sbin / apache2ctl: 87: ulimit: límite de configuración de error (operación no permitido) (13) Permiso denegado: make_sock: no se pudo vincular a la dirección 0.0.0.0:80 no hay zócalos de escucha disponibles, apagado No se pueden abrir registros La acción 'inicio' falló. El registro de errores de Apache puede tener más información. [FAIL] ** @ GREEN7
Deepu
pruebe 'sudo service apache2 restart'
waterloo2005
20

En la nueva versión de apache2, solo sigue un comando como este:

sudo nano /etc/apache2/apache2.conf

Agregue el siguiente final de línea nuevo del archivo:

ServerName localhost

Luego reinicie apache2:

sudo service apache2 restart

Se hace.

empugandring
fuente
6

Creo que es un poco mejor crear un nuevo archivo /etc/conf.dpara modificarlo apache2.confo httpd.conf.

Es una preferencia personal que mantiene mis cambios de configuración separados del paquete de distribución. Entonces las actualizaciones son menos complicadas.

Creo el archivo /etc/apache2/conf.d/AAserverNamey solo contiene:

ServerName myhost.mycomain.tld

Las otras sugerencias ciertamente también funcionan.

areeda
fuente
2

En Ubuntu 16.04:

sudo -i

echo 'ServerName localhost' > /etc/apache2/conf-available/server-name.conf
a2enconf server-name
Eduardo Cuomo
fuente
1

Añadir ServerName localhost

A

 sudo leafpad /etc/apache2/apache2.conf

 sudo leafpad /etc/apache2/httpd.conf

No es un error ... Es solo un recordatorio de amigo

Serem
fuente
1

Especificar ServerName localhosten sus archivos de configuración fuera de las secciones de host virtual es la forma de hacerlo.

Algunas otras respuestas sugieren que debe modificar /etc/apache2/httpd.conf. Este archivo se sobrescribe cuando apache se actualiza desde apt. Para la configuración de Apache que no desea sobrescribir, debe crear un nuevo archivo. Aquí está la "forma Debian" para hacer este cambio de configuración:

# 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

Esto es básicamente lo mismo que la respuesta de Stark, pero en una forma de script fácil de copiar y pegar. Originalmente había publicado esto en una pregunta marcada como duplicada: https://askubuntu.com/a/432408

Stephen Ostermiller
fuente
1

En Ubuntu 16.04 :

Agregue ServerName localhostal archivo httpd.confusando el siguiente comando.

sudo vi  /etc/apache2/httpd.conf

Luego incluya esta línea Include httpd.confal final de este archivo

sudo vi /etc/apache2/apache2.conf

Verifique nuevamente si hay errores de sintaxis

sudo apache2ctl configtest

Ahora deberías obtener

Syntax OK

Ahora puede reiniciar el servidor correctamente volviendo a cargar la configuración

sudo service apache2 reload

o matar el proceso y comenzar de nuevo

sudo service apache2 restart
Dominic Motuka
fuente
0

En Ubuntu 11.10, vi este mensaje, junto con un inicio bloqueado que se produce porque mi disco estaba lleno. Uno de los archivos de registro se había vuelto deshonesto . Probablemente no hubo realmente un problema con Apache, pero este mensaje fue la última pista dada antes de que se bloqueara el arranque.

Para solucionar el problema, tuve que arrancar en modo de recuperación y eliminar el archivo de registro rebelde.

sin bar
fuente
0

Si está usando bash y quiere dependencias mínimas (y solo quiere una línea para su script de punto de entrada si está usando Docker como yo), estas dos opciones deberían funcionar.

Si quieres localhost:

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

Si desea el nombre de host existente:

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

Esto utiliza los operadores de redireccionamiento bash para agregar la cadena al final del archivo. Echo inserta automáticamente la nueva línea, por lo que está todo listo.

Andrew Odri
fuente
0

Ejecute el siguiente comando:

apachectl -t -D DUMP_INCLUDES

para determinar la ruta a su httpd.confarchivo de configuración, luego edite ese archivo y descomente / modifique la línea que especifica el valor para la ServerNameopción, por ejemplo

ServerName localhost

Para el servidor web, use el nombre DNS registrado (por ejemplo example.com).

Si su host no tiene un nombre DNS registrado, ingrese su dirección IP aquí.

kenorb
fuente
0

En Ubuntu 16.04 :

Agregue ServerName localhostal archivo httpd.confusando el siguiente comando.

sudo vi  /etc/apache2/httpd.conf

Luego incluya esta línea Include httpd.confal final de este archivo

sudo vi /etc/apache2/apache2.conf

Verifique nuevamente si hay errores de sintaxis

sudo apache2ctl configtest

Ahora deberías obtener

Syntax OK

Ahora puede reiniciar el servidor correctamente volviendo a cargar el servicio sudo de configuración apache2 restart

Dominic Motuka
fuente