GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo instalar LEMP Stack Nginx, MySQL, PHP en Debian 11

Cómo instalar LEMP Stack Nginx, MySQL, PHP en Debian 11. En esta guía, aprenderá a instalar Nginx, MySQL 8.0 y PHP 8.1.

También instalará algunas extensiones de PHP comunes y ajustará las configuraciones de PHP. Finalmente, protegerá su configuración con Let's Encrypt SSL y configurará la redirección HTTPS.

Esta configuración se prueba en la nube de Google, por lo que funcionará en todos los servicios de alojamiento en la nube como AWS, Azure o cualquier VPS o cualquier servidor dedicado que ejecute Debian 11.

Requisitos

  • Acceso raíz a su servidor o un usuario sudo.
  • El dominio apuntó a la IP de su servidor para instalar Let'sEncrypt SSL

Paso 1:Inicialización de la configuración

Comience por actualizar los paquetes a la última versión disponible con el siguiente comando.

sudo apt update
sudo apt upgrade

Instale el paquete wget.

sudo apt install wget

Una vez que haya actualizado la configuración, puede iniciar la configuración.

Paso 2:Instalar Nignx

Instale Nginx usando el siguiente comando.

sudo apt install nginx

Esto instalará nginx y todas las dependencias requeridas.

Paso 3:configurar el cortafuegos

Ahora puede configurar un cortafuegos sin complicaciones (UFW) con Nginx para permitir el acceso público en los puertos web predeterminados para HTTP y HTTPS

sudo ufw app list

Verá todas las aplicaciones enumeradas.

Output
Available applications:
   Nginx Full
   Nignx HTTP
   Nginx HTTPS
   OpenSSH
  • HTTP de Nginx :Este perfil abre el puerto 80 (tráfico web normal, sin cifrar)
  • Nginx completo :Este perfil abre ambos puertos 80 (tráfico web normal, sin cifrar) y puerto 443 (tráfico cifrado con TLS/SSL)
  • HTTPS de Nginx :Este perfil abre solo el puerto 443 (tráfico cifrado con TLS/SSL)
  • Abrir SSH :Este perfil abre el puerto 22 para acceso SSH.

Si no va a utilizar SSL, debe habilitar solo el perfil HTTP de Nginx.

Ahora habilitaremos Nginx Full.

sudo uff allow OpenSSH
sudo ufw allow 'Nginx Full'

Con este comando puede ver el estado de UFW.

sudo ufw status

Verá el resultado de la siguiente manera.

Output
Status: active
 To                         Action      From
 --                         ------      ----
 Nginx Full                 ALLOW       Anywhere                  
 OpenSSH                    ALLOW       Anywhere                  
 Nginx Full (v6)            ALLOW       Anywhere (v6)             
 OpenSSH (v6)               ALLOW       Anywhere (v6)

Paso:4 Comprobar la instalación de Nginx

Una vez que Nginx está instalado, se inicia automáticamente y ya está en funcionamiento.

Cada proceso en Nginx se gestiona con el systemctl dominio. Verifique el estado de Nginx con el siguiente comando.

sudo systemctl status nginx
● nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2022-02-03 03:13:00 UTC; 6h ago
       Docs: man:nginx(8)
    Process: 11261 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code>
    Process: 11262 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, >
   Main PID: 11263 (nginx)
      Tasks: 3 (limit: 8622)

Ahora tenemos Nignx instalado y configurado Firewall.

Paso 5:Instalar MySQL

Para agregar el repositorio MySQL APT a su sistema, vaya a la página de descarga del repositorio y descargue el paquete de versión más reciente usando el siguiente comando.

wget https://dev.mysql.com/get/mysql-apt-config_0.8.22-1_all.deb

Instale el paquete de lanzamiento.

sudo apt install ./mysql-apt-config_0.8.22-1_all.deb

Vamos a instalar MySQL versión 8.0. Seleccione Aceptar presionando Tabulador y presione Entrar (como se muestra en la imagen de arriba).

