En este tutorial aprenderás cómo instalar el stack LEMP (Linux, Nginx, MySQL y PHP) en Ubuntu Server 22.04 desde cero, lo puedes aplicar a un VPS, una máquina virtual, Ubuntu Desktop o un servidor físico. Sin más, manos a la obra.
Requisitos previos:
- Contar con Ubuntu Server 22.04 instalado en un VPS, máquina virtual o máquina física.
- Tener acceso por SSH al servidor.
- Si tienes un VPS y usarás un nombre de dominio, ya debe de estar configurado y apuntando a la IP del servidor (En el paso dos verás cómo hacerlo ver aquí).
1. Actualizar los repositorios del servidor
Desde la terminal de comandos ingresa por SSH a tu servidor y actualiza los repositorios con el comando:
sudo apt update
Si es necesario actualiza los paquetes con la instrucción:
sudo apt upgrade
2. Instalar el servidor Nginx
Para instalar el servidor web Nginx escribe en la terminal:
sudo apt install nginx
3. Configurar el firewall
Si tu Ubuntu Server 22.04 está expuesto directamente al Internet es recomendable habilitar el firewall UFW que ya viene integrado:
sudo ufw enable
Para habilitar las conexiones SSH escribe:
sudo ufw allow OpenSSH
Habilitar las conexiones al servidor Nginx bajo el protocolo HTTP y HTTPS:
sudo ufw allow "Nginx HTTP"
sudo ufw allow "Nginx HTTPS"
Para verificar los servicios que están habilitados en el firewall escribe:
sudo ufw app list
El resultado sería:
Si vas a tu navegador y pones la dirección IP de tu servidor verás la pantalla de bienvenida del servidor Nginx, si estás en una máquina virtual ve aquí cómo puedes conectarte a tu Ubuntu Server 22.04 en VirtualBox. En mi caso estoy usando una máquina virtual y se ve así:
4. Instalar MySQL
Para instalar el servidor MySQL en la terminal de comandos escribe la instrucción:
sudo apt install mysql-server
Para verificar si la instalación se realizó correctamente en la terminal escribe:
sudo mysql
Se abrirá la consola de comandos de MySQL, pero como vez aún no tiene un password por lo que es necesario crear uno para reforzar la seguridad, para ello introduce:
SHOW VARIABLES LIKE 'validate_password';
use mysql;
select user, plugin, host FROM mysql.user;
Con la siguiente instrucción vas a generar un password para el usario «root», cambia la palabra mipassword por la contraseña que quieras utilizar:
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'mipassword';
Y por último escribe la instrucción:
FLUSH PRIVILEGES;
Para salir de la consola de MySQL escribe:
exit
Verifica si la nueva contraseña se guardó correctamente escribiendo en la terminal:
mysql -u root -p
Si accediste a la consola de MySQL significa que se realizó el cambio sin problema, para salir escribe «exit» y presiona la tecla «Enter».
5. Instalar PHP
Para instalar PHP en tu Ubuntu Server 22.04 corre el siguiente comando en la terminal:
sudo apt install php-fpm php-mysql php-curl php-xml php-gd php-mbstring php-bcmath php-intl
Para verificar que PHP se ha instalado, escribe en la terminal:
php -v
La salida de este comando te mostrará la versión de PHP que se acaba de instalar.
6. Crear bloque de servidor (host virtual)
NOTA
. Si está configurando una máquina virtual salta este paso y ve al paso 7.
Si estás configurando un VPS y quieres alojar múltiples nombres de dominio en tu Ubuntu Server 22.04 tienes que hacer este procedimiento por cada nombre de dominio que quieras alojar (recuerda que tu nombre de dominio debe estar apuntando a la IP de tu servidor).
Crea el directorio para tu_dominio:
sudo mkdir /var/www/tu_dominio
Se asigna la propiedad del directorio al usuario actual del sistema:
sudo chown -R $USER:$USER /var/www/tu_dominio
Crea un archivo de configuración para tu_dominio:
sudo nano /etc/nginx/sites-available/tu_dominio
En el archivo en blanco que se abre, copia el siguiente código que es la configuración básica, recuerda cambiar la palabra «tu_dominio» por tu nombre de dominio:
server { listen 80; server_name tu_dominio www.tu_dominio; root /var/www/tu_dominio; index index.html index.htm index.php; location / { try_files $uri $uri/ =404; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php8.1-fpm.sock; } location ~ /\.ht { deny all; } }
Para activar la configuración corra la siguiente instrucción en la terminal de comandos:
sudo ln -s /etc/nginx/sites-available/tu_dominio /etc/nginx/sites-enabled/
Verifica la sintaxis del nuevo archivo creado:
sudo nginx -t
Para que los cambios se hagan efectivos reinicia el servicio de Nginx:
sudo systemctl reload nginx
Crea un archivo de prueba escribiendo en la terminal:
sudo nano /var/www/tu_dominio/index.html
Y agrega la siguiente línea de código:
<h1>Esta funcionando!</h1>
Guarda el archivo y en el navegador web accede a tu dominio, debes de ver algo así:
El servidor Nginx se ha configurado correctamente.
6.1. Instalar certificado SSL
Para que tu sitio web tenga un certificado SSL de Let’s Encrypt es necesario instalar el software Certbot, para ello en la terminal corre el comando:
sudo apt install certbot python3-certbot-nginx
Para que se habilite el tráfico seguro (HTTPS) y evitar errores de redundancia es necesario eliminar del firewall ufw «Nginx HTTP»:
sudo ufw delete allow "Nginx HTTP" sudo ufw allow "Nginx Full"
Para obtener un certificado SSL para tu nombre de dominio, en la terminal escribe la instrucción:
sudo certbot --nginx -d tu_dominio -d www.tu_dominio.com
Ingresa la información que se te pide y da Enter. Para verificar la renovación automática desde Certbot en la terminal escribe:
sudo systemctl status certbot.timer
Te mostrará el estatus del servicio Certbot:
Ahora en el navegador web recarga la página de tu sitio web, debes de ver el candado que indica que ya tiene un certificado SSL activo y funcionando:
7. Crear carpeta del sitio
Este paso solo aplica para máquina virtual.
Para cada sitio web que alojes dentro de tu servidor virtual tienes que crear una carpeta en la ruta /var/www/html/tu_carpeta
Crea la carpeta de tu sitio web:
sudo mkdir /var/www/html/misitioweb/
Dentro de esta nueva carpeta crea el archivo index.html:
sudo nano /var/www/html/misitioweb/index.html
Con tu editor de textos abre el recién creado archivo index.html y para realizar una prueba escribe:
<h1>Esta funcionando!</h1>
Guarda los cambios y abre tu navegador, dependiendo de cómo configuraste tu máquina virtual vas a poder acceder al sitio web:
localhost:8080/mistioweb
ó
192.168.100.127/misitioweb
Conclusión
En este tutorial aprendiste cómo instalar el stack LEMP en Ubuntu Server 22.04 paso a paso tanto en máquina virtual como en una máquina física. Si este tutorial te sirvió te invito a compartirlo en tus redes sociales para ayudar a más personas y si tienes dudas o comentarios déjalos en la caja de comentarios, estaré al pendiente de ellos. Te envío un saludo!
Referencias: NGINX documentación.
Te puede interesar: Lograr enviar correos desde formulario de contacto en un VPS.