En este curso aprenderás a desplegar un servidor LEMP (Linux, Nginx, MariaDB/MySQL y PHP) desde cero. Usaremos un método sencillo y automatizado con https://lemp.run para instalar y configurar los componentes principales del stack.
Además, exploraremos qué hace exactamente el script de instalación, paso a paso, para que entiendas cómo personalizarlo en tus propios entornos.
Este curso está diseñado para desarrolladores, administradores de sistemas y entusiastas DevOps que quieren montar un servidor LEMP de forma rápida y confiable.
- Introducción al stack LEMP
- Requisitos previos
- Instalación automática con lemp.run
- Explicando el script paso a paso
- Creación de un script en Bash
- Conclusión y siguientes paso
- Qué es LEMP y por qué usarlo
- Diferencias entre LEMP y LAMP
- Componentes:
- Linux (sistema base)
- Nginx (servidor web)
- MariaDB/MySQL (base de datos)
- PHP (lenguaje backend)
- Acceso a un servidor Linux con privilegios
sudo - Conexión a Internet
- Terminal con
curlinstalado - Conocimientos básicos de comandos en Linux
La forma más rápida de levantar tu servidor es con estos comandos:
# Instalar solo Nginx
curl -fsSL https://lemp.run/install/nginx.sh | sh
# Instalar Nginx, MariaDB y PHP
curl -fsSL https://lemp.run/install/nginx-mariadb-php.sh | sh
# Alternativa: Nginx, MySQL y PHP
curl -fsSL https://lemp.run/install/nginx-mysql-php.sh | sh```Estos comandos descargan e instalan automáticamente todos los paquetes necesarios según tu distribución de Linux (Debian, RedHat, Arch o Alpine).
A continuación, analizaremos el contenido del script nginx-mariadb-php.sh:
#!/bin/bash
# Script para instalar Nginx, MariaDB y PHP en diferentes distribuciones de Linux
echo "Detectando la distribución de Linux..."
if [ -f /etc/debian_version ]; then
OS="debian"
elif [ -f /etc/redhat-release ]; then
OS="redhat"
elif [ -f /etc/arch-release ]; then
OS="arch"
elif [ -f /etc/alpine-release ]; then
OS="alpine"
else
echo "Distribución no compatible."
exit 1
fi
echo "Distribución detectada: $OS"
echo "Instalando Nginx, MariaDB y PHP..."
- Detecta la distribución de Linux para usar el gestor de paquetes correcto.
- Soporta Debian/Ubuntu, RedHat/CentOS, Arch y Alpine.
if [ "$OS" = "debian" ]; then
sudo apt update -y
sudo apt install -y nginx mariadb-server php-fpm php-mysql
elif [ "$OS" = "redhat" ]; then
sudo dnf install -y nginx mariadb-server php php-mysql
elif [ "$OS" = "arch" ]; then
sudo pacman -Syu --noconfirm nginx mariadb php php-fpm
elif [ "$OS" = "alpine" ]; then
sudo apk add nginx mariadb php php-mysqli
fi
- Instala Nginx, MariaDB y PHP según el gestor de paquetes nativo.
- Incluye extensiones necesarias para conectar PHP con MariaDB/MySQL.
- También puedes instalar otros paquetes y configurar el servidor para diferentes tipos de aplicaciones:
- Aplicaciones en Python, usando Gunicorn o Uvicorn detrás de Nginx como reverse proxy.
- Aplicaciones en JavaScript (Node.js), usando Express, Next.js u otros frameworks.
- Aplicaciones estáticas (React, Vue, Svelte), servidas directamente desde Nginx sin necesidad de un backend adicional.
sudo systemctl enable nginx
sudo systemctl start nginx
sudo systemctl enable mariadb
sudo systemctl start mariadb
- systemctl enable: asegura que los servicios inicien automáticamente al arrancar el servidor
- systemctl start: inicia los servicios inmediatamente
El script genera un bloque de servidor básico para /etc/nginx/sites-available/default:
server {
listen 80;
root /var/www/html;
index index.php index.html index.htm;
server_name _;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php-fpm.sock;
}
location ~ /\. {
deny all;
access_log off;
log_not_found off;
}
}
- Configura Nginx para servir PHP mediante FastCGI
- Asegura que archivos . no sean accesibles
sudo systemctl restart nginx
Los scripts de Bash permiten automatizar tareas en Linux, como instalar paquetes, configurar servicios o ejecutar varios comandos en secuencia.
En esta sección aprenderás a crear y ejecutar tu propio script paso a paso.
Primero, crea un archivo con extensión .sh:
nano script.sh
Todo script debe comenzar con la línea shebang, que indica al sistema que debe usar Bash para interpretarlo:
#!/bin/bash
Luego puedes escribir los comandos que quieras automatizar. Por ejemplo:
echo "Hola mundo"
Asegúrate de que el script tenga permisos de ejecución:
chmod +x script.sh
Ejecuta tu script directamente desde la terminal:
./script.sh
También puedes ejecutar el script directamente con el comando bash, sin importar los permisos:
bash script.sh
O incluso con una ruta absoluta:
/usr/bin/bash script.sh
Esta forma no requiere chmod +x. Bash abrirá el archivo y lo ejecutará línea por línea, aunque el script no tenga permisos de ejecución.
- Acabas de desplegar un servidor LEMP funcional en minutos.
- Comprendiste qué hace el script y cómo puedes modificarlo.
- Puedes extender esta base para:
- Deplegar sitios en WordPress, Laravel, Python o JavaScript
- Configurar certificados SSL (ej. con Let’s Encrypt)