Cómo instalar LEMP en el servidor Debian 10


Una pila "LEMP" es una combinación de software de código abierto que normalmente se instala en un servidor Linux para implementar aplicaciones dinámicas. Este término es un acrónimo que representa el sistema operativo Linux, el servidor web Nginx, una base de datos MariaDB y la programación PHP.

Aunque esta pila “LEMP” normalmente contiene MySQL como sistema de administración de base de datos, algunas distribuciones de Linux como Debian usan MariaDB como un reemplazo directo de MySQL.

  1. Cómo instalar un servidor mínimo Debian 10 (Buster)

En este artículo, le explicaremos cómo instalar y configurar un entorno LEMP en un servidor Debian 10, utilizando MariaDB como plataforma de gestión de la base de datos.

Instalación del servidor web Nginx en Debian 10

Nginx es un servidor proxy inverso y de código abierto, ligero pero potente y fácil de configurar, un servidor proxy de correo y un servidor proxy TCP/UDP genérico, con una arquitectura modular.

Algunas de sus características básicas incluyen el servicio de archivos de índice y estáticos; soporte acelerado con almacenamiento en caché de servidores FastCGI, uwsgi, SCGI y Memcached, equilibrio de carga y tolerancia a fallas, soporte SSL y TLS SNI, soporte para HTTP/2 con priorización ponderada y basada en dependencia.

Para instalar el paquete Nginx, use el administrador de paquetes apt de Debian como se muestra.

# apt update 
# apt install nginx 

Una vez que se complete la instalación de Nginx, el instalador activará systemd para iniciar el servicio Nginx por ahora y lo habilitará para que se inicie automáticamente al arrancar el sistema. Puede verificar el estado de Nginx usando el siguiente comando systemctl.

# systemctl status nginx

También puede utilizar los siguientes comandos importantes para iniciar, reiniciar, detener y volver a cargar la configuración del servicio Nginx en systemd.

# systemctl start nginx
# systemctl restart nginx 
# systemctl stop nginx
# systemctl reload nginx 
# systemctl status nginx 

A continuación, si tiene el firewall UFW en ejecución (generalmente está deshabilitado de manera predeterminada), debe abrir el puerto 80 (HTTP) y 443 (HTTPS) para permitir el tráfico entrante en Nginx.

# ufw allow 80
# ufw allow 443
# ufw status

En este punto, debe probar si Nginx está instalado correctamente, si se está ejecutando y puede servir páginas web. Para hacerlo, abra un navegador web y apúntelo a la siguiente URL para acceder a la página web predeterminada de Nginx Debian.

http://SERVER_IP/
OR
http://localhost/

Instalación de MariaDB en Debian 10

A continuación, debe instalar un sistema de base de datos para poder almacenar y administrar datos para su sitio web o aplicación web. Debian 10 admite MariaDB de forma predeterminada, como un reemplazo directo de MySQL.

Para instalar MariaDB, ejecute el siguiente comando.

# apt install mariadb-server

A continuación, verifique el estado del servicio MariaDB, ya que systemd lo inicia automáticamente y está habilitado para iniciarse en el inicio del sistema, para asegurarse de que esté en funcionamiento, use el siguiente comando.

# systemctl status mariadb

Para administrar (iniciar, reiniciar, detener y volver a cargar) el servicio MariaDB en systemd, puede usar el siguiente comando.

# systemctl start mariadb
# systemctl restart mariadb
# systemctl stop mariadb
# systemctl reload mariadb

A continuación, la implementación de MariaDB será insegura de forma predeterminada. Debe ejecutar un script de shell que se incluye con el paquete, para que pueda mejorar la seguridad de la base de datos.

# mysql_secure_installation

Después de ejecutar el script, lo llevará a través de una serie de preguntas para modificar la configuración predeterminada de la instalación de MariaDB como se muestra en la siguiente captura de pantalla.

Instalación de PHP-FPM (Fast Process Manager) en Debian 10

A diferencia de Apache y otros servidores web, Nginx no proporciona soporte nativo para PHP, ya que usa PHP-FPM para manejar solicitudes de páginas PHP. PHP-FPM es un demonio FastCGI alternativo para PHP que permite que un sitio web maneje cargas elevadas mediante el uso de procesos de trabajo para manejar solicitudes.

Para instalar PHP-FPM versión 7.3 y un módulo PHP para comunicarse con un sistema de base de datos MariaDB/MySQL, ejecute el siguiente comando.

# apt install php-fpm php-mysqli

Después de instalar PHP-FPM, el instalador activará systemd para iniciar el servicio PHP-FPM por ahora y lo habilitará para que se inicie automáticamente al arrancar el sistema. Para comprobar si está en funcionamiento, ejecute el siguiente comando.

# systemctl status php-fpm

También puede iniciar, reiniciar, detener y volver a cargar la configuración del servicio PHP-FPM en systemd, de la siguiente manera.

# systemctl start php-fpm
# systemctl restart php-fpm
# systemctl stop php-fpm
# systemctl reload php-fpm
# systemctl status php-fpm

A continuación, debe proteger PHP-FPM realizando algunos cambios en el archivo de configuración /etc/php/7.3/fpm/php.ini de la siguiente manera.

# vi /etc/php/7.3/fpm/php.ini

Busque el ; cgi.fix_pathinfo u003d 1 descomente quitando el carácter ; al principio, establezca su valor en 0 . Esto evita que Nginx permita que archivos que no sean PHP se ejecuten como PHP.

cgi.fix_pathinfo=0

De forma predeterminada, PHP-FPM está configurado para escuchar en un soxket UNIX, /run/php/php7.3-fpm.sock como se define en el archivo de configuración /etc/php/7.3/fpm/pool.d/www.conf. Debe configurar todo su bloque de servidor (o hosts virtuales) para usar este socket si van a procesar y servir páginas PHP.

Puede usar el archivo de configuración de bloque de servidor predeterminado de Nginx/etc/nginx/sites-available/default para probarlo.

# vi /etc/nginx/sites-available/default 

Busque la siguiente sección y descomente para pasar scripts PHP al servidor FastCGI como se muestra en la captura de pantalla.

location ~ \.php$ {
            include snippets/fastcgi-php.conf;
            fastcgi_pass unix:/run/php/php7.3-fpm.sock;
}

A continuación, pruebe si la estructura de configuración de Nginx está bien, usando el siguiente comando.

# nginx -t

Si la configuración de Nginx es correcta, para aplicar los cambios realizados recientemente, reinicie los servicios php7.3-fpm y nginx de la siguiente manera.

# systemctl restart php7.2-fpm
# systemctl restart nginx

Prueba del procesamiento PHP-FPM en Nginx

Después de configurar PHP-FPM y Nginx para que funcionen juntos, debe probar si dos servicios pueden procesar y entregar páginas PHP a los clientes. Para hacer eso, cree un script PHP simple en su DocumentRoot web de la siguiente manera.

# echo “<?php phpinfo(); ?>”  | tee /var/www/html/info.php

Finalmente, abra un navegador y escriba la siguiente dirección para ver las configuraciones PHP en el sistema generadas por la función phpinfo() .

http://SERVER_IP/info.php
OR
http://localhost/info.php

En este artículo, hemos mostrado cómo instalar y configurar la pila LEMP en Debian 10. Si tiene alguna pregunta o comentario, comuníquese con nosotros y háganoslo saber a través del formulario de comentarios a continuación.