Guía Fácil: Configura tu Servidor Web con Nginx, PHP 8.2 y MariaDB en Debian 12

¿Quieres montar tu propio servidor web en Debian 12 con Nginx, PHP y MariaDB? En esta guía te explico cómo hacerlo paso a paso, de manera sencilla y práctica. Está pensada para quienes están empezando con servidores Linux y buscan un entorno básico para probar ideas o experimentar, antes de dar el salto a algo más serio como un servidor en producción. Además, te dejo algunos consejos para mejorar el rendimiento y la seguridad. ¡Manos a la obra!

Conceptos Clave

  • Servidor Web (Nginx): Escucha lo que piden los navegadores y les envía páginas web, ya sean archivos simples o dinámicos.
  • Base de Datos (MariaDB): Guarda y organiza datos, como los usuarios de una app o los posts de un blog.
  • PHP-FPM (PHP 8.2): El motor que permite a Nginx ejecutar código PHP. Usaremos la versión 8.2, que viene con Debian 12, para crear páginas que se adapten a lo que necesitas.
  • HTTP y HTTPS: HTTP mueve la información en la web. HTTPS hace lo mismo, pero cifrado, para que nadie espíe tus datos.

Con esto en mente, ¡estás listo para avanzar!

Paso 1: Mantén tu Sistema al Día

Primero, asegura que tu Debian 12 esté actualizado. Abre la terminal y escribe:

sudo apt update sudo apt upgrade -y

update refresca la lista de paquetes disponibles, y upgrade instala las últimas versiones de lo que ya tienes. El -y dice «sí» a todo automáticamente, para que sea más rápido.

Paso 2: Instala Nginx, tu Servidor Web

Nginx es ligero, rápido y perfecto para empezar. Instálalo con:

sudo apt install nginx -y

Cuando acabe, comprueba que funciona: abre tu navegador y escribe la IP de tu servidor (la de tu VPS o máquina). Si ves «Welcome to Nginx!», ¡vas por buen camino!

Paso 3: Añade MariaDB para tus Datos

MariaDB es ideal para almacenar la información de tus proyectos. Instálala así:

sudo apt install mariadb-server -y

Después, asegura su instalación con:

sudo mysql_secure_installation

Te pedirá cosas como poner una contraseña para el usuario root, eliminar cuentas anónimas, desactivar accesos remotos innecesarios y borrar una base de datos de prueba. Responde «sí» a casi todo; es un paso rápido y esencial.

Crea una Base de Datos y un Usuario

Prepara una base de datos para tus aplicaciones. Entra a MariaDB con:

sudo mariadb

Y ejecuta estos comandos (personaliza nombres y contraseñas):

CREATE DATABASE mi_base_de_datos; CREATE USER 'mi_usuario'@'localhost' IDENTIFIED BY 'mi_contraseña'; GRANT ALL PRIVILEGES ON mi_base_de_datos.* TO 'mi_usuario'@'localhost'; FLUSH PRIVILEGES; EXIT;

Esto crea una base de datos (mi_base_de_datos) y un usuario (mi_usuario) con acceso solo a ella. ¡Lista para usar!

Paso 4: Conecta Nginx con PHP 8.2

Para manejar páginas dinámicas, instala PHP-FPM 8.2 y el módulo para MariaDB:

sudo apt install php8.2-fpm php8.2-mysql -y

Ahora, configura Nginx para procesar archivos PHP. Abre el archivo por defecto:

sudo nano /etc/nginx/sites-available/default

Busca (o añade) la sección location ~ \.php$ y asegúrate de que quede así, usando el socket de PHP 8.2:

location ~ \.php$ { include snippets/fastcgi-php.conf; # Asegúrate que esta línea apunta al socket de tu versión de PHP fastcgi_pass unix:/run/php/php8.2-fpm.sock; # Añade estas líneas si no existen dentro del bloque location # include fastcgi_params; # fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; }

Nota: A veces, las líneas include fastcgi_params; y fastcgi_param SCRIPT_FILENAME... son necesarias si no están incluidas por defecto en snippets/fastcgi-php.conf

Guarda (Ctrl+O, Enter, Ctrl+X en Nano) y reinicia los servicios:

sudo systemctl restart nginx sudo systemctl restart php8.2-fpm

Esto hace que Nginx pase los archivos PHP a PHP-FPM 8.2 por un «socket», un canal interno que los conecta.

Paso 5: Prueba que Todo Funciona

Vamos a verificar que todo está bien. Crea un archivo de prueba:

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

Pega esto:

<?php phpinfo(); ?>

Guarda y cierra. En tu navegador, visita http:///info.php. Si aparece una página con detalles de PHP (busca «PHP Version 8.2.x»), ¡funciona perfecto!

Cuidado: Este archivo muestra info sensible. Bórralo con sudo rm /var/www/html/info.php cuando termines, sobre todo si esto pasa de ser un experimento.

Paso 6: Cuida la Seguridad

Tu servidor ya está listo, pero protégelo con estos consejos:

  • Firewall: Usa ufw para limitar el tráfico. Por ejemplo, permite solo SSH (puerto 22), HTTP (80) y HTTPS (443):

sudo ufw allow 22 sudo ufw allow 80 sudo ufw allow 443 sudo ufw enable

  • Actualizaciones: Ejecuta sudo apt update && sudo apt upgrade -y cada cierto tiempo para mantener todo al día.
  • Contraseñas: Usa contraseñas fuertes y únicas para root, usuarios y bases de datos.
  • HTTPS: Añadir cifrado es clave (te lo explico más abajo).
  • Fail2ban: Instálalo con sudo apt install fail2ban -y para bloquear ataques de fuerza bruta. Su configuración básica ya es útil.

Virtual Hosts en Nginx

¿Quieres varios sitios web (como un blog y una tienda)? Usa virtual hosts para separarlos. Crea un archivo en /etc/nginx/sites-available/ (por ejemplo, misitio.conf), configura tu sitio (incluye el bloque PHP si lo usas) y haz un enlace simbólico:

sudo ln -s /etc/nginx/sites-available/misitio.conf /etc/nginx/sites-enabled/

Comprueba que todo esté bien con sudo nginx -t y reinicia Nginx:

sudo systemctl restart nginx

Sugerencias Extra para Mejorar tu Servidor

Dale un Impulso a PHP-FPM

Ajusta PHP-FPM para que rinda mejor. Edita /etc/php/8.2/fpm/pool.d/www.conf y prueba con:

  • pm = dynamic (o static para un número fijo, o ondemand para ahorrar recursos).
  • pm.max_children = 5 (Nota: Este valor es bajo, ideal para pruebas con poca RAM. Auméntalo según tu servidor si esperas más tráfico.)
  • pm.start_servers = 2 (solo con dynamic)
  • pm.min_spare_servers = 1 (solo con dynamic)
  • pm.max_spare_servers = 3 (solo con dynamic)

Reinicia PHP-FPM para aplicar los cambios:

sudo systemctl restart php8.2-fpm

Añade HTTPS con Let’s Encrypt

Para que tu sitio use HTTPS, instala Certbot:

sudo apt install certbot python3-certbot-nginx -y

Requisito: Necesitas un dominio registrado (como tusitio.com) apuntando a la IP pública de tu servidor vía DNS.

Pide un certificado (reemplaza tu_dominio con tu nombre de dominio real):

sudo certbot --nginx -d tu_dominio

Sigue las instrucciones (elige redirigir HTTP a HTTPS si quieres). Verifica la renovación automática:

sudo certbot renew --dry-run

Si todo va bien, tu sitio estará cifrado y seguro.

¡Y Listo!

Montar un servidor con Nginx, PHP 8.2 y MariaDB en Debian 12 es más fácil de lo que parece. Con estos pasos tienes un entorno funcional para probar aplicaciones PHP o aprender cómo funciona todo. Añade las mejoras y medidas de seguridad que necesites, y tendrás una base sólida para tus experimentos o futuros proyectos.

Deja una respuesta

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

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.