Causas posibles

  • 01. Problema
  • 02. Causas posibles
  • 03. Cómo comprobarlo
  • 04. Soluciones
  • 05. Prevención
  • Otro proceso ya está usando el puerto 80 u 443 (por ejemplo Nginx o un contenedor).
  • Un error de sintaxis en un archivo de configuración o virtual host.
  • Un módulo de Apache está mal instalado o falta una dependencia.
  • Problemas de permisos sobre los archivos de configuración o el DocumentRoot.

Cómo comprobarlo

  1. Revisa el estado y el motivo del fallo: sudo systemctl status apache2.
  2. Verifica la sintaxis de la configuración: sudo apachectl configtest.
  3. Comprueba si el puerto ya está en uso: sudo ss -tulpn | grep :80.
  4. Revisa el log de error completo: sudo tail -n 50 /var/log/apache2/error.log.

Soluciones

1. Liberar el puerto ocupado por otro servicio

sudo systemctl stop nginx      # o el servicio que esté usando el puerto
sudo systemctl start apache2

2. Corregir un error de configuración

sudo apachectl configtest

El comando indicará el archivo y la línea exactos donde está el error de sintaxis.

3. Revisar permisos del DocumentRoot

sudo chown -R www-data:www-data /var/www/mi-sitio
sudo chmod -R 755 /var/www/mi-sitio

Prevención

  • Ejecuta siempre apachectl configtest antes de recargar tras editar la configuración.
  • Evita tener dos servidores web escuchando en el mismo puerto sin un proxy delante que los diferencie.
  • Añade Apache a las comprobaciones de tu sistema de monitorización para detectar caídas rápido.

Preguntas frecuentes

¿Cómo sé qué virtual host está causando el error?

El log de error suele indicar el archivo de configuración exacto. También puedes desactivar sitios uno a uno con a2dissite hasta aislar el problema.

systemctl status dice "active (running)" pero el sitio no carga, ¿qué reviso?

Comprueba el virtual host correcto para ese dominio/IP con apache2ctl -S, y revisa reglas de firewall que puedan estar bloqueando el puerto.

Artículos relacionados