LEMP Stack · 9 min read · Sep 10, 2025
Cómo instalar LEMP Stack (Linux, Nginx, PHP y MariaDB) en Ubuntu 24.04

El LEMP Stack (Linux, Nginx, MySQL/MariaDB y PHP) es un grupo de aplicaciones de software libre y de código abierto para alojar y desarrollar aplicaciones web en PHP. El LEMP Stack se puede utilizar para implementar aplicaciones web tanto estáticas como dinámicas.
Esta guía te mostrará cómo instalar LEMP Stack (Linux, Nginx, MySQL/MariaDB y PHP) en Ubuntu 24.04 “Noble Numbat”. También te mostraremos cómo asegurar el servidor MariaDB y crear una configuración de bloque de servidor Nginx para alojar sitios web o nombres de dominio.
Requisitos previos
Antes de comenzar, asegúrate de tener Ubuntu 24.04 “Noble Numbat” con el usuario root o un usuario no root con privilegios de sudo/administrador. Además, asegúrate de que el UFW (Firewall sin complicaciones) esté en funcionamiento y habilitado.
Instalando el servidor web Nginx
Nginx o engine-x es el servidor web más popular en Internet. Se hizo popular porque Nginx puede manejar alto tráfico simultáneamente con recursos mínimos del sistema. En este primer paso, instalarás el servidor web Nginx en el servidor Ubuntu.
Antes de instalar paquetes, actualiza y refresca tu lista de paquetes de Ubuntu con el siguiente comando.
sudo apt update
Instala el servidor web Nginx en tu máquina Ubuntu con el siguiente comando. Ingresa Y para confirmar la instalación cuando se te solicite.
sudo apt install nginx
Una vez que la instalación esté completa, el servicio Nginx debería estar en funcionamiento y habilitado en tu sistema. Verifica el servicio Nginx con el siguiente comando.
sudo systemctl is-enabled nginx
sudo systemctl status nginxDeberías ver que el servicio Nginx está ‘ habilitado ‘ y el estado actual es ‘ activo (en ejecución) ‘.

Antes de acceder a Nginx, necesitas abrir ambos puertos HTTP y HTTPS en tu servidor Ubuntu a través de UFW (Firewall sin complicaciones).
Ejecuta el siguiente comando ‘ ufw ‘ para habilitar el perfil ‘ Nginx Full ‘, que permitirá el acceso HTTP y HTTPS a tu servidor Ubuntu.
sudo ufw allow 'Nginx Full'Ahora verifica las reglas de UFW con el siguiente comando. Asegúrate de que el perfil ‘ Nginx Full ‘ esté habilitado con el estado ‘ALLOW’.
sudo ufw status
Por último, visita http://192.168.5.30/ desde tu navegador web preferido para acceder a tu instalación de Nginx. Si es exitoso, deberías obtener la página predeterminada ‘ index.html ‘ como la siguiente:

Instalando el servidor MariaDB
Después de instalar Nginx, instalarás el servidor MariaDB en Ubuntu. En este ejemplo, instalarás MariaDB a través del repositorio de Ubuntu, luego asegurarás la instalación de MariaDB a través de la utilidad ‘ mariadb-secure-installation ‘.
Para instalar el servidor MariaDB en Ubuntu, ejecuta el siguiente comando ‘ apt install ‘. Ingresa Y y presiona ENTER para continuar con el proceso.
sudo apt install mariadb-server
Una vez que la instalación esté terminada, verifica el servicio MariaDB con el siguiente comando. Esto te mostrará el estado del servicio MariaDB.
sudo systemctl is-enabled mariadb
sudo systemctl status mariadbEl servicio MariaDB está ‘ habilitado ‘ con el estado actual ‘ activo (en ejecución) ‘.

