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
- Revisa el estado y el motivo del fallo:
sudo systemctl status apache2. - Verifica la sintaxis de la configuración:
sudo apachectl configtest. - Comprueba si el puerto ya está en uso:
sudo ss -tulpn | grep :80. - 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 apache22. Corregir un error de configuración
sudo apachectl configtestEl 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-sitioPrevención
- Ejecuta siempre
apachectl configtestantes 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.