Saltar al contenido

Como crear un servidor LAMP

Un servidor LAMP es una pila (stack) de software de código abierto que se utiliza para alojar sitios web y aplicaciones web dinámicas.

¿Qué es LAMP?

El acrónimo LAMP representa:

  • Linux: El sistema operativo sobre el que se ejecuta el servidor. En nuestro caso, Ubuntu.
  • Apache: El software del servidor web, responsable de recibir las peticiones de los navegadores y entregar el contenido de las páginas web.
  • MySQL (o MariaDB): El sistema de gestión de bases de datos relacionales, utilizado para almacenar y gestionar los datos de tu sitio (como usuarios, contenido de entradas, etc.).
  • PHP: El lenguaje de programación del lado del servidor, utilizado para crear contenido dinámico y interactuar con la base de datos.

Esta guía te llevará a través de la instalación y configuración básica de cada componente en un servidor Ubuntu.


Pre-requisitos

Antes de comenzar, asegúrate de tener lo siguiente:

  1. Un servidor Ubuntu: Esta guía está pensada para Ubuntu (idealmente una versión LTS reciente como 22.04 o 24.04).
  2. Acceso de superusuario (sudo): Necesitarás privilegios sudo para instalar software y modificar archivos de configuración.
  3. Conexión a Internet: Para descargar los paquetes necesarios.
  4. Cliente SSH (opcional pero recomendado): Si estás trabajando en un servidor remoto, necesitarás un cliente SSH (como PuTTY en Windows o el comando ssh en Linux/macOS) para conectarte.

Paso 1: Actualización del Sistema

Siempre es una buena práctica comenzar actualizando el índice de paquetes y los paquetes instalados en tu sistema.

sudo apt update
sudo apt upgrade -y

Paso 2: Instalación del Servidor Web Apache

Apache es un servidor web robusto y ampliamente utilizado.

Instalar Apache:

sudo apt install apache2 -y

Ajustar el Firewall (si está activo):

Si tienes ufw (Uncomplicated Firewall) habilitado, necesitarás permitir el tráfico HTTP y HTTPS.

sudo ufw allow 'Apache Full'
# O si solo quieres HTTP por ahora:
# sudo ufw allow 'Apache'
sudo ufw status

Esto te mostrará si ufw está activo y las reglas aplicadas. Si está inactivo, puedes considerar habilitarlo más tarde por seguridad: sudo ufw enable.

Verificar el Estado de Apache:

Puedes comprobar si Apache se está ejecutando correctamente:

sudo systemctl status apache2

Busca una línea que diga active (running). También puedes abrir un navegador web y escribir la dirección IP de tu servidor. Deberías ver la página de bienvenida por defecto de Apache para Ubuntu.


Paso 3: Instalación del Sistema de Gestión de Bases de Datos (MySQL)

MySQL es el componente de base de datos de nuestra pila LAMP. MariaDB es una alternativa popular y compatible que a menudo se usa como reemplazo directo. Para esta guía, nos centraremos en MySQL, que es el que figura en el acrónimo «LAMP».

Instalar MySQL Server:

sudo apt install mysql-server -y

Asegurar la Instalación de MySQL (¡Muy Importante!):

MySQL viene con un script que te ayuda a mejorar la seguridad de tu instalación.

sudo mysql_secure_installation

Este script te guiará a través de varias opciones:

  • VALIDATE PASSWORD COMPONENT: Puedes habilitarlo para forzar contraseñas seguras (recomendado).
  • Establecer contraseña para el usuario root de MySQL: ¡Hazlo y elige una contraseña fuerte!
  • Eliminar usuarios anónimos: Sí.
  • Deshabilitar el inicio de sesión remoto del root: Sí (a menos que sepas exactamente por qué lo necesitas y cómo asegurarlo).
  • Eliminar la base de datos de prueba: Sí.
  • Recargar las tablas de privilegios: Sí.

Paso 4: Instalación de PHP y Configuración con PHP-FPM

PHP procesará el código dinámico. Para un rendimiento óptimo y una mejor gestión de los recursos, configuraremos PHP para que funcione con PHP-FPM (FastCGI Process Manager) junto con el módulo mpm_event de Apache (que es más eficiente que el antiguo mpm_prefork que se usa con libapache2-mod-php).

Instalar PHP-FPM y Extensiones Comunes:

Ubuntu 24.04 probablemente instalará PHP 8.3 por defecto con el metapaquete php-fpm.

sudo apt install php-fpm php-mysql php-curl php-gd php-xml php-mbstring php-zip -y
  • php-fpm: El manejador de procesos FastCGI.
  • php-mysql: Para que PHP pueda comunicarse con tu base de datos MySQL.
  • Otras extensiones (php-curl, php-gd, php-xml, php-mbstring, php-zip) son comúnmente requeridas por WordPress y otras aplicaciones web.

Configurar Apache para Usar PHP-FPM con mpm_event:

Este paso es importante y asume que podrías tener mpm_prefork y mod_php si se instalaron previamente o como dependencias no deseadas.

# Deshabilitar mpm_prefork y mod_php si estuvieran activos
sudo a2dismod php* # Deshabilita cualquier versión de mod_php (ej. php8.3)
sudo a2dismod mpm_prefork

# Habilitar mpm_event y los módulos necesarios para proxy_fcgi
sudo a2enmod mpm_event
sudo a2enmod proxy_fcgi setenvif

Ahora, crea o edita el archivo de configuración de Apache para PHP-FPM. Por ejemplo, para PHP 8.3 (verifica tu versión con php -v y ajusta 8.3 si es diferente):

sudo vim /etc/apache2/conf-available/php8.3-fpm.conf

Pega la siguiente configuración:

<FilesMatch \.php$>
    SetHandler "proxy:unix:/run/php/php8.3-fpm.sock|fcgi://localhost/"
</FilesMatch>

Guarda el archivo (:wq y luego Enter).

Habilita esta configuración y reinicia Apache:

sudo a2enconf php8.3-fpm
sudo systemctl restart apache2

Verifica también el estado de PHP-FPM (ajusta la versión si es necesario):

sudo systemctl status php8.3-fpm

Paso 5: Prueba de la Pila LAMP Completa

Para asegurarte de que todos los componentes funcionan juntos, vamos a crear un archivo de prueba de PHP.

Crear un Archivo info.php:

Crea un archivo en el directorio raíz web de Apache (por defecto /var/www/html/):

sudo vim /var/www/html/info.php

Añade el siguiente contenido PHP:

<?php
phpinfo();
?>

Guarda y cierra el archivo.

Probar en el Navegador:

Abre tu navegador web y ve a http://TU_DIRECCION_IP_DEL_SERVIDOR/info.php. Deberías ver una página con mucha información sobre tu configuración de PHP.

  • Busca la sección «Server API». Debería indicar «FPM/FastCGI».
  • Busca la sección «mysqlnd» o «pdo_mysql» para confirmar que el soporte de MySQL está activo.

(Importante) Elimina el Archivo info.php:

Después de verificar, elimina este archivo ya que expone información sensible de tu servidor:

sudo rm /var/www/html/info.php

¡Felicidades! Si has llegado hasta aquí y todo funciona, tienes un servidor LAMP básico operativo.


Optimizaciones y Siguientes Pasos

Configurar un servidor LAMP es solo el comienzo. Aquí van algunos consejos y próximos pasos para robustecer y mejorar tu servidor:

La Dupla Dinámica: mpm_event y PHP-FPM:

Ya lo hemos configurado, pero quiero recalcar su importancia. Usar mpm_event con PHP-FPM es significativamente más eficiente en el manejo de conexiones concurrentes y uso de memoria que la configuración tradicional con mod_php y mpm_prefork. ¡Has empezado con el pie derecho!

Virtual Hosts (Alojar Múltiples Sitios):

Si planeas alojar más de un sitio web, querrás configurar «Virtual Hosts» en Apache. Esto permite que un solo servidor responda a múltiples nombres de dominio, cada uno con su propio directorio de contenido. El directorio por defecto es /var/www/html/, pero para un nuevo sitio tusitio.com, crearías algo como /var/www/tusitio.com/ y su archivo de configuración correspondiente en /etc/apache2/sites-available/.

¡Seguridad Ante Todo! HTTPS con Let’s Encrypt:

Hoy en día, HTTPS no es opcional. Asegura tu sitio con un certificado SSL/TLS. Let’s Encrypt ofrece certificados gratuitos y puedes automatizar su instalación y renovación usando la herramienta certbot.

sudo apt install certbot python3-certbot-apache
sudo certbot --apache

Sigue las instrucciones en pantalla.

Gestión de Base de Datos con phpMyAdmin (Opcional y con Precaución):

Si prefieres una interfaz gráfica para administrar tus bases de datos MySQL, puedes instalar phpMyAdmin:

sudo apt install phpmyadmin

Durante la instalación, te preguntará qué servidor web reconfigurar (elige apache2) y si deseas configurar la base de datos para phpMyAdmin con dbconfig-common (puedes elegir «Sí»).

Advertencia: phpMyAdmin es un objetivo común para los atacantes. Si lo instalas, asegúrate de:

  • Proteger su directorio con una contraseña adicional (.htpasswd).
  • Cambiar la URL de acceso por defecto (/phpmyadmin).
  • Mantenerlo siempre actualizado.

Mantenimiento Proactivo: Actualizaciones y Logs:

Mantén tu sistema y todos los paquetes actualizados regularmente: sudo apt update && sudo apt upgrade -y.

Revisa periódicamente los logs de Apache (/var/log/apache2/), MySQL (/var/log/mysql/), y PHP-FPM (usualmente en /var/log/phpX.Y-fpm.log) para detectar problemas o actividad sospechosa.

Optimización de MySQL:

Aunque mysql_secure_installation es un buen primer paso, la optimización del rendimiento de MySQL puede ir más allá. Herramientas como MySQLTuner pueden darte recomendaciones específicas basadas en el uso de tu servidor, como ajustar innodb_buffer_pool_size y otras variables clave en tu archivo my.cnf o mysqld.cnf.

Espero que esta guía te sea de gran utilidad. Un servidor LAMP bien configurado es una herramienta poderosa. ¡Explora, aprende y crea cosas asombrosas!


Avatar de Aldo Mendoza

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *