Instalar la pila LEMP (Nginx, PHP y MariaDB) en Debian 11
La pila LEMP es un conjunto de software de código abierto y marcos o bibliotecas que se utilizan para alojar aplicaciones web en Internet. La pila está formada por el sistema operativo Linux, el servidor web Nginx, el servidor de bases de datos MariaDB/MySQL y el lenguaje PHP. Un LEMP tiene un buen apoyo de la comunidad y se utiliza en muchas aplicaciones web de gran escala en todo el mundo.
En este post, te mostraremos cómo instalar la pila LEMP en Debian 11.
Requisitos previos
- Un servidor con Debian 11.
- Un nombre de dominio válido apuntado con la IP de tu servidor.
- Una contraseña de root configurada en el servidor.
Cómo empezar
Antes de empezar, es conveniente que actualices los paquetes de tu sistema a la última versión. Puedes actualizar todos los paquetes con el siguiente comando:
apt-get update -y
Una vez que tu sistema esté actualizado, puedes pasar al siguiente paso.
Instalar el servidor web Nginx
Nginx es un servidor web gratuito y de código abierto que sigue una arquitectura basada en eventos y es capaz de manejar múltiples peticiones dentro de un hilo. Es compatible con las aplicaciones más habituales y se utiliza para servir archivos estáticos.
Por defecto, el paquete Nginx está incluido en el repositorio por defecto de Debian 11. Puedes instalarlo con el siguiente comando:
apt-get install nginx -y
Una vez instalado el Nginx, inicia el servicio Nginx y haz que se inicie al reiniciar el sistema:
systemctl start nginx
systemctl enable nginx
También puedes verificar la versión instalada de Nginx con el siguiente comando:
nginx -v
Deberías ver la siguiente salida:
nginx version: nginx/1.18.0
Por defecto, Nginx se ejecuta en el puerto 80. Puedes comprobarlo con el siguiente comando:
ss -antpl | grep nginx
Deberías ver la siguiente salida:
LISTEN 0 511 0.0.0.0:80 0.0.0.0:* users:(("nginx",pid=44342,fd=8),("nginx",pid=44341,fd=8)) LISTEN 0 511 [::]:80 [::]:* users:(("nginx",pid=44342,fd=9),("nginx",pid=44341,fd=9))
También puedes comprobar la instalación de Nginx utilizando la URL http://your-server-ip. Deberías ver la página de prueba de Nginx en la siguiente página:
En este punto, el servidor web Nginx está instalado. Ahora puedes pasar al siguiente paso.
Instalar el servidor de bases de datos MariaDB
MariaDB es una base de datos de código abierto basada en SQL que se utiliza para almacenar y gestionar los datos de los sitios web. Por defecto, el paquete MariaDB está incluido en el repositorio por defecto de Debian 11. Puedes instalarlo con el siguiente comando:
apt-get install mariadb-server -y
Una vez instalado el servidor de bases de datos MariaDB, inicia el servicio MariaDB y haz que se inicie al reiniciar el sistema:
systemctl start mariadb
systemctl enable mariadb
También puedes comprobar el estado del servicio MariaDB con el siguiente comando:
systemctl status mariadb
Deberías ver la siguiente salida:
? mariadb.service - MariaDB 10.3.31 database server Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2021-08-21 04:13:25 UTC; 1min 36s ago Docs: man:mysqld(8) https://mariadb.com/kb/en/library/systemd/ Main PID: 1838 (mysqld) Status: "Taking your SQL requests now..." Tasks: 31 (limit: 2353) Memory: 66.1M CGroup: /system.slice/mariadb.service ??1838 /usr/sbin/mysqld
También se recomienda asegurar tu instalación de MariaDB y establecer una contraseña de root de MariaDB. Puedes ejecutar el script mysql_secure_installation para asegurar la instalación de MariaDB:
mysql_secure_installation
Se te pedirá que establezcas una contraseña de root de MariaDB, que elimines los usuarios anónimos, que no permitas el inicio de sesión de root de forma remota y que elimines la base de datos de prueba, como se muestra a continuación:
Enter current password for root (enter for none): Change the root password? [Y/n] Y New password: Re-enter new password: Remove anonymous users? [Y/n] Y Disallow root login remotely? [Y/n] Y Remove test database and access to it? [Y/n] Y Reload privilege tables now? [Y/n] Y
Por defecto, MariaDB se ejecuta en el puerto 3306. Puedes comprobarlo con el siguiente comando:
ss -antpl | grep mariadb
Deberías ver el siguiente comando:
LISTEN 0 80 127.0.0.1:3306 0.0.0.0:* users:(("mariadbd",pid=12181,fd=15))
Para conectar el shell de MariaDB, ejecuta el siguiente comando:
mysql -u root -p
Proporciona tu contraseña de root de MariaDB y pulsa Intro para conectarte al shell de MariaDB. Una vez conectado, deberías ver la siguiente salida:
Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 64 Server version: 10.5.11-MariaDB-1 Debian 11 Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
Ahora, ejecuta el siguiente comando para comprobar la versión de MariaDB:
MariaDB [(none)]> SELECT VERSION();
Deberías ver la siguiente salida:
+-------------------+ | VERSION() | +-------------------+ | 10.5.11-MariaDB-1 | +-------------------+ 1 row in set (0.001 sec)
En este punto, el servidor de bases de datos MariaDB está instalado y asegurado. Ahora puedes pasar al siguiente paso.
Instalar el lenguaje PHP
PHP significa Hypertext Preprocessor (Preprocesador de Hipertexto) y es un lenguaje de scripting utilizado en el lado del servidor. Es de código abierto, tiene un gran apoyo de la comunidad y se utiliza para alojar aplicaciones PHP en Internet.
Por defecto, la versión de PHP disponible en Debian 11 es PHP 7.4. Puedes instalar PHP con otras extensiones de uso común con el siguiente comando:
apt-get install php php-fpm php-cli php-mysql php-zip php-curl php-xml -y
Una vez instalado PHP, verifica la versión de PHP con el siguiente comando:
php -v
Deberías ver la siguiente salida:
PHP 7.4.21 (cli) (built: Jul 2 2021 03:59:48) ( NTS ) Copyright (c) The PHP Group Zend Engine v3.4.0, Copyright (c) Zend Technologies with Zend OPcache v7.4.21, Copyright (c), by Zend Technologies
Crear un host virtual para Nginx
Aquí crearemos un directorio example.com para alojar una página PHP. Puedes crearlo con el siguiente comando:
mkdir /var/www/html/example.com
A continuación, establece la propiedad del directorio example.com a www-data:
chown -R www-data:www-data /var/www/html/example.com
A continuación, crea un archivo de configuración del host virtual Nginx con el siguiente comando:
nano /etc/nginx/conf.d/example.conf
Añade las siguientes líneas:
server { listen 80; server_name example.com; root /var/www/html/example.com; index index.php; access_log /var/log/nginx/example_access.log; error_log /var/log/nginx/example_error.log; client_max_body_size 100M; location / { try_files $uri $uri/ /index.php$is_args$args; } location ~ \.php$ { try_files $uri =404; include fastcgi_params; fastcgi_pass unix:/run/php/php7.4-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } }
Guarda y cierra el archivo y, a continuación, comprueba si Nginx tiene algún error de configuración con el siguiente comando:
nginx -t
Deberías ver la siguiente salida:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
A continuación, reinicia el servicio Nginx para aplicar los cambios de configuración:
systemctl restart nginx
También puedes comprobar el estado del servicio Nginx con el siguiente comando:
systemctl status nginx
Deberías ver la siguiente salida:
? nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2021-08-21 04:37:27 UTC; 5s ago Docs: man:nginx(8) Main PID: 4378 (nginx) Tasks: 2 (limit: 2353) Memory: 6.2M CGroup: /system.slice/nginx.service ??4378 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; ??4379 nginx: worker process Aug 21 04:37:27 debian11 systemd[1]: Starting A high performance web server and a reverse proxy server... Aug 21 04:37:27 debian11 systemd[1]: Started A high performance web server and a reverse proxy server.
Verificar la instalación de PHP en Nginx
A continuación, tendrás que crear un archivo PHP de ejemplo para servir sobre el servidor web Nginx. Puedes crear un archivo phpinfo.php dentro de tu directorio example.com:
nano /var/www/html/example.com/phpinfo.php
Añade la siguiente línea:
<?php phpinfo(); ?>
Guarda y cierra el archivo y luego abre tu navegador web y accede a tu página PHP utilizando la URL http://example.com/phpinfo.php. Deberías ver tu página PHP en la siguiente pantalla:
Conclusión
En la guía anterior hemos explicado cómo instalar la pila LEMP en Debian 11. Ahora puedes empezar a alojar tu primer sitio web utilizando la pila LEMP. No dudes en preguntarme si tienes alguna duda.