GNU/Linux >> Tutoriales Linux >  >> AlmaLinux

Cómo instalar LEMP Stack (Nginx, MariaDB y PHP) en AlmaLinux 8

LEMP es una colección de software de código abierto que se usa comúnmente en conjunto para servir aplicaciones web. El término LEMP es un acrónimo que representa la configuración de un sistema operativo Linux con un Nginx (pronunciado engine-x , de ahí la E en el acrónimo) servidor web, con datos del sitio almacenados en una base de datos MySQL o MariaDB y contenido dinámico procesado por PHP que se usa popularmente para alojar sitios web extensos debido a su rendimiento y escalabilidad.

En el siguiente tutorial, aprenderá cómo instalar LEMP (Nginx, MariaDB, PHP 8.0) en AlmaLinux 8 .

Requisitos

  • SO recomendado: AlmaLinux 8.
  • Cuenta de usuario: Una cuenta de usuario con privilegios sudo o acceso raíz (comando su) .

Actualización del sistema operativo

Actualiza tu AlmaLinux sistema operativo para asegurarse de que todos los paquetes existentes estén actualizados:

sudo dnf upgrade --refresh -y

El tutorial usará el comando sudo y asumiendo que tiene estado sudo . Para verificar el estado de sudo en su cuenta:

sudo whoami

Ejemplo de salida que muestra el estado de sudo:

[joshua@localhost ~]$ sudo whoami
root

Si no ha configurado una cuenta de usuario sudo y desea hacerlo, visite nuestro tutorial sobre Cómo agregar un usuario a Sudoers en AlmaLinux .

Para usar la cuenta raíz , use el siguiente comando con la contraseña de root para iniciar sesión.

su

Instalar Nginx

Para iniciar la instalación de la pila LEMP, deberá instalar el servidor web Nginx, que se puede hacer con el siguiente comando de terminal:

sudo dnf install nginx

Ejemplo de salida:

Escribe (Y), luego presione (TECLA ENTER) para proceder.

Confirme la instalación comprobando la versión de compilación:

nginx -v

Ejemplo de salida:

nginx version: nginx/1.14.1

Por defecto, al instalar Nginx en AlmaLinux, no está habilitado. Para habilitar en el arranque y comenzar, use lo siguiente:

sudo systemctl enable nginx && sudo systemctl start nginx

Ejemplo de activación exitosa de (enlace simbólico) :

Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service → /usr/lib/systemd/system/nginx.service.

Ahora, verifique el estado de su servicio Nginx con el siguiente comando de terminal:

systemctl status nginx

Ejemplo de salida que dice que todo está bien:

Es una buena idea permitir el tráfico HTTP a través de su cortafuegos con el siguiente comando:

sudo firewall-cmd --zone=public --add-service=http --permanent 

Vuelva a cargar el cortafuegos con el siguiente comando:

sudo firewall-cmd --reload

Ahora, puede confirmar que su servidor web Nginx está operativo ingresando HTTP://server-ip o HTTP://nombre-de-dominio en su navegador de Internet, y debería obtener lo siguiente:

Instalar y configurar MariaDB

Instalación

MariaDB es un reemplazo directo de MySQL y fue desarrollado por ex miembros del equipo de MySQL preocupados de que Oracle pudiera convertir a MySQL en un producto de código cerrado y potencialmente pago.

Ingrese el siguiente comando para instalar MariaDB:

sudo dnf install mariadb-server mariadb

Ejemplo de salida:

Escribe (Y), luego presione (TECLA ENTER) para proceder.

Para confirmar la instalación de MariaDB y verificar qué compilación está instalada, escriba el siguiente comando:

mysql --version

Ejemplo de salida:

mysql  Ver 15.1 Distrib 10.3.28-MariaDB, for Linux (x86_64) using readline 5.1

De forma predeterminada, MariaDB no viene habilitada al igual que Nginx antes. Para iniciar y habilitar MariaDB en el arranque del sistema, utilice el siguiente (systemctl) comando terminal:

sudo systemctl enable mariadb && sudo systemctl start mariadb

Ejemplo de activación exitosa de (enlace simbólico) :

