Como instalar el stack LEMP (Nginx, PHP and MariaDB) en Debian 12

Published:

El Stack de Linux LEMP es un paquete de software popular para el desarrollo y alojamiento de aplicaciones web, que sirve para correr muchas aplicaciones como las conocidas WordPress o Joomla entre otros. Consta de cuatro componentes clave: Linux, Nginx (pronunciado «Engine-X»), MySQL o MariaDB (una base de datos relacional) y PHP (un popular lenguaje de programación web).

Vamos a ver el procedimiento actualizado para la versión de Debian 12, todo por repositorio.

1- Pre-requisitos

Tener el sistema actualizado e instalar los siguientes complementos:

sudo apt install wget curl nano ufw software-properties-common dirmngr apt-transport-https gnupg2 CA-certificates lsb-release debian-archive-keyring unzip -y

2- Configuración del Firewall UFW

sudo ufw status

Deberíamos permitir el tráfico http y https además claro de ssh.

sudo ufw allow http
sudo ufw allow https

3- Instalación de PHP

Por defecto Debian 12 viene con la versión 8.2 de PHP, instalamos y agregamos algunas extensiones adicionales.

sudo apt install php-fpm php-cli php-mysql php-mbstring php-xml php-gd

3.1- Pero hay casos que necesitamos otras versiones de PHP para esa vamos a usar los repos Ondrej, y usamos primero las siguientes llaves:

sudo curl -sSLo /usr/share/keyrings/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpg

Agregamos el repositorio PHP de Ondrej Sury.

sudo sh -c 'echo "deb [firmado por=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) principal " > /etc/apt/sources.list.d/php.list'

Actualizamos e instalamos la versión que necesitamos de PHP, podes verlas con apt search.

sudo apt update ; sudo apt install php8.1-fpm php8.1-cli

4- Base de datos

Vamos a instalar MariaDB

sudo apt install mariadb-server

Y lanzamos el script de instalación

sudo mysql_secure_installation

La primer pregunta le damos enter porque todavía no hay un password seteado. Y vamos contestando las preguntas según nuestra necesidad.

5- Nginx

Por defecto Debian no trae la última versión de Nginx pero vamos a agregar los repositorios necesarios. Primero agreamos la llave:

curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
    | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

Ahora los repositorios

echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
http://nginx.org/packages/debian `lsb_release -cs` nginx" \
    | sudo tee /etc/apt/sources.list.d/nginx.list

Actualizamos e instalamos

sudo apt update ; sudo apt install nginx

Verificamos el status

sudo systemctl start nginx ; sudo systemctl status nginx

6- Configurar PHP-FPM

PHP-FPM (FastCGI Process Manager, en inglés) es la implementación alternativa más popular de PHP FastCGI. PHP (acrónimo de PHP: Hypertext Preprocessor) es uno de los lenguajes de programación de código abierto más populares de Internet, que se utiliza para desarrollo web en plataformas como Magento, WordPress o Drupal.

6.1- Editamos php.ini

sudo nano /etc/php/8.2/fpm/php.ini

Debemos ajustar como mínimo los siguientes valores

upload_max_filesize = 50M
...
post_max_size = 50M
...
memory_limit = 256M

Alternativa para no tener que entrar a mano usamos el comando sed.

sudo sed -i 's/post_max_size = 8M/post_max_size = 50M/' /etc/php/8.2/fpm/php.ini
sudo sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 50M/' /etc/php/8.2/fpm/php.ini
sudo sed -i 's/memory_limit = 128M/memory_limit = 256M/' /etc/php/8.2/fpm/php.ini

6.2- Editamos www.conf

sudo nano /etc/php/8.2/fpm/pool.d/www.conf

Necesitamos configurar el usuario/grupo de procesos PHP de Unix en nginx . Busquemos las líneas user=www-datagroup=www-dataen el archivo y colocar nginx.

...
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
user = nginx
group = nginx
...

NO cerramos aún el archivo porque debemos buscar las siguientes lineas y ajustarlas

listen.owner = nginx
listen.group = nginx

Guardamos con F2 o Ctrl + x.

6.3- Reinicio del servicio

sudo systemctl restart php8.2-fpm

7- Configurar Opcache

Opcache es el sistema de almacenamiento en caché de PHP. Funciona guardando el código de bytes del script precompilado en la memoria, por lo que cada vez que un usuario visita una página, se carga más rápido. Opcache está instalado por defecto. Para verificar que este instalado debemos verificar la versión de PHP y debería aparecer

php --version

Instalamos en caso que no este

sudo apt install php-opcache

7.1- Ajustar la configuración de Opcache

sudo nano /etc/php/8.2/fpm/conf.d/10-opcache.ini

Debemos ajustar las siguientes lineas

opcache.enable_cli=1 
opcache.memory_consumption=128 
opcache.interned_strings_buffer=8 
opcache.max_accelerated_files=4000 
opcache.revalidate_freq=60

Guardamos con F2 y reiniciamos.

sudo systemctl reiniciar php8.2-fpm

PALABRAS FINALES

Con esto instalamos el stack de lemp y algunos componentes más.

- Advertisement -
Jorge
Jorgehttps://nksistemas.com
Soy Jorge, Sr Sysadmin Linux/DevOps/SRE y creador de NKSistemas.com Trabajo con plataformas: Linux, Windows, AWS, GCP, VMware, Helm, kubernetes, Docker, etc.

Related articles