¿Cómo instalar e implementar LEMP en Linux?

LEMP es un paquete o pila de software que se utiliza para ejecutar sitios web dinámicos basados ​​en PHP. La pila LEMP incluye un sistema operativo Linux, un servidor web Nginx (pronunciado como Engine X), una base de datos M ySQL y P HP. Nginx es un servidor web que maneja requests web y sirve contenido web. La base de datos MySQL se usa para almacenar datos y PHP se usa para procesar contenido dinámico en el propio servidor antes de entregar el contenido web al usuario. Es un lenguaje del lado del servidor. 

En este artículo, veremos cómo se puede configurar la pila LEMP en un sistema basado en Ubuntu/Debian. Necesitará un usuario que tenga permisos sudo para seguir este artículo.

Instalación de LEMP en Linux

Primero, actualizaremos y actualizaremos nuestros paquetes. Ejecute el siguiente comando

sudo apt update
sudo apt upgrade -y

Ahora, comencemos instalando nuestro servidor web.

Paso 1: Instalar Nginx

Para instalar Nginx, ejecute el siguiente comando

sudo apt install nginx -y

Esto instalará Nginx. Para verificar si se está ejecutando, ejecute el siguiente comando

sudo systemctl status nginx

 

Nginx usa el puerto 80 para escuchar las requests web entrantes, por lo que si tiene un firewall, debe abrir el puerto 80. Algunos proveedores de servicios en la nube tienen un firewall externo, como Microsoft Azure, por lo que, en ese caso, debe administrar la configuración del firewall. desde allí. Hemos usado ufw para administrar el firewall, así que configuremos la regla de firewall usando eso. Ejecute el siguiente comando

sudo ufw allow 80

Si desea cifrar su tráfico con un certificado SSL, también deberá abrir el puerto 443, lo que puede hacer de manera similar con el siguiente comando

sudo ufw allow 443

Ahora, para verificar si Nginx está manejando requests web, abra cualquier navegador web e ingrese la dirección IP de su servidor. Si está configurando una pila LEMP en una máquina local, escriba localhost en su lugar. Debería ver la siguiente página de inicio predeterminada de Nginx.

 

Ahora, estamos seguros de que nuestro servidor web Nginx funciona correctamente. Esta página web predeterminada se almacena en la ubicación /var/www/html y es este directorio el que Nginx usa de forma predeterminada para servir sitios web. Puedes ver el contenido de este directorio

ese directorio predeterminado de Nginx

Este archivo index.nginx-debian.html es el archivo predeterminado que se envía cada vez que hacemos una solicitud web a nuestro servidor web Nginx. Puede cambiar esto más tarde, o incluso cambiar el directorio predeterminado, que veremos cómo hacerlo más adelante en este artículo.

Paso 2: Instalación de la base de datos MySQL

MySQL es un sistema de administración de bases de datos relacionales de código abierto y se utiliza para administrar bases de datos para diferentes aplicaciones web en la pila LEMP. Para instalarlo, ejecute el siguiente comando

sudo apt install mysql-server -y

Ahora que el servidor MySQL está instalado, por defecto, no es muy seguro. Afortunadamente, hay un script que facilita la seguridad de nuestro servidor MySQL. Ejecute ese script escribiendo

sudo mysql_secure_installation

 

Al principio, le preguntará si desea instalar un COMPONENTE VALIDAR CONTRASEÑA. Este complemento valida las contraseñas de los usuarios con el nivel de seguridad que elijas. Si no se cumple con el nivel de seguridad de la contraseña, se rechazará la contraseña. Es seguro no instalar este complemento de validación, solo use una contraseña segura por su cuenta. 

Después de este paso, se le pedirá que ingrese y confirme una contraseña para el usuario raíz de MySQL. Este es el usuario raíz de la base de datos y no el usuario raíz del sistema. 

A continuación, se le pedirán varias cosas que mejoran la seguridad de nuestro servidor MySQL, simplemente escriba y y presione Intro en cada solicitud y habrá terminado con la instalación de MySQL.

 

Ahora, para iniciar sesión en su servidor MySQL, escriba

sudo mysql

Esto lo iniciará como usuario raíz. Notará que no se le solicitó ninguna contraseña, pero ¿no configuramos una contraseña para los usuarios raíz en el paso anterior? La cuestión es que hay varios métodos de autenticación en MySQL para autenticar a un usuario contra el servidor. Nuestro usuario raíz utiliza el complemento auth_socket para la autenticación en lugar de una contraseña. Esto permite a los usuarios con privilegios sudo iniciar sesión en el servidor MySQL utilizando su contraseña del sistema. Esto asegura que los usuarios del sistema que tienen derechos de sudo son los únicos que pueden acceder al servidor MySQL. 

 

Puede ver en la captura de pantalla anterior que el usuario root usa el complemento auth_socket para la autenticación. Puede cambiarlo a otros complementos si lo desea. 

Paso 3: Instalación de PHP

Nginx entrega el contenido web al cliente y MySQL almacena sus datos. Ahora necesitamos PHP para generar páginas web dinámicas. Se utiliza para procesar contenido en el servidor antes de que se entregue. Para instalarlo, ejecute el siguiente comando

sudo apt install php-fpm php-mysql