Created symlink /etc/systemd/system/mysql.service → /usr/lib/systemd/system/mariadb.service.
Created symlink /etc/systemd/system/mysqld.service → /usr/lib/systemd/system/mariadb.service.
Created symlink /etc/systemd/system/multi-user.target.wants/mariadb.service → /usr/lib/systemd/system/mariadb.service.

Ahora, asegúrese de que todo esté operativo con el siguiente comando:

systemctl status mariadb

Ejemplo de salida que dice que todo está bien:

Configuración

Ahora que MariaDB está funcionando en su sistema AlmaLinux, debe ejecutar el script de seguridad posterior a la instalación, ya que la configuración predeterminada debe revisarse, ya que a menudo no es segura. Se recomienda encarecidamente que no se salte.

Primero, ejecute el comando de instalación segura de MariaDB de la siguiente manera:

sudo mysql_secure_installation

A continuación, se le pedirá que ingrese su (contraseña raíz de MariaDB). Por ahora, presiona (ENTER) key ya que la contraseña de root aún no está configurada como se muestra a continuación:

A continuación, escriba (Y) y presione enter para configurar el (raíz) contraseña de la siguiente manera:

La próxima serie de preguntas que puede presionar con seguridad (ENTER) , que responderá (Y) a todas las preguntas posteriores que le piden que (elimine usuarios anónimos, deshabilite el inicio de sesión raíz remoto y elimine la base de datos de prueba) . Tenga en cuenta el (Y) está en mayúscula, lo que significa que es la respuesta predeterminada cuando presiona (ENTER) clave.

Ejemplo a continuación:

Descripción general de lo que debería haberse hecho anteriormente:

  • Configuración de la contraseña para root cuentas.
  • Eliminar las cuentas raíz a las que se puede acceder desde fuera del host local.
  • Eliminar cuentas de usuarios anónimos.
  • Eliminar la base de datos de prueba, a la que pueden acceder de forma predeterminada los usuarios anónimos.

Este paso es esencial para la seguridad de la base de datos MariaDB y no debe modificarse ni omitirse a menos que sepa lo que está haciendo.

Ahora, inicie sesión en la terminal de la base de datos MariaDB con el siguiente comando:

sudo mysql -u root -p

Se le pedirá que ingrese la contraseña raíz que configuró en la configuración de la instalación o en el script de seguridad posterior a la instalación. Una vez dentro de la instancia del servicio MySQL, puede ejecutar el siguiente comando como prueba para verlo en funcionamiento.

Escriba el siguiente comando MOSTRAR BASE DE DATOS :

SHOW DATABASES;

Para aquellos nuevos en MySQL y MariaDB, todos los comandos deben terminar con “.

Ejemplo:

Para salir de la terminal de la base de datos MariaDB, escriba (exit;) de la siguiente manera:

exit;

Instalar PHP (PHP-FPM)

Importar repositorio PHP 8.0

La última parte para instalar en su instalación de LEMP es PHP. Deberá instalar (PHP-FPM) que es la abreviatura de (FastCGI Process Manager) . Es muy recomendable la instalación de PHP (Remi) repositorio. Para aquellos que no lo saben, Remi es el mantenedor de las versiones de PHP en la familia Rhel. Para el tutorial, instalaremos el PHP 8.0 más nuevo:

La primera tarea es instalar el (EPEL ), que significa (Extra Packages for Enterprise Linux). Para los usuarios más recientes de Rhel y AlmaLinux, EPEL contiene los paquetes de software más utilizados para Enterprise Linux.

Para instalar EPEL, utilice el siguiente (dnf) comando terminal:

sudo dnf install epel-release

Ejemplo de salida:

Escribe (Y), luego presione (TECLA ENTER) para proceder.

Ahora que ha agregado el repositorio EPEL, habilite (repositorio Remi) con lo siguiente:

sudo dnf install dnf-utils http://rpms.remirepo.net/enterprise/remi-release-8.rpm

Escribe (Y), luego presione (TECLA ENTER) para proceder.

A continuación, utilice el (dnf) comando para actualizar su lista de repositorios:

sudo dnf update

Notará una consulta en su terminal sobre la importación de la (clave GPG) para el repositorio de Remi de la siguiente manera:

Escribe (Y), luego presione (TECLA ENTER) para proceder.

Tenga en cuenta que se le pedirá dos veces más que escriba (Y) dos veces más para importar más claves GPG. Está bien hacerlo.

