Apache no se reiniciará después de agregar el archivo de configuración VirtualHost, ¿por qué no?

14

En un CentOS 7servidor, aparece el siguiente error cuando escribo sudo apachectl restartdespués de agregar un archivo de inclusión en la parte inferior de httpd.conf:

Job for httpd.service failed. See 'systemctl status httpd.service' and 'journalctl -xn' for details.

Cuando escribo sudo systemctl status httpd.service -l, el resultado es:

httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled)
   Active: failed (Result: exit-code) since Tue 2014-12-23 20:10:37 EST; 2min 15s ago
  Process: 2101 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=0/SUCCESS)
  Process: 2099 ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND (code=exited, status=1/FAILURE)
 Main PID: 2099 (code=exited, status=1/FAILURE)
   Status: "Total requests: 0; Current requests/sec: 0; Current traffic:   0 B/sec"

Dec 23 20:10:37 ip-address httpd[2099]: AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::e23f:49ff:feb7:2a21. Set the 'ServerName' directive globally to suppress this message
Dec 23 20:10:37 ip-address systemd[1]: httpd.service: main process exited, code=exited, status=1/FAILURE
Dec 23 20:10:37 ip-address systemd[1]: Failed to start The Apache HTTP Server.
Dec 23 20:10:37 ip-address systemd[1]: Unit httpd.service entered failed state.

Puedo apachereiniciar si comento la directiva de inclusión, y puedo volver a crear el error al descomentar la directiva de inclusión. ¿Cómo puedo apachecomenzar a usar correctamente el contenido del archivo de inclusión?

