Esta guía provee instrucciones para solucionar problemas con el servidor web Apache. Apache es una herramienta ampliamente personalizable para servir tráfico HTTP. El hecho de que permite tantas configuraciones y ajustes en tantos sitios distintos, puede llegar a confundir incluso a los usuarios más avanzados.

En esta guía, se abordan los pasos para solucionar los problemas básicos de Apache y luego se procede a explicar algunas técnicas avanzadas que le pueden ayudar a desenredar directivas con conflictos. Recomendamos comenzar esta guía desde el principio y seguirla paso a paso. Cuando esté listo, será capaz de depurar su instalación de Apache.

¿Se está ejecutando su servidor Apache?

El primer paso, es verificar si el servidor web Apache está en ejecución. Para hacerlo siga los siguientes pasos:

  1. Acceda a su servidor usando su cliente SSH favorito.

  2. Ingrese el siguiente comando:

     sudo service apache2 status
    
  3. Si Apache está en ejecución, entonces podrá ver el siguiente mensaje:

     Apache is running (pid 26874)
    

Si Apache no está en ejecución, continúe con el siguiente paso de esta guía para reiniciarlo.

También puede investigar la posibilidad de problemas de memoria en caso de que Apache se detenga inesperadamente.

Reiniciar Apache

Incluso si Apache está en ejecución, puede que sea útil reiniciar este servidor. Esto le permitirá leer el mensaje de bienvenida de Apache. Si usted obtiene un error, puede usar el texto e ingresarlo en línea en busca de una solución a su problema particular. Tenga en cuenta que reiniciar su servidor Apache puede producir un tiempo de inactividad de varios segundos.

Debian y Ubuntu:

sudo service apache2 restart

Fedora y CentOS:

sudo service httpd restart

Nota:
En su lugar, también puede usar alguno de los siguientes tres comandos, dependiendo de su distribución de Linux:

/etc/init.d/httpd restart

/etc/init.d/apache2 restart

/etc/rc.d/httpd restart

Volver a cargar Apache

Reiniciar o recargar Apache también puede ser útil si hizo cambios recientes en su servidor, pero no parecen surtir efecto. Esto se cumple cuando se hacen cambios directamente en los archivos de configuración de Apache, así como con los cambios que ha hecho en la configuración para un lenguaje dinámico como mod_python o mod_rails (por ejemplo: Phusion Passenger o mod_rack), mod_ruby, entre otros. Estos hacen una interfaz de código caché internamente y no vuelven a leer los scripts en las nuevas solicitudes.

Recargar hace que Apache vuelva a leer sus archivos de configuración e incorpore los cambios sin necesidad de un reinicio, evitando el tiempo de inactividad de su servidor web, que podría afectar sus sitios web alojados. Para volver a cargar la configuración de Apache ejecute el siguiente comando:

  • Para Debian o Ubuntu:

      /etc/init.d/apache2 reload
    
  • Para Fedora o CentOS:

      /etc/init.d/httpd reload
    

Verificar los registros de eventos o logs

El mejor lugar para comprobar los errores obtenidos en su servidor Apache es a través de los registros o logs de errores. Para ver los registros de errores, la recomendación es usar el comando tail acompañado del parámetro -f, lo cual le muestra la parte más reciente del archivo log y le permite observar los últimos errores generados en tiempo real. Por ejemplo:

tail -f /var/log/apache2/error.log

Pulse CTRL + C para salir de la visualización del log en tiempo real.

De forma predeterminada, las ubicaciones de los archivos log son:

  • Debian y Ubuntu: /var/log/apache2/error.log
  • Fedora y CentOS: /var/log/httpd/error_log

Los registros de acceso también pueden ser útiles para encontrar información específica sobre los visitantes a su servidor. Las ubicaciones predeterminadas de los logs de acceso son:

  • Debian y Ubuntu: /var/log/apache2/access.log
  • Fedora y CentOS: /var/log/httpd/access_log

Activar los registros detallados o Verbose Logs

En ocasiones puede ser útil registrar información adicional sobre su servidor Apache. Esto puede aumentar la cantidad de detalles que se muestran en sus logs al cambiar el nivel de los mismos. Para activar este tipo de registro siga los siguientes pasos:

  1. Abra su archivo de configuración de Apache para la edición. El archivo de configuración en CentOS y Fedora debería estar ubicado en /etc/httpd/httpd.conf. Este ejemplo muestra la ubicación del archivo de configuración en Debian y Ubuntu:

     sudo nano /etc/apache2/apache2.conf
    
  2. Ubique la variable LogLevel y actualícela del valor predeterminado warn al valor info o debug. debug producirá la mayor cantidad de información (es posible que generar logs a nivel debug sea demasiado descriptivo e innecesario para la mayoría de los usuarios):
    Extracto del archivo: /etc/apache2/apache2.conf

     # LogLevel: Control the number of messages logged to the error_log.
     # Possible values include: debug, info, notice, warn, error, crit,
     # alert, emerg.
     # 
     LogLevel debug
    
  3. Reinicie Apache:

     sudo service apache2 restart
    