A continuación, se le pedirá que actualice la versión de EPEL:

Ejemplo:

Escribe (Y), luego presione (TECLA ENTER) para proceder.

Su repositorio EPEL ahora está actualizado y está listo para continuar con la siguiente parte del tutorial.

Habilitar repositorio PHP 8.0 (Remi)

PHP 7.2 es la opción predeterminada de PHP para la instalación estándar en Rhel/Alma Linux con el repositorio de Remi. Un consejo rápido es usar el (list php) comando para ver las opciones disponibles y las predeterminadas. El siguiente comando puede hacer esto:

sudo dnf module list php

Obtendrá el siguiente resultado como se muestra a continuación. Tenga en cuenta la (d) etiqueta para que se instale el PHP predeterminado:

Como puede ver arriba, la etiqueta (d) está al lado de PHP 7.2, que necesitará restablecer y cambiar para proceder a instalar PHP 8.0 en AlmaLinux. Restablecer la lista de PHP es fácil con el siguiente comando:

sudo dnf module list reset php

A continuación, habilite PHP 8.0 con el siguiente comando:

sudo dnf module enable php:remi-8.0 -y

Ejemplo de salida una vez completada:

Tenga en cuenta que puede habilitar PHP-7.4 siguiendo el comando de reinicio del módulo dnf y usando el módulo dnf habilitar el comando php:remi-7.4 en su lugar. Elige la versión que requieres para la aplicación, y esta fue solo un ejemplo de tener la última versión de PHP de cualquier opción de PHP que decidas.

Instalar PHP 8.0

Ahora que agregó el repositorio Remi PHP y habilitó PHP 8.0 para que sea la versión predeterminada en su sistema AlmaLinux, puede instalar PHP 8.0 con el siguiente comando:

sudo dnf install php

Ejemplo de salida:

Escribe (Y), luego presione (TECLA ENTER) para proceder.

Si desea instalar las extensiones más utilizadas para PHP 8.0, utilice el siguiente comando:

sudo dnf install php-cli php-fpm php-curl php-mysqlnd php-gd php-opcache php-zip php-intl php-common php-bcmath php-imap php-imagick php-xmlrpc php-json php-readline php-memcached php-redis php-mbstring php-apcu php-xml

Tenga en cuenta que elimine las opciones que no desee, esto es opcional.

Ejemplo de salida:

Escribe (Y), luego presione (TECLA ENTER) para proceder.

Ahora que ha instalado PHP 8.0 y las extensiones, verifique la versión con el siguiente comando:

php -v

Ejemplo de salida:

PHP 8.0.10 (cli) (built: Aug 24 2021 15:40:40) ( NTS gcc x86_64 )
Copyright (c) The PHP Group
Zend Engine v4.0.10, Copyright (c) Zend Technologies
    with Zend OPcache v8.0.10, Copyright (c), by Zend Technologies

Por último, PHP-FPM como Nginx y MariaDB antes no está habilitado de forma predeterminada, para habilitar PHP-FPM en el arranque del sistema y para iniciarlo, use el siguiente (systemctl) comando:

sudo systemctl enable php-fpm && sudo systemctl start php-fpm

Ejemplo de activación exitosa de (enlace simbólico) :

Created symlink /etc/systemd/system/multi-user.target.wants/php-fpm.service → /usr/lib/systemd/system/php-fpm.service.

Ahora, como antes al verificar el estado de los otros requisitos en su instalación de LEMP, use el siguiente (systemctl) comando de terminal para comprobar el estado y asegurarse de que todo funciona:

systemctl status php-fpm

Si no hay errores, debería obtener el siguiente resultado:

A diferencia de las instalaciones de LEMP en Debian/Ubuntu que usan (www-data) usuario, este no es el caso con las instalaciones de la familia RHEL. De forma predeterminada en AlmaLinux, el servicio PHP-FPM está diseñado para ejecutarse (Apache) usuario, lo cual es incorrecto ya que estamos usando Nginx, y esto debe corregirse.

En primer lugar, abra siguiendo (www.conf) archivo de configuración:

sudo nano /etc/php-fpm.d/www.conf

A continuación, reemplace el (Apache) usuario y grupo con el (Nginx) usuario y grupo:

Para guardar, presione (CTRL+O) luego salga (CTRL+X) .

