GNU/Linux >> Tutoriales Linux >  >> AlmaLinux

Cómo instalar Nginx en AlmaLinux 8

NGINX es un software de servidor HTTP gratuito y de código abierto. Además de sus capacidades de servidor HTTP, NGINX también puede funcionar como servidor proxy para correo electrónico (IMAP, POP3 y SMTP) y como proxy inverso y equilibrador de carga para servidores HTTP, TCP y UDP. El objetivo detrás de NGINX era crear el servidor web más rápido y mantener esa excelencia sigue siendo un objetivo central del proyecto Nginx. NGINX constantemente supera a Apache y otros servidores en los puntos de referencia que miden el rendimiento del servidor web y ahora es el servidor web más popular según W3Tech.

En el tutorial, aprenderá cómo instalar Nginx en AlmaLinux 8 con un certificado TLS/SSL gratuito de Let's Encrypt.

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

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

Para configurar una cuenta Sudo existente o nueva, 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

Método 1. Instalar Nginx desde AlmaLinux AppStream

El primer método es instalar Nginx desde la transmisión de la aplicación AlmaLinux. Esta versión es más antigua pero estable y segura. Si necesita ejecutar un servidor web principal o un proxy inverso, a menudo se recomienda instalar el repositorio de App Stream.

Para instalar Nginx, ejecute el siguiente comando.

sudo dnf install nginx

Ejemplo de salida:

Escribe “Y” , luego presione la “TECLA ENTER” para continuar con la instalación.

A continuación, verifique la compilación de la versión y si la instalación fue exitosa.

sudo nginx -v

Ejemplo de salida:

nginx version: nginx/1.14.1

Tenga en cuenta que sus resultados serán diferentes según el módulo que habilite.

Antes de continuar, debe iniciar el servicio Nginx.

sudo systemctl start nginx

A continuación, verifique el estado para asegurarse de que no haya errores.

systemctl status nginx

Ejemplo de salida si todo funciona correctamente:

Método 2. Instalar Nginx desde EPEL

La segunda opción es instalar Nginx desde el repositorio de EPEL. Esto le brindará una versión mucho más actualizada de Nginx que todavía se considera estable que instalar las últimas versiones obsoletas de Nginx. El proceso es relativamente fácil.

Primero, instale el repositorio EPEL:

sudo dnf install epel-release

Ejemplo de salida:

Escriba “Y”, luego presione la “TECLA ENTER” para continuar con la instalación.

Ahora, con la EPEL instalado, debe restablecer los módulos Nginx.

sudo dnf module reset nginx

A continuación, enumere los módulos disponibles disponibles con dnf de todos los repositorios conocidos.

sudo dnf module list nginx

Ejemplo de salida:

Como se indicó anteriormente, puede cambiar a una versión superior de la línea estable o principal. Tenga en cuenta que la versión estable siempre está en el número de compilación, y la línea principal es, naturalmente, la línea principal.

Para habilitar uno de los nuevos módulos de EPEL, utilice lo siguiente en su terminal.

Habilitar última estable:

sudo dnf module enable nginx:1.20

Nota para Nginx EPEL estable: Esto puede cambiar en el futuro. Asegúrese de enumerar los módulos y no solo copiar y pegar.

Habilitar última línea principal:

sudo dnf module enable nginx:mainline

Ahora, instala Nginx:

sudo dnf install nginx

Ejemplo de salida:

Escribe “Y,” luego presione la “TECLA ENTER” para continuar con la instalación.

A continuación, verifique la compilación de la versión y si la instalación fue exitosa.

sudo nginx -v

Salida de ejemplo (línea principal):

nginx version: nginx/1.19.10

Tenga en cuenta que sus resultados serán diferentes según el módulo que habilite.

Antes de continuar, debe iniciar el servicio Nginx.

sudo systemctl enable nginx --now

A continuación, verifique el estado para asegurarse de que no haya errores.

systemctl status nginx

Ejemplo de salida si todo funciona correctamente:

Configurar reglas de cortafuegos

No agrega automáticamente reglas de firewall a los puertos estándar 80 o 443 al instalar Nginx. Antes de continuar, debe establecer las siguientes reglas, esto dependerá de los puertos que usará, pero se enumeran todas las opciones.

Abrir el puerto 80 o HTTP:

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

Abrir el puerto 443 o HTTPS:

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

Vuelva a cargar el cortafuegos para que los cambios surtan efecto

sudo firewall-cmd --reload

Configurar servidor Nginx

Deberá tener la dirección IP del servidor lista para configurar. La forma más fácil de hacerlo es con lo siguiente.

Buscar dirección IP del servidor

Deberá tener la dirección IP del servidor preparada para la configuración. La forma más fácil de hacerlo es con lo siguiente.

curl -4 icanhazip.com

Ejemplo de salida:

XXX.XXX.XXX.XXX IP address

Si los comandos no funcionan, lo más probable es que no tenga instalado el paquete curl. Ejecute el siguiente comando:

sudo dnf install curl -y