Una vez que hayas instalado el servidor MariaDB, debes asegurarlo a través de ‘ mariadb-secure-installation ‘. Esto te permitirá configurar la contraseña de root de MariaDB, deshabilitar la autenticación remota para el usuario root y también eliminar bases de datos y privilegios innecesarios de tu instalación del servidor MariaDB.
Ejecuta el comando ‘ mariadb-secure-installation ‘ a continuación para asegurar el servidor MariaDB.
sudo mariadb-secure-installationAhora se te preguntará sobre las siguientes configuraciones del servidor MariaDB:
Presiona ENTER cuando se te pida la contraseña de root de MariaDB.
Enter current password for root (enter for none):
OK, successfully used password, moving on...Escribe ‘ n ‘ cuando se te pregunte si deseas cambiar a la autenticación unix_socket.
Switch to unix_socket authentication [Y/n] n
... skipping.Escribe Y para configurar la contraseña de root de MariaDB. Luego, ingresa tu nueva contraseña y repítela.
Change the root password? [Y/n] Y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
... Success!Escribe Y para eliminar el usuario anónimo predeterminado de tu instalación del servidor MariaDB.
Remove anonymous users? [Y/n] Y
... Success!Escribe Y para deshabilitar el inicio de sesión remoto para el usuario root de MariaDB. El usuario root siempre debe conectarse desde localhost.
Disallow root login remotely? [Y/n] Y
... Success!Ahora escribe Y nuevamente para eliminar la base de datos de prueba predeterminada y sus privilegios de tu servidor MariaDB.
Remove test database and access to it? [Y/n] Y
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!Escribe Y para recargar las tablas de privilegios y aplicar todos los cambios que has realizado hasta ahora.
Reload privilege tables now? [Y/n] Y
... Success!Cuando termines, verás el siguiente mensaje:
All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!Instalando PHP-FPM
PHP-FPM (FastCGI Process Manager) es una alternativa a la implementación de FastCGI para PHP. Se utiliza principalmente para sitios de alto tráfico con Nginx como servidor web. En esta sección, instalarás PHP-FPM con algunas extensiones adicionales, como mysqli para el controlador MySQL/MariaDB, opcache y APCu para almacenamiento en caché.
Instala PHP-FPM en tu servidor Ubuntu con el siguiente comando. Cuando se te pida, ingresa Y y presiona ENTER para continuar.
sudo apt install php-fpm php-mysql php-curl php-gd php-json php-intl php-bcmath php-opcache php-apcu php-mbstring php-fileinfo php-xml php-soap php-tokenizer php-zip
Después de que la instalación esté terminada, el servicio PHP-FPM debería estar en funcionamiento. Verifica el estado del servicio PHP-FPM con el siguiente comando.
sudo systemctl is-enabled php8.3-fpm
sudo systemctl status php8.3-fpmComo puedes ver a continuación, PHP-FPM está ‘ activo (en ejecución) ‘ y ‘ habilitado ‘ al inicio del sistema:

En Ubuntu, el PHP-FPM predeterminado se ejecuta bajo el archivo sock. Conocer la ruta del archivo sock de PHP-FPM es importante, ya que se utilizará para la integración con el servidor web Nginx.
Verifica la ruta de ubicación del archivo sock de PHP-FPM con el siguiente comando.
ss -pl | grep phpEn la salida siguiente, puedes ver que el archivo sock de PHP-FPM se encuentra en ‘ /run/php/php8.3-fpm.sock ‘.
Integrando Nginx con PHP-FPM
Ahora que has instalado PHP-FPM, es hora de integrarlo con el servidor web Nginx. Para hacerlo, debes conocer exactamente la ruta del archivo sock de PHP-FPM y luego modificar el archivo de bloque de servidor Nginx predeterminado.
Abre la configuración del bloque de servidor ‘ /etc/nginx/sites-available/default ‘ utilizando el siguiente comando del editor nano.
sudo nano /etc/nginx/sites-available/defaultDescomenta las siguientes líneas y asegúrate de cambiar la ruta del archivo sock de PHP-FPM con la nueva ubicación.
# pasar scripts PHP al servidor FastCGI
#
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# # Con php-fpm (u otros sockets unix):
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
# # Con php-cgi (u otros sockets tcp):
# fastcgi_pass 127.0.0.1:9000;
}Guarda el archivo y sal del editor.
Ahora ejecuta el comando ‘ nginx ‘ a continuación para verificar la sintaxis de tu Nginx. Debes ejecutar este comando después de realizar cambios en la configuración de Nginx.
sudo nginx -tSi tienes una sintaxis de Nginx correcta, deberías obtener una confirmación como la siguiente:

A continuación, ejecuta el comando a continuación para reiniciar el servicio Nginx y aplicar tu integración entre Nginx y PHP-FPM.
sudo systemctl restart nginxCon Nginx reiniciado, puedes verificar tu integración a través del archivo PHPINFO. Ejecuta el comando a continuación para crear el archivo PHPINFO ‘ info.php ‘ en el directorio raíz web predeterminado ‘ /var/www/html/ ‘.
echo "" > /var/www/html/info.phpPor último, vuelve a tu navegador web y visita http://192.168.5.30/info.php. Si tu integración de Nginx y PHP-FPM es exitosa, deberías obtener lo siguiente:
Puedes ver a continuación que PHP 8.3 se está ejecutando con la API del servidor PHP-FPM bajo el servidor web Nginx.

Desplázate hacia abajo en la página y verás que la extensión PHP mysqli/mysqlnd también está instalada.

Por último, también verás que el almacenamiento en caché a través de APC está habilitado en tu instalación de PHP.

Creando un bloque de servidor Nginx (host virtual)
Un bloque de servidor es solo otro nombre para un ‘host virtual’ para un servidor web Nginx. Se utiliza para alojar múltiples sitios web o nombres de dominio en un solo servidor. En esta sección, aprenderás cómo crear un bloque de servidor Nginx.
Antes de crear la configuración del bloque de servidor, ejecuta el comando a continuación para crear un nuevo directorio raíz web ‘/var/www/newsite/public_html’ y una página personalizada ‘index.html’.
mkdir -p /var/www/newsite/public_html
echo "Bienvenido a newsite.com" > /var/www/newsite/public_html/index.htmlAhora ejecuta el comando a continuación para cambiar la propiedad del directorio ‘ /var/www/newsite ‘ al usuario ‘ www-data ‘. En el sistema Ubuntu, el servidor web Nginx se ejecuta como un usuario ‘ www-data ‘.
sudo chown -R www-data:www-data /var/www/newsiteA continuación, ejecuta el siguiente comando del editor nano para crear una nueva configuración de bloque de servidor ‘/etc/nginx/sites-available/newsite’.
sudo nano /etc/nginx/sites-available/newsiteInserta la configuración a continuación, asegúrate de cambiar la opción server_name con tu nombre de dominio y el directorio raíz web a la nueva ruta como ‘ /var/www/newsite/public_html ‘.
server {
listen 80;
server_name newsite.com;
root /var/www/newsite/public_html;
index index.html;
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
}
location / {
try_files $uri $uri/ =404;
}
}Cuando termines, guarda y sal del archivo.
Ahora ejecuta el comando a continuación para activar la configuración del bloque de servidor ‘ newsite ‘. Con este comando, crearás un nuevo enlace simbólico del archivo ‘ /etc/nginx/sites-available/newsite ‘ al directorio ‘ /etc/nginx/sites-enabled/ ‘.
sudo ln -s /etc/nginx/sites-available/newsite /etc/nginx/sites-enabled/Después de que el bloque de servidor esté activado, ejecuta el comando ‘ nginx ‘ a continuación para verificar la sintaxis de tu Nginx.
sudo nginx -tSi no hay errores, deberías obtener la salida ‘ … la sintaxis es correcta / … la prueba es exitosa ‘.
Por último, ejecuta el comando a continuación para reiniciar el servidor web Nginx y aplicar tu nueva configuración de bloque de servidor. Con esto, tu configuración de bloque de servidor debería ser accesible desde tu máquina local.
sudo systemctl restart nginx
Probando tu configuración de bloque de servidor
Para asegurarte de que la configuración de tu bloque de servidor Nginx sea exitosa, accederás al nombre de dominio de tu configuración de bloque de servidor desde tu computadora local. Si estás utilizando el nombre de dominio público, visita directamente el nombre de dominio. Pero para los usuarios de dominio local, edita el archivo ‘hosts’ en tu computadora local.
- Para usuarios de Linux y MacOS, edita el archivo ‘ /etc/hosts ‘ con privilegios de root/administrativos.
- Para usuarios de Windows, edita el archivo ‘ C:\Windows\System32\drivers\etc\hosts ‘ como administrador.
Agrega tu dirección IP del servidor y el nombre de dominio como el siguiente:
192.168.5.30 newsite.comGuarda el archivo y sal.
Ahora abre tu navegador web y visita http://newsite.com/. si tu configuración de bloque de servidor Nginx es exitosa, deberías obtener la página personalizada ‘index.html’ que has creado como la siguiente:

Conclusión
¡Felicidades! Ahora has instalado LEMP Stack (Linux, Nginx, MySQL/MariaDB y PHP) en Ubuntu 24.04 “Noble Numbat”. También aseguraste la instalación del servidor MariaDB y creaste un bloque de servidor Nginx para alojar múltiples sitios web.
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.