Esta guía le muestra cómo instalar la pila LEMP (Nginx, MariaDB y PHP8.2) en Debian 12. Una pila de software es una colección de herramientas de software agrupadas. LEMP significa Linux, Nginx (Engine-X), MariaDB/MySQL y PHP, todos los cuales son de código abierto y de uso gratuito. Es la pila de software más común que admite sitios web dinámicos y aplicaciones web. Linux es un sistema operativo; Nginx es un servidor web; MariaDB/MySQL es un servidor de base de datos y PHP es un lenguaje de secuencias de comandos del lado del servidor responsable de crear páginas web dinámicas. En esta guía, estamos instalando como root, si tiene uno normal, use el comando sudo.
|
Preguntas más frecuentes:
-
Queremos que todos los datos estén con nosotros. ¿Puedes hacer todo este ajuste en nuestro equipo?
Sí, puedes solicitar la instalación y configuración de esta configuración en tu equipo mediante el enlace.
La configuración del servidor preconfigurado está disponible en el formulario de pedido.
1. Actualizar paquetes de software
Antes de instalar la pila LEMP, se recomienda actualizar el repositorio y los paquetes de software. Ejecute los siguientes comandos en el sistema operativo Debian 12.
apt update
apt upgrade
2. Instalar el servidor web Nginx
Nginx — es un servidor web de alto rendimiento muy popular en estos días. También se puede utilizar como proxy inverso y servidor de almacenamiento en caché. Ingrese el siguiente comando para instalar el servidor web Nginx.
apt install nginx
Después de instalarlo, podemos habilitar Nginx para que se inicie automáticamente en el momento del arranque ejecutando el siguiente comando.
systemctl enable nginx
Luego inicie Nginx con este comando:
systemctl start nginx
Ahora comprueba su estado.
systemctl status nginx
Ahora ingrese la dirección IP pública de su servidor Debian 12 en la barra de direcciones de su navegador. Debería ver una página web de "Bienvenido a Nginx", lo que significa que el servidor web de Nginx funciona correctamente. Si está instalando LEMP en su máquina Debian 12 local, ingrese 127.0.0.1 o localhost en la barra de direcciones de su navegador.
Si se rechaza la conexión o no se puede establecer, es posible que el firewall esté bloqueando las solicitudes entrantes en el puerto TCP 80. Si está utilizando el firewall de iptables, debe ejecutar el siguiente comando para abrir el puerto TCP 80.
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
Si está utilizando un firewall UFW, ejecute este comando para abrir el puerto TCP 80.
ufw allow http
Ahora necesitamos hacer que www-data (el usuario de Nginx) sea el propietario del directorio web. Por defecto, es propiedad del usuario root.
chown www-data:www-data /usr/share/nginx/html -R
3. Instalar el servidor de base de datos MariaDB
MariaDB es un reemplazo para MySQL. Está desarrollado por antiguos miembros del equipo de MySQL que están preocupados de que Oracle pueda convertir a MySQL en un producto de código cerrado. Ingrese el siguiente comando para instalar MariaDB en Debian 12.
apt install mariadb-server mariadb-client
Después de la instalación, el servidor MariaDB debería iniciarse automáticamente. Utilice systemctl para comprobar su estado.
systemctl status mariadb
Si no se está ejecutando, inícielo con este comando:
systemctl start mariadb
Para permitir que MariaDB se inicie automáticamente en el momento del arranque, ejecute
systemctl enable mariadb
Ahora ejecute el script de seguridad después de la instalación.
mysql_secure_installation
Cuando se le solicite ingresar la contraseña raíz de MariaDB, presione la tecla Intro ya que la contraseña raíz aún no se ha establecido. Luego escriba y para configurar la contraseña raíz para el servidor MariaDB.
Luego puede presionar Entrar para responder las preguntas restantes, lo que eliminará al usuario anónimo, deshabilitará el inicio de sesión raíz remoto y eliminará la base de datos de prueba. Este paso es el requisito principal para asegurar la base de datos MariaDB. (Tenga en cuenta que Y está en mayúscula, lo que significa que esta es la respuesta predeterminada).
De manera predeterminada, el paquete MaraiDB de Debian usa unix_socket para la autenticación del usuario, lo que básicamente significa que puede usar el nombre de usuario y la contraseña del sistema operativo para iniciar sesión en la consola de MariaDB. Entonces puede ejecutar el siguiente comando para iniciar sesión sin proporcionar la contraseña raíz de MariaDB.
mariadb -u root
Corre para salir
exit;
4. Instalar PHP8.2
PHP8.2 incluido en el repositorio de Debian 12 y tiene una pequeña mejora de rendimiento sobre PHP7.x. Ingrese el siguiente comando para instalar PHP8.2 y algunas extensiones comunes.
apt install php php-fpm php-mysql php-common php-cli php-common php-json php-opcache php-readline php-mbstring php-xml php-gd php-curl
Las extensiones de PHP generalmente se requieren para los sistemas de administración de contenido (CMS) como WordPress. Por ejemplo, si falta php8.2-xml en su instalación, entonces algunas páginas de su sitio de WordPress pueden estar en blanco y puede encontrar un error en el registro de errores de Nginx, como:
Mensaje de PHP: Error fatal de PHP: Error no controlado: Llamada de función no definida xml_parser_create()
La instalación de estas extensiones de PHP asegurará que su CMS funcione sin problemas. ahora corre php8.2-fpm.
systemctl start php8.2-fpm
Habilite la reproducción automática durante el arranque.
systemctl enable php8.2-fpm
Comprobar estado:
systemctl status php8.2-fpm
5. Crear un bloque de servidor Nginx
El bloque del servidor Nginx es similar al host virtual en Apache. No usaremos el bloque de servidor predeterminado porque no es adecuado para ejecutar código PHP y si lo cambiamos se convertirá en un desastre. Por lo tanto, elimine el enlace simbólico predeterminado en el directorio habilitado para el sitio ejecutando el siguiente comando. (Todavía está disponible como /etc/nginx/sites-available/default.)
rm /etc/nginx/sites-enabled/default
Luego use un editor de texto de línea de comando como Nano para crear un nuevo archivo de bloque de servidor en el directorio /etc/nginx/conf.d/. Pegue el siguiente texto en el archivo. El siguiente fragmento hará que Nginx escuche en el puerto IPv4 80 y en el puerto IPv6 80 con el nombre univalente del servidor.
nano /etc/nginx/conf.d/default.conf
server {
listen 80;
listen [::]:80;
server_name _;
root /usr/share/nginx/html/;
index index.php index.html index.htm index.nginx-debian.html;
location / {
try_files $uri $uri/ /index.php;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
include snippets/fastcgi-php.conf;
}
# A long browser cache lifetime can speed up repeat visits to your page
location ~* \.(jpg|jpeg|gif|png|webp|svg|woff|woff2|ttf|css|js|ico|xml)$ {
access_log off;
log_not_found off;
expires 360d;
}
# disable access to hidden files
location ~ /\.ht {
access_log off;
log_not_found off;
deny all;
}
}
Guarde y cierre el archivo. (Para guardar el archivo en el editor de texto Nano, presione Ctrl+O, luego presione Entrar para confirmar. Para salir, presione Ctrl+X).
Luego pruebe las configuraciones de Nginx.
nginx -t
Si la prueba es exitosa, reinicie Nginx.
systemctl reload nginx
6. Probando PHP
Para probar PHP-FPM con el servidor web Nginx, necesitamos crear un archivo info.php en el directorio webroot.
nano /usr/share/nginx/html/info.php
Guarde y cierre el archivo. Ahora, en la barra de direcciones del navegador, ingrese server-ip-address/info.php. Reemplace la dirección IP del servidor con su dirección IP real. Si está siguiendo esta guía en su máquina local, ingrese 127.0.0.1/info.php o localhost/info.php.
Verá la información PHP de su servidor. Esto significa que los scripts PHP pueden funcionar correctamente con el servidor web Nginx.
7. Reinicio automático de Nginx
Si por alguna razón su proceso Nginx se detiene, debe ejecutar el siguiente comando para reiniciarlo.
systemctl restart nginx
En lugar de escribir manualmente este comando, podemos hacer que Nginx se reinicie automáticamente editando el módulo del sistema nginx.service systemd. Para anular la configuración predeterminada del servicio systemd, creamos un directorio separado.
mkdir -p /etc/systemd/system/nginx.service.d/
Luego crea un archivo en ese directorio.
nano /etc/systemd/system/nginx.service.d/restart.conf
Agregue las siguientes líneas al archivo, lo que hará que Nginx se reinicie automáticamente 5 segundos después de que se detecte una falla. El RetartSec predeterminado es de 100 ms, que es demasiado corto. Nginx puede quejarse de que "la solicitud de inicio se está reintentando demasiado rápido" si RestartSec no es lo suficientemente grande.
[Service]
Restart=always
RestartSec=5s
Guarde y cierre el archivo. Luego, vuelva a cargar systemd para que los cambios surtan efecto.
systemctl daemon-reload
Para probar si esto funcionará, elimine Nginx con:
pkill nginx
Luego verifique el estado de Nginx. Encontrará que Nginx se reinicia automáticamente.
systemctl status nginx
LEMP (Nginx, MariaDB y PHP8.2) instalado correctamente en Debian 12. Todos estos pasos ya se han realizado en la configuración LEMP preinstalada de Debian 12 para servidores VPS en el formulario de pedido.