Image

(Ultimo cambio: 22.04.2024)
Esta guía le muestra cómo instalar la pila LEMP (Nginx, MariaDB y PHP7.4) en Debian 11. 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.


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 11.

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 11 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 11 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 11.

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 PHP7.4

PHP7.4 incluido en el repositorio de Debian 11 y tiene una pequeña mejora de rendimiento sobre PHP7.3. Ingrese el siguiente comando para instalar PHP7.4 y algunas extensiones comunes.

apt install php7.4 php7.4-fpm php7.4-mysql php-common php7.4-cli php7.4-common php7.4-json php7.4-opcache php7.4-readline php7.4-mbstring php7.4-xml php7.4-gd php7.4-curl

Las extensiones de PHP generalmente se requieren para los sistemas de administración de contenido (CMS) como WordPress. Por ejemplo, si falta php7.4-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 php7.4-fpm.

systemctl start php7.4-fpm

Habilite la reproducción automática durante el arranque.

systemctl enable php7.4-fpm

Comprobar estado:

systemctl status php7.4-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/php7.4-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 PHP7.4) instalado correctamente en Debian 11. Todos estos pasos ya se han realizado en la configuración LEMP preinstalada de Debian 11 para servidores VPS en el formulario de pedido.




Sin comentarios aún