Ahora también recargará o reiniciará su servicio PHP-FPM:

sudo systemctl restart php-fpm

Crear una página de inicio PHP de prueba

Para probar PHP-FPM con el servidor web Nginx, debe crear un archivo en el directorio webroot.

Para la guía, nombrará el archivo (info.php) de la siguiente manera:

sudo nano /usr/share/nginx/html/info.php

Pegue lo siguiente:(info.php) archivo:

<?php

phpinfo();

?>

Guarda el archivo (CTRL+O), luego salga (CTRL+X) .

Ahora, en la barra de direcciones de su navegador de Internet, ingrese (server-ip-address/info.php) . Si ha instalado Nginx en su computadora local, use el (127.0.0.1/info.php) predeterminado. o (localhost/info.php) .

Debería ver la información de PHP de su servidor:

Esta información muestra que los scripts PHP pueden ejecutarse correctamente con el servidor web Nginx.

Por motivos de seguridad, debe eliminar el archivo. Para hacer esto, use el siguiente comando:

sudo rm -f /var/www/html/info.php

Si prefiere conservar el archivo para fines futuros, agregue lo siguiente a su archivo de bloqueo del servidor Nginx en el servidor {} sección:

    location ^~ /info.php {
     allow <YOUR IP ADDRESS>; 
     deny all;
    }

Esto solo permitirá que la dirección IP especificada acceda al archivo. Se recomienda ocultar la mayor cantidad de información del sistema de posibles piratas informáticos y actores malintencionados.

Crear un bloque de servidor Nginx

Un bloque de servidor Nginx es el equivalente a un host virtual en Apache, que contiene una configuración para su servidor web Nginx que responde a los visitantes públicos. A continuación se muestra un ejemplo completo de cómo lograr esto con PHP-FPM en mente.

Crear directorios de bloques de servidor

El (.conf) los archivos normalmente se encuentran en (sitios disponibles) y (sitios habilitados). Los usuarios que provengan de diferentes distribuciones notarían que esto ya estaría instalado; sin embargo, para AlmaLinux, deberá crearlos.

Cree los dos (sitios) requeridos directorio con el siguiente comando:

sudo mkdir /etc/nginx/sites-available && sudo mkdir /etc/nginx/sites-enabled

Editar el archivo de configuración de Nginx

Después de crear los directorios necesarios, edite el archivo de configuración principal de Nginx (nginx.conf) de la siguiente manera:

sudo nano /etc/nginx/nginx.conf

Luego pegue las siguientes líneas en el (HTTP) sección de la (nginx.conf) archivo de configuración:

