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-datay group=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.