Una vez que tenga la dirección IP de su servidor, abra su navegador de Internet favorito y verifique que la página de inicio predeterminada funcione.

http://your_server_ip

Debería obtener la siguiente página en su navegador de Internet. Si no obtiene esta página, sino una página de error de Nginx, está bien, ya que la versión de EPEL puede diferir. Está probando para asegurarse de que puede acceder al servidor Nginx.

Configurar el directorio de origen del sitio

En el tutorial, configurará un dominio llamado example.com , pero debe reemplazar esto con su nombre de dominio . El tutorial creará los directorios web y configurará los archivos del sitio en el directorio principal /var/www/ .

Primero, cree el directorio, para example.com , de la siguiente manera, usando “-p” marca para crear los directorios principales necesarios:

sudo mkdir -p /var/www/your_domain/html

En segundo lugar, deberá asignar el propietario del directorio.

sudo chown -R $USER:$USER /var/www/your_domain/html

En tercer lugar, asigne los permisos del directorio, de modo que el propietario lea, escriba y ejecute los archivos mientras otorga solo permisos de lectura y ejecución a grupos y otros. Puede ingresar el siguiente comando:

sudo chmod -R 755 /var/www/your_domain

Alternativamente, puede usar el /usr/share/nginx/html directorio en su lugar, pero el /var/www Se recomienda el método de directorio para nuevos usuarios.

Configurar página HTML de prueba

Cuarto, cree una página de prueba que usará para confirmar que su servidor Nginx está operativo.

nano /var/www/your_domain/html/index.html

Dentro del editor nano y el nuevo archivo que ha creado. Ingrese lo siguiente.

<html>
 <head>
  <title>Welcome to your_domain!</title>
 </head>
 <body>
   <h1>Success!  The your_domain server block is working!</h1>
 </body>
</html>

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

Crear bloque de servidor Nginx

De forma predeterminada, el bloque del servidor Nginx, similar a los hosts virtuales de Apache, se trata en /etc/nginx/conf.d directorio. Sin embargo, la instalación de Nginx varía según las diferentes versiones y distribuciones utilizando el conf.d o sitios-disponibles/sitios-habilitados por defecto. Para el tutorial, los directorios del sitio se utilizarán para mantener un estándar.

Primero, haga que los directorios necesarios para sites-disponible y habilitado para sitios . Los usuarios de Nginx también estarán familiarizados con esta configuración.

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