Recuerde cambiar el comando si es necesario.

  1. Realice la operación que le estaba generando problemas y luego verifique los logs para encontrar información detallada y errores.

Advertencia:
Se recomienda ampliamente, que al terminar el procedimiento anterior, se devuelva el cambio en la variable y se asigne el valor warn una vez más. De lo contrario, su servidor podría llenarse de logs innecesarios.

Comprobar la sintaxis

Apache incluye una pequeña herramienta muy útil para comprobar la sintaxis en su configuración. Úsela para asegurarse de que no falta algún signo de puntuación (u otros problemas sintácticos similares) en sus archivos de configuración.

Debian y Ubuntu:

apache2ctl -t

Fedora y CentOS:

httpd -t

Comprobar las definiciones de hosts virtuales

Otra herramienta útil de Apache le permite ver todos los hosts virtuales en su servidor, sus opciones, los nombres de archivos y números de líneas donde están definidos. Esto le ayudará a hacer un inventario de todos los dominios que están configurados en su host. También puede ser útil para ubicar el archivo correcto donde debería actualizar detalles de configuración para un dominio, en caso de no tener seguridad sobre la ubicación de estos.

Debian y Ubuntu:

apache2ctl -S

CentOS y Fedora:

httpd -S

Asegúrese de que todas las directivas <VirtualHost> utilicen direcciones IP y números de puertos que coincidan con los definidos en las directivas NameVirtualHost. Por ejemplo, si ha establecido lo siguiente: NameVirtualHosts *:80, entonces la configuración del host virtual debería comenzar con <VirtualHost *:80>. Si usted ha establecido: NameVirtualHosts 123.34.56.79:80, entonces la configuración del host virtual debería comenzar con <VirtualHost 123.34.56.79:80>. Si ha establecido NameVirtualHosts *, entonces el archivo de configuración del host debe comenzar con <VirtualHost *>.

Nota:
Puede tener varios valores para NameVirtualHost, que es lo que necesitará hacer si está ejecutando sitios en varias IPs y puertos. Solo asegúrese de que las configuraciones de <VirtualHost> se correspondan con las directivas NameVirtualHost configuradas.

Solucionar problemas de directivas en conflicto

Si usted ha modificado una opción de configuración y aún surte efecto, incluso después de volver a cargar la configuración de Apache, es posible que la nueva opción esté anulada o sobrescrita por una directiva en conflicto. El punto principal que debe recordar es que las últimas directivas anulan las directivas anteriores. Así pues, la directiva que se lea de última, será siempre la que surta efecto.

Estos puntos pueden ayudarle a aclarar el orden en el cual se leen las directivas:

  • Recuerde que los archivos incluidos son leídos en el punto de su inclusión, antes de que el resto del archivo original se lea.
  • La configuración en <Directory> es leída cada vez que el servidor se inicia o es recargado. Por otro lado, los archivos .htaccess son leídos antes de que se sirvan los recursos. Como resultado, los archivos .htaccess pueden anular las directivas directory. Para probar si esto es lo que está ocurriendo, desactive sus archivos .htaccess temporalmente.
  • Las directivas <Location> se leen después de las secciones <Directory> y <Files>, así que las opciones aquí podrían anular o sobrescribir otros ajustes anteriores.
  • Los archivos de configuración se leen en serie. Por ejemplo, una opción configurada al principio del archivo apache2.conf o httpd.conf podría ser anulada por una configuración en el archivo conf.d/ o un archivo de host virtual.
  • Cuando se incluye un directorio completo, los archivos de ese directorio son incluidos secuencialmente (alfabéticamente) con base en el nombre.
  • Los sistemas Debian y Ubuntu tienen un archivo llamado /etc/apache2/ports.conf, donde están configuradas las directivas NameVirtualHost y Listen. Estos valores determinan la dirección o direcciones IP a las cuales se enlaza Apache, y en cuál(es) puerto(s) escucha el servidor web a las solicitudes HTTP. Esto podría causar conflictos con otros archivos de configuración en algunas ocasiones.

Recursos adicionales

Los problemas que presente su servidor web Apache pueden ser muy diversos y en esta guía solo hacemos un enfoque general. Para complementar la información aquí presentada puede consultar los siguientes recursos. Aunque este material es provisto esperando que sea útil, tome en cuenta que no podemos dar fe de la actualidad o precisión de los contenidos externos.