Apuntes sobre Redes

Access.log, donde habitan los monstruos.

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:

  1. El navegador envía GET /perfil.php?id=42 al servidor.
  2. Apache recibe la petición. Detecta que es un archivo .php y lo pasa al intérprete PHP (vía módulo mod_php o php-fpm).
  3. PHP ejecuta el script. Necesita datos del usuario con id=42, así que abre una conexión a la base de datos.
  4. MySQL ejecuta la consulta y devuelve los datos a PHP.
  5. PHP genera el HTML final con esos datos y se lo devuelve a Apache.
  6. 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.

TOP