Ahora puede instalar MySQL.

sudo apt update
sudo apt install mysql-server

Una vez completada la instalación, el servicio MySQL se iniciará automáticamente. Para verificar que el servidor MySQL se está ejecutando, escriba:

sudo service mysql status

El resultado debe mostrar que el servicio está habilitado y ejecutándose:

 mysql.service - MySQL Community Server
     Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2022-02-02 06:12:30 UTC; 17s ago
       Docs: man:mysqld(8)
             http://dev.mysql.com/doc/refman/en/using-systemd.html
   Main PID: 101929 (mysqld)
     Status: "Server is operational"
      Tasks: 38 (limit: 1148)
     Memory: 369.3M
        CPU: 805ms
     CGroup: /system.slice/mysql.service
             └─101929 /usr/sbin/mysqld

Feb 02 06:12:29 demo systemd[1]: Starting MySQL Community Server...
Feb 02 06:12:30 demo systemd[1]: Started MySQL Community Server.

Paso 6:Asegurar MySQL

La instalación de MySQL viene con un script llamado mysql_secure_installation que le permite mejorar fácilmente la seguridad del servidor MySQL.

sudo mysql_secure_installation

Se le pedirá que configure el VALIDATE PASSWORD PLUGIN que se utiliza para probar la seguridad de las contraseñas de los usuarios de MySQL y mejorar la seguridad.

Presiona y si desea configurar el complemento de validación de contraseña o cualquier otra clave para pasar al siguiente paso.

Hay tres niveles de política de validación de contraseñas, bajo, medio y fuerte.

Introduzca 2 para una validación de contraseña segura.

En el siguiente mensaje, se le pedirá que establezca una contraseña para el usuario root de MySQL.

Si configura el complemento de validación de contraseña, el script le mostrará la seguridad de su nueva contraseña. Escribe y para confirmar la contraseña.

A continuación, se le pedirá que elimine el usuario anónimo, restrinja el acceso del usuario raíz a la máquina local, elimine la base de datos de prueba y vuelva a cargar las tablas de privilegios. Debes responder y a todas las preguntas.

Paso 7:Instalar PHP

Agregue el PPA de SURY para PHP 8.1

sudo apt -y install lsb-release apt-transport-https ca-certificates
sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg

Ahora puede agregar el PPA a los paquetes del servidor.

echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php.list

Actualice los paquetes e instale PHP 8.1

sudo apt update

sudo apt install php php8.1-fpm php8.1-mysql php8.1-common php8.1-mysql php8.1-xml php8.1-xmlrpc php8.1-curl php8.1-gd php8.1-imagick php8.1-cli php8.1-dev php8.1-imap php8.1-mbstring php8.1-opcache php8.1-soap php8.1-zip php8.1-intl -y

Una vez que PHP esté instalado, puede verificar la versión usando el siguiente comando.

php -v

Paso 8:Configurar PHP

Ahora configuramos PHP para Aplicaciones Web cambiando algunos valores en php.ini archivo.

Para PHP 8.1 con Nginx el php.ini la ubicación estará en el siguiente directorio.

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

Presiona F6 para buscar dentro del editor y actualizar los siguientes valores para un mejor rendimiento.

upload_max_filesize = 32M 
post_max_size = 48M
memory_limit = 256M
max_execution_time = 600
max_input_vars = 3000
max_input_time = 1000

Una vez que haya modificado la configuración de PHP, debe reiniciar su PHP-FPM para que los cambios surtan efecto.

sudo service php8.1-fpm restart

Paso 9:configurar Nginx

Deshabilite la configuración predeterminada de Nginx.

sudo rm -rf /etc/nginx/sites-enabled/default
sudo rm -rf /etc/nginx/sites-available/default

Crear directorios de sitios web.

sudo mkdir -p /var/www/html/domainname/public

Configure los permisos correctos.

sudo chmod -R 755 /var/www/html/domainname
sudo chown -R www-data:www-data /var/www/html/domainname

Cree una nueva configuración de bloque de servidor.

sudo nano /etc/nginx/sites-available/domainname.conf

Pegue las siguientes configuraciones en el nuevo archivo.

server {
    listen 80;
    listen [::]:80;

    server_name yourdomainname.com www.yourdomainname.com;

    root /var/www/html/domainname/public;
    index index.html index.php;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/run/php/php8.1-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
    }
}

Habilite la nueva configuración.

sudo ln -s /etc/nginx/sites-available/domainname.conf /etc/nginx/sites-enabled/domainname.conf

Paso 10:Instalar Let's Encrypt SSL

HTTPS es un protocolo para la comunicación segura entre un servidor (instancia) y un cliente (navegador web). Debido a la introducción de Let's Encrypt, que proporciona certificados SSL gratuitos, todos adoptan HTTPS y también brindan confianza a sus audiencias.

Aquí instalaremos Certbot para instalar Let'sEncrypt SSL usando Snap.

sudo apt update
sudo apt install snapd -y
sudo snap install core
sudo snap refresh core

Instale la herramienta Certbot.

sudo snap install --classic certbot

Configure Certbot para que sea ejecutable como un comando.

sudo ln -s /snap/bin/certbot /usr/bin/certbot

Ahora hemos instalado Certbot para instalar Let's Encrypt para Debian 11.

Ejecute el siguiente comando para instalar sus certificados.

sudo certbot --nginx --agree-tos --redirect -m [email protected] -d domainname.com -d www.domainname.com

Seleccione la opción apropiada y presione Enter

Este comando instalará Free SSL, configurará la redirección a HTTPS y reiniciará el servidor Nginx.

Paso 11:Renovación del certificado SSL

Los certificados proporcionados por Let's Encrypt son válidos solo por 90 días, por lo que debe renovarlos con frecuencia. Entonces, probemos la función de renovación usando el siguiente comando.

sudo certbot renew --dry-run

Este comando probará la caducidad del certificado y configurará la función de renovación automática.

Paso:12:Pruebe la configuración

Una vez que haya realizado los pasos necesarios, puede crear un nuevo archivo PHP de prueba en su directorio web.

sudo nano /var/www/html/domainname/public/info.php

Pegue el siguiente código dentro del archivo.

<?php phpinfo();

Guarde el archivo.

Ahora continúe y verifique su nombre de dominio con el info.php en la URL (domainname.com/info.php ).

Verá que su dominio fue redirigido a HTTPS y verá los detalles de la información de PHP.

Potencie su carrera de administración de Linux con un curso de capacitación completo y obtenga el trabajo de sus sueños.

Conclusión

Ahora ha aprendido a instalar la pila LEMP en Debian 11 con Let'sEncrypt SSL.

Gracias por tu tiempo. Si tiene algún problema o comentario, deje un comentario a continuación.


Linux
  1. Cómo instalar LEMP Stack (Nginx, MySQL, PHP v7) en CentOS 7

  2. Cómo instalar y configurar PHP y Nginx (LEMP) en Debian 11

  3. Cómo instalar LEMP Stack Nginx, MySQL, PHP en Debian 11

  4. Cómo instalar LEMP Stack Nginx, MySQL, PHP en Ubuntu 22.04

  5. Cómo instalar LEMP Stack en Debian 10 Buster

Cómo instalar Nginx, MySQL y PHP (LEMP) en Ubuntu 20.04

Cómo instalar la pila LEMP en Debian 11

Cómo instalar Nginx, MySQL, PHP (LEMP) en Arch Linux

Cómo instalar Nginx, MySQL y PHP (LEMP) en un servidor Ubuntu 15.04

Cómo instalar WordPress en una pila Nginx LEMP usando Ubuntu 14.04

Cómo instalar la pila Nginx, MySQL, PHP (LEMP) en un servidor en la nube Debian 8.3