Vamos a ver en esta entrada cómo instalar LEMP en Debian 10 Buster paso a paso, la pila formada por el servicio web Nginx con PHP y un motor de bases de datos MariaDB/MySQL, de modo que al final de este tutorial tendrás todos estos elementos conectados y funcionando.
Tabla de contenidos
Antes de instalar LEMP en Debian 10 Buster
Para poder seguir esta guía de instalación LEMP en Debian 10 Buster deberías partir de unos requisitos mínimos:
- Un servidor Debian 10 Buster actualizado.
- Acceso a consola como root o un usuario con permisos de sudo.
- Conexión a Internet.
Es casi seguro que si estás leyendo esto, ya cumples los requerimientos, así que puedes ir abriendo una terminal de consola y empezamos.
Cómo instalar LEMP en Debian 10 Buster
Para instalar LEMP en Debian 10 Buster disponemos de todos los componentes en los repositorios oficiales de la distribución. Por tanto, la primera acción es actualizar la información de las distintas listas de paquetes:
~$ sudo apt update
Es buena idea actualizar los paquetes instalados cuando de van a instalar muchos paquetes:
~$ sudo apt upgrade -y
Hecho esto, instalaremos de una vez todos los paquetes necesarios para montar la pila LEMP con apt:
~$ sudo apt install -y php-fpm php-mysql nginx mariadb-server
Después de descargar es instalar estos paquetes y todas sus dependencias se crearán tres nuevos servicios en nuestro sistema Debian 10, los servicios nginx.service, php7.3-fpm.service y mariadb.service. También puedes usar los nombres cortos como nginx, php7.3-fpm y mariadb.
Los tres servicios de la pila LEMP quedan en ejecución tras su instalación, y también habilitados para iniciar automáticamente con cada arranque de Debian 10. Puedes comprobar el estado de los servicios en cualquier momento con el comando systemctl status nginx php7.3-fpm mariadb
:
Configurar UFW para la pila LEMP
En caso de que tengas instalado este firewall en tu sistema Debian 10 Buster y quieras acceder desde otros sistemas en red, deberás abrir algunos servicios de tu pila LEMP.
Obviamente debes abrir el puerto HTTP:
~$ sudo ufw allow http
Si además vas a ofrecer conexiones seguras, también debes abrir el puerto HTTPS:
~$ sudo ufw allow https
Finalmente, si por algún motivo desearas conectar remotamente con el servicio de base de datos, deberías también abrir el puerto correspondiente:
~$ sudo ufw allow mysql
Probando el servicio web
Con el firewall configurado (en caso de ser necesario) y el servidor web funcionando, podemos usar un navegador para probar el servicio, indicando como URL la dirección IP o dominio del servidor Debian 10:
Ya sólo nos faltan unos toques para terminar de dejar el entorno LEMP definitivamente operativo en nuestro sistema Debian 10.
Cómo configurar LEMP en Debian 10 Buster
Configuración de MariaDB
Por defecto la instalación del servicio de bases de datos no incorpora usuarios anónimos ni bases de pruebas, lo que es bastante seguro.
Únicamente hay que tener en cuenta que el usuario root accede sin contraseña, pero sólo usando el cliente mysql con usuarios de Debian 10 como root o usuarios con permisos de sudo:
~$ sudo mysql Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 49 Server version: 10.3.17-MariaDB-0+deb10u1 Debian 10 Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]>
Esto se debe a que el usuario root de MariaDB está usando el plugin de autenticación unix_socket.
Configuración de PHP
Para configurar PHP editaremos su archivo principal, php.ini:
~$ sudo nano /etc/php/7.3/fpm/php.ini
Es importante configurar la zona horaria para las aplicaciones de PHP, lo que se controla desde la variable date.timezone:
... [Date] ; Defines the default timezone used by the date functions ; http://php.net/date.timezone ;date.timezone = ...
Está desactivada por defecto, así que la activaremos y le asignaremos un valor:
date.timezone = Europe/Madrid
En http://php.net/date.timezone encontrarás información sobre los valores posibles si no conoces los de tu zona horaria.
Si estás montando este entorno LEMP para desarrollo, querrás que PHP imprima mensajes de error en el navegador en caso de fallos. Si es así busca estas directivas:
... error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT ... display_errors = Off ... display_startup_errors = Off ...
Y asígnales estos valores:
... error_reporting = E_ALL ... display_errors = On ... display_startup_errors = On ...
Después de hacer cualquier cambio en este archivo, hay que recargar la configuración del servicio php7.3-fpm para aplicar los cambios:
~$ sudo systemctl reload php7.3-fpm
Configuración de Nginx
Aunque Nginx funciona correctamente no está integrado con el servicio de PHP. Editaremos el servidor virtual por defecto, el que se encarga de la página web por defecto del sistema que acabamos de ver, y activaremos la conexión con el servicio PHP.
Para ello editaremos el archivo de configuración de este servidor virtual por defecto:
~$ sudo nano /etc/nginx/sites-available/default
En el bloque server encontraremos una directiva index que configura los archivos índice:
... # Add index.php to the list if you are using PHP index index.html index.htm index.nginx-debian.html; ...
Tal y como indica el comentario, debemos añadir index.php a la lista, ya que es el típico archivo índice de las aplicaciones PHP:
... index index.php index.htm index.nginx-debian.html; ...
Buscaremos también la sección location referida a PHP:
... # 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/php7.3-fpm.sock; # # With php-cgi (or other tcp sockets): # fastcgi_pass 127.0.0.1:9000; #} ...
Descomentaremos este bloque location y dentro de este sólo la directiva fastcgi_pass para la conexión por socket de Unix:
... # 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/php7.3-fpm.sock; # # With php-cgi (or other tcp sockets): # fastcgi_pass 127.0.0.1:9000; } ...
Para aplicar los cambios, recargaremos la configuración del servicio web:
~$ sudo systemctl reload nginx
Probar LEMP en Debian 10 Buster
Vamos a comprobar la integración de los servicios creando un pequeño script PHP en una ruta fácilmente localizable vía web:
~$ sudo nano /var/www/html/info.php
El único contenido de este archivo será la siguiente línea:
<?php phpinfo();
Guardamos los cambios y cerramos el archivo. Ahora desde el navegador podremos acceder a este script añadiendo la ruta /info.php a la dirección IP o dominio del servidor:
Examinando la información que nos brinda la función phpinfo() podremos ver que se han cargado las extensiones para MySQL (MariaDB) y la configuración de la zona horaria.
Ahora nuestro sistema Debian 10 está listo para el desarrollo o instalación de aplicaciones basadas en el entorno LEMP.
Conclusión
Así de sencillo es instalar LEMP en Debian 10 Buster, una opción para aprovechar las prestaciones de Nginx en todo tipo de aplicaciones web.
¡Apoya este sitio!
Si esta guía de instalación LEMP en Debian 10 Buster era lo que necesitabas para montar esta pila en tu servidor o VPS, y estás tan satisfecho que quieres agradecérnoslo, puedes contribuir al mantenimiento de este sitio dejando una propina de tan sólo 1 $ desde PayPal:
¡Gracias!