Servidores Web: Apache, PHP y MySQL
Un servidor web es un programa que escucha peticiones HTTP y responde con los recursos solicitados: páginas HTML, imágenes, archivos CSS, JSON... Cuando visitas una web, tu navegador abre una conexión TCP al servidor, envía una petición HTTP y espera la respuesta. El servidor la procesa y devuelve los datos.
En los sitios estáticos el servidor simplemente lee un archivo del disco y lo envía. En los dinámicos —la mayoría— entra en juego un lenguaje de servidor que genera el HTML en el momento de la petición, normalmente consultando una base de datos. Ahí es donde entran PHP y MySQL.
El stack LAMP
El acrónimo LAMP describe el conjunto de software más habitual para montar un servidor web en Linux:
- Linux — el sistema operativo
- Apache — el servidor web que recibe las peticiones HTTP
- MySQL (o MariaDB) — el gestor de base de datos
- PHP — el lenguaje que genera contenido dinámico
Cada componente tiene una responsabilidad clara y se comunica con los demás de forma bien definida. El conjunto puede montarse en un servidor real, en una máquina virtual o en tu propio ordenador para desarrollo local.
Ciclo de vida de una petición
Para entender cómo trabajan juntos estos componentes, sigamos el recorrido de una petición típica:
- El navegador envía
GET /perfil.php?id=42al servidor. - Apache recibe la petición. Detecta que es un archivo
.phpy lo pasa al intérprete PHP (vía módulomod_phpophp-fpm). - PHP ejecuta el script. Necesita datos del usuario con id=42, así que abre una conexión a la base de datos.
- MySQL ejecuta la consulta y devuelve los datos a PHP.
- PHP genera el HTML final con esos datos y se lo devuelve a Apache.
- Apache envía el HTML al navegador con el código de respuesta
200 OK.
El navegador nunca ve el código PHP ni la consulta SQL: solo recibe el HTML resultante.
Apache en detalle
Apache es el componente central del stack. Sus responsabilidades principales son:
- Escuchar en los puertos 80 (HTTP) y 443 (HTTPS) y aceptar conexiones TCP.
- Interpretar la petición HTTP y determinar qué recurso sirve o qué módulo procesa.
- Gestionar múltiples sitios en el mismo servidor mediante Virtual Hosts.
- Controlar el acceso, las redirecciones y las cabeceras de respuesta.
- Registrar toda la actividad en los logs de acceso y error.
Apache es altamente modular: la mayor parte de su funcionalidad —soporte PHP, SSL, compresión, reescritura de URLs— se activa o desactiva mediante módulos, sin tocar el núcleo del servidor.
Entorno de desarrollo local
Antes de subir un proyecto a un servidor real, lo normal es desarrollar en local: tu propio ordenador actúa como servidor. Instalar el stack LAMP en local te permite:
- Probar cambios al instante sin necesidad de despliegues.
- Trabajar sin conexión a internet.
- Tener control total sobre la configuración.
Las siguientes lecciones cubren la instalación y configuración de cada componente en Ubuntu/Debian, que es el entorno de referencia de este manual.
En la próxima lección: instalación de Apache en Ubuntu/Debian: comandos, estructura de directorios y gestión del servicio.