La línea en la parte inferior de httpd.confque desencadena el error es: IncludeOptional sites-enabled/*.conf. El único .confarchivo en la sites-enabledcarpeta es mydomain.com.conf, que tiene los siguientes contenidos:

<VirtualHost *:80>
    ServerName www.mydomain.com
    ServerAlias mydomain.com
    DocumentRoot /var/www/mydomain.com/public_html
    ErrorLog /var/www/mydomain.com/error.log
    CustomLog /var/www/mydomain.com/requests.log combined
</VirtualHost>

El httpd.confes el mismo que lo que viene pre-instalado con httpd, a excepción de la línea directiva include anteriormente. Lo sé porque lo hice sudo yum remove httpd mod_ssly sudo yum install httpd mod_ssljusto antes de activar este error. Todo httpd.confse puede leer en un sitio para compartir archivos haciendo clic en este enlace .

Encontré este problema al seguir explícitamente los pasos de este tutorial .

Cuando comento el archivo de inclusión, http/mydomain.comsirve con éxito el contenido estático ubicado en /var/www/html, que es el DocumentRootdefinido en httpd.conf. El problema parece provenir de la VirtualHostdirectiva en el archivo de inclusión que se muestra arriba. Para ayudar en el diagnóstico, he incluido en EDITAR # 3 a continuación enlaces a todos los .confarchivos contenidos en las tres directivas de inclusión httpd.conf.

EDITAR # 1

Cuando intento el consejo de m32 para cambiar la /etc/hostnamedefinición mydomain.com, apacheaún no se reiniciará, y los systemctl status httpd.serviceresultados en lo siguiente:

[sudo_user_account@server-ip-address ~]$ sudo systemctl status httpd.service -l
httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled)
   Active: failed (Result: exit-code) since Tue 2014-12-23 14:25:35 EST; 20s ago
  Process: 31993 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=0/SUCCESS)
  Process: 31991 ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND (code=exited, status=1/FAILURE)
 Main PID: 31991 (code=exited, status=1/FAILURE)
   Status: "Total requests: 1; Current requests/sec: 0; Current traffic:   0 B/sec"

Dec 23 14:25:35 hostname systemd[1]: httpd.service: main process exited, code=exited, status=1/FAILURE
Dec 23 14:25:35 hostname systemd[1]: Failed to start The Apache HTTP Server.
Dec 23 14:25:35 hostname systemd[1]: Unit httpd.service entered failed state.  

EDITAR # 2

También probé el consejo de eyoung100 para cambiar el contenido de mi /etc/hostsarchivo, como se define en la siguiente imagen, pero sigo teniendo el mismo error definido en EDITAR # 1 arriba.

EDITAR # 3

Por solicitud de DerekC, corrí sudo apachectl configtesty obtuve:

AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::e23f:49ff:feb7:2a21. Set the 'ServerName' directive globally to suppress this message
Syntax OK

Además, según la sugerencia de GarethTheRed, examiné las directivas de inclusión en httpd.conf . Hay tres directivas de inclusión en httpd.conf . He enumerado los tres a continuación, junto con todos los archivos ubicados en la carpeta de cada directiva. Estos son todos los .confarchivos estándar instalados con httpd. No he modificado ninguno de ellos todavía. Puede ver cada uno de los .confarchivos en un sitio para compartir archivos haciendo clic en los enlaces a continuación:

Include conf.modules.d/*.confhace referencia a los siguientes archivos en el conf.modules.ddirectorio: 00-base.conf
00-dav.conf
00-lua.conf
00-mpm.conf
00-proxy.conf
00-ssl.conf
00-systemd.conf
01-cgi.conf

IncludeOptional conf.d/*.confhace referencia a los siguientes archivos en el conf.ddirectorio: autoindex.conf
ssl.conf
userdir.conf
welcome.conf
También hay un archivo README que estoy omitiendo aquí.

Además, la IncludeOptional sites-enabled/*.confdirectiva y sus contenidos se describieron a fondo en el OP anterior.

¿Alguno de estos archivos de inclusión está en conflicto con la VirtualHostconfiguración de mydomain.com.conf?

EDITAR # 4

Según la sugerencia de garethTheRed, me mudé mydomain.com.confal conf.ddirectorio y luego comencé a comentar las líneas mydomain.com.confuna por una hasta que httpdpude reiniciar. Luego comencé a dejar de comentar líneas para ver cuántas líneas podían quedar y httpdaún así reiniciar. Pude httpdreiniciar, pero sigo systemctl status httpd.service -lproduciendo la misma advertencia:

AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::e23f:49ff:feb7:2a21. Set the 'ServerName' directive globally to suppress this message

La VirtualHostsintaxis que permite httpdcomenzar (aunque continúa generando la advertencia anterior) es la siguiente:

<VirtualHost *:80>
    ServerName www.mydomain.com
    ServerAlias mydomain.com
    DocumentRoot /var/www/mydomain.com/public_html
</VirtualHost>  

Tenga en cuenta que tuve que omitir las siguientes líneas, cuya presencia aumenta la advertencia en una incapacidad completa para iniciar http:

# ErrorLog /var/www/mydomain.com/error.log
# CustomLog /var/www/mydomain.com/requests.log combined

Además, corrí sudo journalctl -xelu httpdy el terminal respondió repitiendo lo siguiente muchas veces:

-- 
-- Unit httpd.service has finished shutting down.
Dec 24 17:48:43 server-ip-address systemd[1]: Stopped The Apache HTTP Server.
-- Subject: Unit httpd.service has finished shutting down
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit httpd.service has finished shutting down.
Dec 24 17:48:48 server-ip-address systemd[1]: Starting The Apache HTTP Server...
-- Subject: Unit httpd.service has begun with start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit httpd.service has begun starting up.
Dec 24 17:48:48 server-ip-address httpd[10364]: AH00558: httpd: Could not reliably d
Dec 24 17:48:48 server-ip-address systemd[1]: Started The Apache HTTP Server.
-- Subject: Unit httpd.service has finished start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit httpd.service has finished starting up.
-- 
-- The start-up result is done.
lines 887-909/909 (END)

Nota: Los resultados anteriores siguen siendo los mismos independientemente de si uso el archivo de hosts de eyoung100 o el archivo de hosts de m32. Para que esta pregunta sea respondida, creo que debería poder crear archivos de registro y también evitar la advertencia del nombre del servidor. De lo contrario, me temo que los pasos posteriores de configuración de httpd serán propensos a errores persistentes.

CodeMed
fuente
1
¿Qué error exacto "nebuloso" se produce cuando agrega una ServerNamedirectiva? Añádelo a tu pregunta.
wurtel
1
¿Cuál es la salida de apachectl configtest?
DerekC
¿Hay un IncludeOptionalal final del httpd.confarchivo original ? Creo que hay una instalación predeterminada. El problema puede ser que está agregando el extra IncludeOptionalal final, lo que obliga apachea leer el archivo de configuración incluido dos veces y, en consecuencia, hace que falle.
garethTheRed
Para empezar, debe mover su mydomain.com.confa /etc/httpd/conf.d(donde están todos los demás) y eliminar /etc/httpd/sites-enabled(eso es algo de Debian / Ubuntu) y lo IncludeOptionalque agregó httpd.conf. Puede ignorar el AH00558mensaje por ahora ya que no se detiene apache. Luego, elimine una línea de su confarchivo hasta que encuentre al culpable (o, alternativamente, comience con uno vacío y restaure una línea a la vez).
garethTheRed
1
@garethTheRed y cualquier persona de google, no es necesario que elimine los sitios EnableOptional habilitados / *. conf. Eso fue un arenque rojo. El verdadero problema fueron los archivos de registro como se indica a continuación por garethTheRed. Seguí el mismo tutorial que el OP y tuve el mismo problema. La eliminación de las líneas del archivo de registro del archivo conf de host virtual lo arregló.
Louise Eggleton

Respuestas:

19

Los registros están causando los errores porque apacheno pueden escribir en la raíz de su sitio web. Incluso si tuviera que arreglar los permisos de archivo, SELinux lo bloquearía; que solo permite apacheescribir registros en /var/log/httpd. La solución más fácil sería cambiar su sitio web para iniciar sesión en este directorio, tal vez con un nombre de archivo que contenga el nombre del sitio web para diferenciarlo de otros registros.

ErrorLog /var/log/httpd/mydomain_com_error.log
CustomLog /var/log/httpd/mydomain_com_requests.log combined

Para configurar el nombre de host del servidor y deshacerse de la advertencia AH00558, simplemente use:

hostnamectl set-hostname --static <FQDN of your machine>

p.ej

hostnamectl set-hostname --static mydomain.com
garethTheRed
fuente
Encontré otro error mientras sigo trabajando en esto. ¿Estás dispuesto a ayudarme también? Aquí está el enlace: unix.stackexchange.com/questions/176052/…
CodeMed
2

Recibí este error cuando olvidé establecer el nombre de host para la máquina. ¿Ya lo has hecho?
Ejecute este comando:

echo 'example.com' >> /etc/hostname  

Verificar con hostname

Editar:
con el OP actualizado, parece que su archivo de hosts no está configurado correctamente. Así es como se ve el mío;

127.0.0.1 localhost.localdomain localhost
# Auto-generated hostname. Please do not remove this comment.
166.66.666.66 m32.me m32
::1     ip6-localhost ip6-loopback

Intenta configurarlo en algo simple como eso. Por supuesto, reemplace toda la información con la suya.
166.66.666.66con su propia IP
m32.me and m32con su dominio y dominio sin el TLD

m32
fuente
Eso no solucionó el problema, todavía recibo el AH00558error cuando uso su archivo de ejemplo de hosts, con mi ipy mydomain.com mydomain.
CodeMed