A continuación, abra su archivo nginx.conf y elimine o comente el “include /etc/nginx/default.d/*.conf;” y directamente debajo agregue include “/etc/nginx/sites-enabled/*.conf;” .

Solo ejemplo:

# For more information on configuration, see:
#   * Official English Documentation: http://nginx.org/en/docs/
#   * Official Russian Documentation: http://nginx.org/ru/docs/

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 4096;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

###EDIT HERE###
#  include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*.conf;
}

Como arriba, un “#” se agregó un comentario a include conf.d línea e incluir sitios habilitados fue añadido.

Guarda el archivo (CTRL+O) y salir (CTRL+X) .

A continuación, cree su archivo de configuración de bloque de servidor. El nombre your_domain.conf se usará para el tutorial, pero puede llamarse como prefiera.

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

Puede pegar el siguiente código de ejemplo en el bloque. Este es solo un ejemplo de solo HTTP para pruebas básicas.

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

 root /var/www/your_domain/html;

  index index.html index.htm;
  server_name your_domain www.your_domain;

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

El ejemplo muestra que su servidor está escuchando dos nombres de servidor, “su_dominio” en el puerto 80.

Deberá cambiar el directorio raíz al nombre/ubicación del directorio raíz que creó.

Bloqueo de servidor Nginx habilitado

Debe vincular los archivos de configuración de los sitios disponibles a los sitios habilitados en su directorio Nginx para habilitar los bloques del servidor Nginx. Esto se puede hacer con el comando ln -s de la siguiente manera.

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

Configuración final y ejecución de prueba

En la etapa final, deberá abrir su nginx.conf predeterminado. archivo.

sudo nano /etc/nginx/nginx.conf

Y descomente la siguiente línea.

server_names_hash_bucket_size 64;

El tamaño del depósito hash del nombre del servidor se cambia, ya que a veces surgen problemas al agregar servidores adicionales.

A continuación, pruebe su Nginx para asegurarse de que funciona antes de reiniciar correctamente.

sudo nginx -t

El resultado debería ser si no hay errores en la sintaxis:

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

Si tiene el siguiente resultado correcto, reinicie el servidor Nginx para que se realicen los cambios.

sudo systemctl restart nginx

Ahora abra su navegador de Internet y escriba el nombre de dominio del servidor. Deberías ver que tu bloque de servidor está activo.

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.

Gestión del servicio Nginx

Ahora que tiene Nginx ejecutándose correctamente en su servidor, algunas notas clave de administración son las siguientes.

Para detener el servidor web Nginx:

sudo systemctl stop nginx

Para iniciar el servidor web Nginx:

sudo systemctl start nginx

Para reiniciar el servidor web Nginx:

sudo systemctl restart nginx

Para recargar el servidor web Nginx (Para cambios menores que no requieren reiniciar) :

sudo systemctl reload nginx

Para deshabilitar Nginx en el arranque del servidor:

sudo systemctl disable nginx

Para iniciar Nginx en el arranque del servidor (Habilitado automáticamente en la instalación) :

sudo systemctl enable nginx

Cómo acceder a los registros del servidor Nginx

Directorio de registros de Nginx

De forma predeterminada, todos los registros de acceso/error de NGINX, a menos que los haya cambiado, se encuentran en el directorio de registro, que puede ver el siguiente comando.

Primero, navegue hasta el directorio de registros y enumere los archivos:

cd /var/log/nginx && ls -l

Debería encontrar los siguientes archivos de acceso y error:

Registro de acceso:

/var/log/nginx/access.log

Registro de errores:

/var/log/nginx/error.log

Para ver registros en tiempo real en su terminal usando el comando sudo tail -f /ubicación/de/ruta de registro.

Ejemplo:

sudo tail -f /var/log/nginx/access.log

Otra opción es imprimir la última X cantidad de líneas. Por ejemplo, X se reemplaza por 30 para imprimir 30 líneas agregando el indicador -n 30 .

sudo tail -f /var/log/nginx/access.log -n 30

Estos son solo algunos ejemplos de registros de lectura, y grep también puede ser útil.

Cómo configurar la rotación de registros de Nginx

Nginx instala automáticamente la rotación de registros y la configura de forma predeterminada, que es rotar diariamente. Puede cambiar esta configuración accediendo al archivo como se muestra a continuación.

sudo nano /etc/nginx/logrotate.d/nginx

A continuación, verá la misma estructura de archivos, si no similar. Puede modificar los contenidos aquí. En su mayoría, puede cambiar la cantidad de registros que desea mantener o pasar de diario a semanal. Esto debe dejarse en el valor predeterminado a menos que tenga necesidades específicas de requisitos de registro para software como el monitoreo fail2ban o similar.

/var/log/nginx/*.log {
  daily
  missingok
  rotate 14
  compress
  delaycompress
  notifempty
  create 0640 www-data adm
  sharedscripts
  prerotate
  if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
  run-parts /etc/logrotate.d/httpd-prerotate; \
  fi \
  endscript
  postrotate
  invoke-rc.d nginx rotate >/dev/null 2>&1
  endscript
}

La configuración principal que probablemente querrá cambiar es la siguiente:

  • Diario – Esto se puede cambiar a Semanal, Mensual. Esto debe mantenerse a diario, o de lo contrario será difícil revisar el archivo de registro.
  • Rotar 14 – Esta es la cantidad de registros que debe mantener y eliminar, por lo que, como máximo, solo hay 14 registros, si solo desea conservar 7 días de registros, cambie esto a 7.

Se recomienda no tocar ninguna otra configuración a menos que sepa lo que está haciendo.

Cómo actualizar Nginx

Nginx se actualizará de forma predeterminada cuando una nueva versión llegue a los repositorios. Antes de actualizar, siempre se recomienda hacer una copia de seguridad de su directorio Nginx o, al menos, del nginx.conf expediente. Puede hacerlo con el siguiente comando.

Copia de seguridad de nginx.conf (muy recomendable):

sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx-backup.conf

Haz una copia de seguridad de toda tu carpeta Nginx si lo prefieres:

sudo cp /etc/nginx/ /etc/nginx-bkup

A continuación, ejecute el comando de actualización estándar.

sudo dnf upgrade --refresh

Si hay una actualización disponible, ejecútela.

Es posible que se le solicite esto durante una actualización o instalación, pero hacerlo manualmente de antemano es bastante esencial. Para configuraciones grandes de Nginx de varios sitios, sería aún más beneficioso realizar una copia de seguridad en algo como Github o Gitlab.

Cómo quitar (desinstalar) Nginx

Para eliminar Nginx si ya no lo usa, puede hacerlo con el siguiente comando:

sudo dnf autoremove nginx

Este comando también eliminará las dependencias no utilizadas que venían con la instalación.

Recuerde, si instala Nginx usando EPEL y desea restablecerlo para volver a instalar la versión original, use el siguiente comando como se indicó anteriormente.

sudo dnf modules reset nginx

AlmaLinux
  1. Cómo instalar Nginx en Ubuntu 16.04

  2. Cómo instalar Nginx en CentOS 7

  3. Cómo instalar Nginx en Debian 9

  4. Cómo instalar MongoDB en AlmaLinux 8

  5. Cómo instalar Nginx en Debian 11

Cómo instalar Elasticsearch en AlmaLinux 8

Cómo instalar Ntopng en AlmaLinux 8

Cómo instalar Laravel en AlmaLinux 8

Cómo instalar Prometheus en AlmaLinux 8

Cómo instalar LEMP Stack en AlmaLinux 8

Cómo instalar Nginx en AlmaLinux 8