include /etc/nginx/sites-enabled/*.conf;
server_names_hash_bucket_size 64;

Ejemplo:

Tenga en cuenta, (server_names_hash_bucket_size) aumenta la memoria asignada para analizar nombres de dominio.

Guarde la configuración con (CLTR+O) y luego (CTRL+X) para salir.

Crear archivo de configuración del bloque del servidor

Ahora cree un archivo de bloque de servidor usando cualquier editor de texto, la guía usará (nano) :

sudo nano /etc/nginx/sites-available/example.com.conf

A continuación, debe configurar el archivo de configuración con un ejemplo de trabajo con PHP-FPM habilitado.

A continuación se proporciona un ejemplo para que copie y pegue. Nota para reemplazar (nombre_del_servidor) con tu nombre de dominio o IP:

server {
  listen 80;
  listen [::]:80;
  server_name example.com www.example.com;
  root /var/www/html/example.com/;
  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-fpm/www.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;

  }

 # 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;
  }
}

Ahora guarde el bloque del servidor con (CTRL+O), luego salga con (CTRL+X) .

Crear página de destino de prueba

Una buena idea es crear un sitio de prueba de muestra. A continuación se muestra una configuración index.html de prueba estándar:

Si aún no ha creado su directorio web permanente o de prueba:

sudo mkdir -p /var/www/htmlexample.com/

Deberá configurar los permisos, y puede configurar como el usuario que actualmente inició sesión con el $USER variables:

sudo chown -R $USER:$USER /var/www/html/example.com/

La última configuración de permiso es permitir que el público lea el directorio web (acceda a su sitio) usando el permiso chmod 755:

sudo chmod -R 755 /var/www

A continuación, cree el index.html archivo:

sudo nano /var/www/html/example.com/index.html

Pegue el contenido a continuación. Como puede ver, es bastante básico ya que solo lo usamos con fines de prueba.

<html>
  <head>
    <title>You have reached Example.com!</title>
  </head>
  <body>
    <h1>Congratulations! The server block is active!</h1>
  </body>
</html>

Guarde la configuración con (CLTR+O) y luego (CTRL+X) para salir.

Habilitar bloque de servidor Nginx

Ahora se encuentra en las etapas finales y ahora es el momento de habilitar el archivo de configuración del bloque del servidor. Para hacerlo, debe crear un enlace simbólico (symlink) para el archivo de configuración del bloque del servidor en (sites-available) directorio al (sites-enabled) directorio usando el siguiente comando:

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

Probar bloque de servidor Nginx

Para terminar, siempre debe hacer una prueba antes de reiniciar o recargar su servicio Nginx, lo cual es fundamental si trabaja en un entorno real. Escriba el siguiente comando para probar el archivo de configuración de bloque de su servidor:

sudo nginx -t

Si no hay errores, obtendrá el siguiente resultado:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

A continuación, abra su navegador de Internet e ingrese la dirección de su dominio (example.com) para probar si su servidor es accesible.

Felicitaciones, ha creado con éxito un bloque de servidor Nginx que es PHP-FPM listo.

Proteja Nginx con el certificado gratuito Let's Encrypt SSL

Idealmente, le gustaría ejecutar su Nginx en HTTPS usando un certificado SSL . La mejor manera de hacerlo es usar Let's Encrypt, una autoridad de certificación gratuita, automatizada y abierta dirigida por el Grupo de Investigación de Seguridad de Internet (ISRG) sin fines de lucro .

Primero, instale el EPEL repositorio y el mod_ssl paquete para paquetes y seguridad mejor actualizados.

sudo dnf install epel-release mod_ssl -y

A continuación, instale el paquete certbot de la siguiente manera:

sudo dnf install python3-certbot-nginx -y

Una vez instalado, ejecute el siguiente comando para iniciar la creación de su certificado:

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d www.example.com

Esta es la configuración ideal que incluye forzar redireccionamientos HTTPS 301, encabezado Strict-Transport-Security y grapado OCSP. Solo asegúrese de ajustar el correo electrónico y el nombre de dominio a sus requisitos.

Ahora su URL será HTTPS://www.example.com en lugar de HTTP://www.example.com .

Tenga en cuenta que si utiliza la antigua URL HTTP , se redirigirá automáticamente a HTTPS .

Opcionalmente, puede configurar un trabajo cron para renovar los certificados automáticamente. Certbot ofrece una secuencia de comandos que hace esto automáticamente, y primero puede probar para asegurarse de que todo funciona realizando una ejecución en seco.

sudo certbot renew --dry-run

Si todo funciona, abra su ventana crontab usando el siguiente comando de terminal.

sudo crontab -e

A continuación, especifique la hora en que debe renovarse automáticamente. Esto debe verificarse diariamente como mínimo, y si es necesario renovar el certificado, el script no actualizará el certificado. Si necesita ayuda para encontrar un buen momento para configurar, use la herramienta gratuita crontab.guru.

00 00 */1 * * /usr/sbin/certbot-auto renew

Guardar (CTRL+O) luego salga (CTRL+X), y el cronjob se habilitará automáticamente.


AlmaLinux
  1. Cómo instalar la pila LEMP en AlmaLinux

  2. Cómo instalar Nginx con PHP y MySQL (LEMP Stack) en CentOS 7

  3. Cómo instalar Nginx con PHP y MariaDB (LEMP Stack) en Fedora 31

  4. Cómo instalar Nginx con PHP y MySQL (LEMP Stack) en CentOS 7.6

  5. Cómo instalar Nginx, MariaDB y PHP (FEMP) Stack en FreeBSD

Cómo instalar phpBB con LEMP en AlmaLinux 8

Cómo instalar LEMP Stack en AlmaLinux 8

Cómo instalar LAMP Stack en AlmaLinux 8

Cómo instalar la pila LEMP en Debian 11

Cómo instalar LEMP Stack en Fedora 35

Cómo instalar LEMP (Nginx, MariaDB, PHP) en Centos 7