PHP-fpm, que utiliza nginx para procesar archivos PHP, y el módulo PHP-MySQL permite que PHP se conecte con la base de datos MySQL. Todos los demás paquetes PHP que se requieren para procesar archivos PHP se instalarán adicionalmente junto con estos dos módulos como dependencias.

 

 Php está instalado, ahora necesitamos configurar nuestro Nginx para que funcione con PHP.

Paso 4: Configuración de Nginx

Para configurar Nginx, necesitamos editar su archivo de configuración que se encuentra en /etc/nginx/sites-available/ ubicación. 

 

Como puede ver, hay un archivo llamado default , necesitamos editar este archivo. Ahora, en lugar de descomentar las líneas requeridas una por una y editarlas, sería fácil si simplemente elimina este archivo predeterminado, crea uno nuevo y copia y pega las líneas de configuración requeridas. Para eliminar y crear un nuevo archivo, ejecute los siguientes comandos

sudo rm /etc/nginx/sites-available/default
sudo touch /etc/nginx/sites-available/default

Abra este archivo recién creado con un editor de texto nano. Escribir

sudo nano /etc/nginx/sites-available/default

Copie el siguiente contenido de texto y péguelo en el archivo de configuración predeterminado presionando Ctrl+Shift+V

server {
    listen 80;
    server_name your_domain www.your_domain;
    root /var/www/html;

    index index.html index.php index.htm index.nginx-debian.html;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
     }
}

Entendamos este código de configuración. 

  • listen 80: especifica el puerto que utiliza Nginx para escuchar las requests web entrantes.
  • server_name: define el nombre del bloque del servidor. En este momento, hay un bloque de servidor, pero se pueden crear varios bloques de servidor para alojar varias aplicaciones web. En este, hemos especificado el nombre de dominio del sitio web para el que deseamos aplicar esta configuración. Por lo tanto, cualquier solicitud web realizada desde este nombre de dominio se atenderá en función de esta configuración de bloque de servidor. Si no usa un nombre de dominio, también puede especificar la dirección IP, o si está configurando la pila LEMP en su computadora personal, simplemente escriba un _ (guión bajo) y déjelo así.
  • raíz: esto define el directorio raíz desde donde Nginx servirá los archivos web. Es este directorio donde debe almacenar los archivos fuente de su aplicación web.
  • A continuación, hay una array de palabras de índice . Esto especifica la prioridad de los nombres de archivo que Nginx mostrará de forma predeterminada. La palabra más a la izquierda tiene más significado y tendrá prioridad sobre su vecina derecha. Por lo tanto, si el directorio raíz tiene un archivo index.html, se mostrará de forma predeterminada, y si también tiene un archivo index.php, entonces no se utilizará. Si solo hay un archivo index.php, se mostrará de forma predeterminada. Por la palabra «predeterminado», me refiero a la página que se muestra cada vez que un usuario ingresa el nombre de dominio o la dirección IP del sitio web en el navegador web.
  • ubicación /: este bloque de código verifica la URL y busca los archivos que el usuario ha solicitado. Si un usuario solicita un archivo que Nginx no puede encontrar, dará un error 404.
  • ubicación ~ \.php: este bloque incluye el archivo de configuración fastcgi fastcgi-php.conf y especifica el socket php-fpm que se utiliza para procesar archivos PHP.

Ahora presione Ctrl+X , luego Y y luego Enter para guardar y salir. Esto guardará los cambios que ha realizado en el archivo. Ahora, comprobaremos si el archivo de configuración tiene la sintaxis correcta. Para hacer eso, ejecute el siguiente comando

sudo nginx -t

Debería ver el siguiente resultado.

 

Ahora, si cometió algún error en el archivo de configuración y necesita volver a verificar el archivo para detectar esos errores. Después de corregir los errores y volver a verificar el archivo de configuración con el comando anterior, debemos volver a cargar nuestro servidor web Nginx para aplicar estos cambios en el archivo de configuración. Ejecute el siguiente comando para hacerlo.

sudo systemctl reload nginx

Ahora, con todo listo, intentemos ejecutar un archivo PHP en nuestra pila LEMP para ver si funciona.

Paso 5: Probar un archivo PHP

Cree un pequeño script PHP en el directorio raíz de Nginx y ábralo con el editor de texto nano. Ejecute los siguientes comandos para hacerlo.

sudo touch /var/www/html/test.php
sudo nano /var/www/html/test.php

Agregue los siguientes contenidos a este archivo PHP.

<?php
phpinfo();
?>

Este script PHP tiene una función phpinfo() que muestra información sobre el PHP instalado actualmente. Ahora abra su navegador web y escriba 

https://ip_address_or_domain_name/test.php

Deberías ser recibido por algo como 

 

Esto muestra que nuestra pila LEMP puede procesar archivos PHP. Elimine este archivo test.php, porque muestra información confidencial sobre nuestro entorno PHP y no queremos que nadie sepa nada de la información enumerada. Elimínelo ejecutando el siguiente comando.

sudo rm /var/www/html/test.php

Una vez hecho esto, hemos configurado con éxito la pila LEMP en nuestra máquina Linux.

Publicación traducida automáticamente

Artículo escrito por jivendrasah y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *