Cómo instalar LEMP Stack (Linux, Nginx, PHP y MariaDB) en Ubuntu 24.04
La Pila LEMP (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 PHP. La Pila LEMP puede utilizarse para desplegar aplicaciones web estáticas y dinámicas.
Esta guía te mostrará cómo instalar la Pila LEMP (Linux, Nginx, MySQL/MariaDB y PHP) en Ubuntu 24.04 «Noble Numbat». También mostraremos cómo asegurar el servidor MariaDB y crear una configuración en bloque del servidor Nginx para alojar sitios web o nombres de dominio.
Requisitos previos
Antes de empezar, asegúrate de que tienes Ubuntu 24.04 «Noble Numbat» con el usuario root o no root con privilegios sudo/administrador. Además, asegúrate de que el UFW (Cortafuegos sin complicaciones) se está ejecutando y está habilitado.
Instalar el servidor web Nginx
Nginx o engine-x es el servidor web más popular de internet. se hizo popular porque Nginx puede manejar un alto tráfico simultáneamente con los mínimos recursos del sistema. En este primer paso, instalarás el servidor web Nginx en el servidor Ubuntu.
Antes de instalar los paquetes, actualiza y refresca la 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. Introduce Y para confirmar la instalación cuando se te solicite.
sudo apt install nginx
Una vez completada la instalación, el servicio Nginx debería estar ejecutándose y habilitado en tu sistema. Verifica el servicio Nginx con el siguiente comando.
sudo systemctl is-enabled nginx sudo systemctl status nginx
Deberías ver que el servicio Nginx está«habilitado» y que su estado actual es«activo (en ejecución)«.
Antes de acceder a Nginx, tienes que abrir los puertos HTTP y HTTPS en tu servidor Ubuntu mediante UFW (Uncomplicated Firewall).
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 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 tienes éxito, deberías obtener la página predeterminada‘index.html‘ como la siguiente:
Instalación del 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, y luego asegurarás la instalación de MariaDB mediante la utilidad‘mariadb-secure-installation‘.
Para instalar el servidor MariaDB en Ubuntu, ejecuta el siguiente comando‘apt install‘. Introduce Y y pulsa ENTER para continuar con el proceso.
sudo apt install mariadb-server
Una vez finalizada la instalación, verifica el servicio MariaDB con el siguiente comando. Esto te mostrará el estado del servicio MariaDB.
sudo systemctl is-enabled mariadb sudo systemctl status mariadb
El servicio MariaDB está‘habilitado‘ con el estado actual‘activo (en ejecución)‘.
Una vez que hayas instalado el servidor MariaDB, debes asegurarlo mediante‘mariadb-secure-installation‘. Esto te permite configurar la contraseña de root de MariaDB, desactivar 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‘ que aparece a continuación para asegurar el servidor MariaDB.
sudo mariadb-secure-installation
Ahora se te preguntará por las siguientes configuraciones del servidor MariaDB:
Pulsa 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 pida cambiar a la autenticación unix_socket.
Switch to unix_socket authentication [Y/n] n ... skipping.
Escribe « Y» para configurar la contraseña raíz de MariaDB. A continuación, introduce tu nueva contraseña y repite la operación.
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 por defecto de tu instalación del servidor MariaDB.
Remove anonymous users? [Y/n] Y ... Success!
Escribe Y para desactivar el inicio de sesión remoto para el usuario raíz de MariaDB. El usuario root debe conectarse siempre desde localhost.
Disallow root login remotely? [Y/n] Y ... Success!
Vuelve a teclear Y para eliminar la prueba de base de datos por defecto 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 hecho hasta ahora.
Reload privilege tables now? [Y/n] Y ... Success!
Cuando hayas terminado, 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 sobre todo 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 el almacenamiento en caché.
Instala PHP-FPM en tu servidor Ubuntu con el siguiente comando. Cuando se te solicite, introduce Y y pulsa 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
Una vez finalizada la instalación, el servicio PHP-FPM debería estar en funcionamiento. Comprueba el estado del servicio PHP-FPM con el siguiente comando.
sudo systemctl is-enabled php8.3-fpm sudo systemctl status php8.3-fpm
Como puedes ver a continuación, el PHP-FPM está‘activo (en ejecución)‘ y‘habilitado’ en el arranque del sistema:
En Ubuntu, el PHP-FPM por defecto se ejecuta bajo el archivo sock. Es importante conocer la ruta del archivo sock de PHP-FPM, que se utilizará para la integración con el servidor web Nginx.
Comprueba la ruta de ubicación del archivo sock de PHP-FPM con el siguiente comando.
ss -pl | grep php
En la siguiente salida, puedes ver que el archivo sock PHP-FPM se encuentra en‘/run/php/php8.3-fpm.sock‘.
Integrar Nginx con PHP-FPM
Así que ya has instalado PHP-FPM, es hora de integrarlo con el servidor web Nginx. Para ello, debes conocer exactamente la ruta del archivo sock de PHP-FPM y modificar el archivo de bloque del servidor Nginx por defecto.
Abre la configuración del bloque del servidor‘/etc/nginx/sites-available/default‘ utilizando el siguiente comando del editor nano.
sudo nano /etc/nginx/sites-available/default
Descomenta las siguientes líneas y asegúrate de cambiar la ruta del archivo PHP-FPM sock con la nueva ubicación.
# pass PHP scripts to FastCGI server # location ~ \.php$ { include snippets/fastcgi-php.conf; # # With php-fpm (or other unix sockets): fastcgi_pass unix:/run/php/php8.3-fpm.sock; # # With php-cgi (or other tcp sockets): # fastcgi_pass 127.0.0.1:9000; }
Guarda el archivo y sal del editor.
Ahora ejecuta el siguiente comando‘nginx‘ para verificar la sintaxis de Nginx. Debes ejecutar este comando después de realizar cambios en la configuración de Nginx.
sudo nginx -t
Si la sintaxis de Nginx es correcta, deberías obtener una confirmación como la siguiente:
A continuación, ejecuta el siguiente comando para reiniciar el servicio Nginx y aplicar tu integración entre Nginx y PHP-FPM.
sudo systemctl restart nginx
Con Nginx reiniciado, puedes verificar tu integración a través del archivo PHPINFO. Ejecuta el siguiente comando para crear el archivo PHPINFO‘info.php‘ en el directorio raíz web por defecto‘/var/www/html/‘.
echo "<?php phpinfo(); ?>" > /var/www/html/info.php
Por último, vuelve a tu navegador web y visita http://192.168.5.30/info.php. Si la integración de Nginx y PHP-FPM se ha realizado correctamente, deberías obtener lo siguiente:
Puedes ver a continuación que PHP 8.3 se está ejecutando con la API de servidor PHP-FPM bajo el servidor web Nginx.
Desplázate hacia abajo en la página y verás que también está instalada la extensión PHP mysqli/mysqlnd.
Por último, también verás el almacenamiento en caché mediante APC activado en tu instalación de PHP.
Crear un bloque de servidor Nginx (host virtual)
Un bloque de servidor no es más que otro nombre para un «host virtual» para un servidor web Nginx. Se utiliza para alojar varios sitios web o nombres de dominio en un único servidor. En esta sección, aprenderás a crear un bloque de servidor Nginx.
Antes de crear la configuración del bloque de servidor, ejecuta el comando siguiente 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 "Welcome to newsite.com" > /var/www/newsite/public_html/index.html
Ahora ejecuta el siguiente comando para cambiar la propiedad del directorio ‘/var/www/newsite‘ al usuario‘www-data‘. En el sistema Ubuntu, el servidor web Nginx se ejecuta como usuario ‘www-data‘.
sudo chown -R www-data:www-data /var/www/newsite
A 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/newsite
Introduce la configuración que aparece a continuación, asegúrate de cambiar la opción nombre_servidor por el nombre de tu dominio, y el directorio raíz web por la nueva ruta, por ejemplo‘/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 hayas terminado, guarda y sal del archivo.
Ahora ejecuta el siguiente comando 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/
Una vez activado el bloque del servidor, ejecuta el siguiente comando‘nginx‘ para comprobar la sintaxis de tu Nginx.
sudo nginx -t
Si no se produce ningún error, deberías obtener la salida ‘... syntax is ok / … test is successful‘.
Por último, ejecuta el siguiente comando para reiniciar el servidor web Nginx y aplicar tu nueva configuración de bloque de servidor. Con esto, tu configuración del bloque servidor debería ser accesible desde tu máquina local.
sudo systemctl restart nginx
Probar la configuración del bloque servidor
Para asegurarte de que tu configuración del bloque de servidores Nginx es correcta, accederás al nombre de dominio de tu configuración del bloque de servidores desde tu ordenador local. Si utilizas el nombre de dominio público, visita el nombre de dominio directamente. Pero para los usuarios del dominio local, edita el archivo «hosts» en tu ordenador local.
- Para los usuarios de Linux y MacOS, edita el archivo ‘/etc/hosts‘ con privilegios de root/administrador.
- Para los usuarios de Windows, edita el archivo ‘C:\Windows\System32\drivers\etc\hosts‘ como administrador.
Añade la dirección IP y el nombre de dominio de tu servidor como se indica a continuación:
192.168.5.30 newsite.com
Guarda el archivo y sal.
Ahora abre tu navegador web y visita http://newsite.com/. si la configuración del bloque del servidor Nginx se ha realizado correctamente, deberías obtener la página personalizada ‘index.html’ que has creado como la siguiente:
Conclusión
¡Enhorabuena! Ya has instalado LEMP Stack (Linux, Nginx, MySQL/MariaDB y PHP) en Ubuntu 24.04 «Noble Numbat». También has asegurado la instalación del servidor MariaDB y has creado un bloque de servidor Nginx para alojar varios sitios web.