Fundamentos de Apache
Resumen de una línea
Conceptos base de Apache 2.4: protocolo HTTP, historia del servidor, instalación en Debian/Ubuntu, gestión con systemd y apache2ctl.
Información
- Fuente: Curso Apache 2.4 - Unidades 1-3
- Plataforma: Linux Debian/Ubuntu
- URL: https://plataforma.josedomingo.org/pledin/cursos/apache24/
Protocolo HTTP
HTTP es el protocolo base que Apache implementa. Características:
- Request/Response: Cliente solicita, servidor responde
- Sin estado: Cada petición es independiente
- Texto plano: Mensajes legibles (antes de HTTPS)
- Métodos: GET (obtener), POST (enviar), HEAD, PUT, DELETE
- Códigos estado: 2xx (éxito), 3xx (redirección), 4xx (cliente error), 5xx (servidor error)
Ejemplo request:
GET /index.html HTTP/1.1
Host: www.ejemplo.com
Historia de Apache
- 1994: Surge de “parches” (patches) al HTTPd NCSA → nombre “A patchy server” = “Apache”
- Abril 1995: Versión 0.6 publicada
- Desde 1996: Servidor HTTP más usado en internet
- 2.4 (actual): Versión estable producción desde 2012
Por qué Apache:
- Estable y maduro
- Multiplataforma (Linux, Windows, macOS)
- Código abierto (Apache License)
- Modular y extensible
Instalación en Debian/Ubuntu
# Instalar Apache 2.4
apt-get install apache2
# Estado del servicio
systemctl status apache2.service
# Control de servicio
systemctl [start|stop|restart|reload|status] apache2.serviceNota: systemctl reload recarga config sin reiniciar (graceful).
Gestión con apache2ctl
Herramienta específica de Apache para diagnóstico y control:
# Comprobar sintaxis config
apache2ctl -t
# Salida: Syntax OK
# Listar módulos cargados
apache2ctl -M
# Salida: mpm_prefork_module, core_module, mod_ssl, ...
# Listar sitios virtuales
apache2ctl -S
# Muestra VirtualHosts, puertos, config
# Ver opciones compilación
apache2ctl -V
# Salida: AP_TYPES_CONFIG_FILE, HTTPD_ROOT, MODULE_DIR
# Control del servidor
apache2ctl [-k start|restart|stop|graceful|graceful-stop]
# graceful: termina conexiones actuales, reinicia suavementeConceptos Clave
Arquitectura Modular
Apache carga solo módulos necesarios en memoria → más eficiente que incluir todo compilado.
/etc/apache2/
├── mods-available/ # Módulos disponibles (instalados)
│ ├── ssl.load, ssl.conf
│ ├── php7.0.load, php7.0.conf
│ └── ...
└── mods-enabled/ # Módulos activos (enlaces simbólicos)
├── ssl.load -> /etc/apache2/mods-available/ssl.load
└── ...
Usuario Apache
Apache corre como usuario no-root por seguridad:
# Ver usuario Apache
grep -E "^User " /etc/apache2/apache2.conf
# Típicamente: User www-dataRelaciones
Conecta con
- HTTP — Protocolo implementado
- Apache — Concepto general del servidor
- Configuración de Apache — Ficheros config
Conceptos previos
- linux — Sistema operativo base
- redes — Puertos, TCP/IP