Cómo instalar la última versión de Nginx en Debian

Para aquellos que usen Debian 11, habrán notado que instalar Nginx directamente desde el repositorio de Debian no instala la última versión, está bastante atrasado.

Para la mayoría, será preferible usar el Nginx predeterminado que viene incluido en Debian, pero para aquellos que quieran usar versiones más nuevas para las últimas características, el siguiente tutorial cubrirá los pasos necesarios para hacerlo.

Prerequisitos

  • SO: Debian 11 Bullseye
  • Cuenta de usuario: con acceso sudo o root.

Actualizar el Sistema Operativo

Nos aseguramos de que todos los paquetes se encuentren actualizados:

apt update && apt upgrade -y

Eliminar la instalación anterior de Nginx

En primer lugar, es necesario eliminar cualquier instalación anterior de Nginx que esté activa antes de instalar una nueva versión.

Detenemos el servicio de la siguiente manera:

systemctl stop nginx

Hacemos una copia del archivo nginx.conf como respaldo en caso de que accidentalmente sobrescribamos o eliminemos el existente:

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

A continuación, eliminamos Nginx utilizando el siguiente comando:

apt remove nginx

Instalar los paquetes necesarios

Se necesitarán algunos paquetes adicionales para instalar las últimas versiones de Nginx (mainline, lo más nuevo, o estable) del repositorio oficial de Nginx. Con el siguiente comando los instalaremos o verificaremos si están instalados en nuestro sistema Debian Bullseye:

apt install curl gnupg2 ca-certificates lsb-release debian-archive-keyring

Importar los repositorios de Ngnix

A continuación, serán necesarios algunos pasos para importar el repositorio.

Importar la clave GPG

Usando el comando curl, importamos la clave GPG para que el gestor de paquetes de APT pueda verificar la autenticidad de los paquetes de Nginx:

curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

Verificar la clave GPG

A continuación, se recomienda probar y verificar que el archivo de descarga contiene la clave adecuada. Para ello, utilizamos el siguiente comando:

gpg --dry-run --quiet --import --import-options import-show /usr/share/keyrings/nginx-archive-keyring.gpg

Algo así deberíamos ver:

pub rsa2048 2011-08-19 [SC] [expires: 2024-06-14]
573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62
uid nginx signing key <signing-key@nginx.com>

Importar el repositorio Nginx Mainline

Para configurar e importar el repositorio Nginx Mainline, ejecutamos el siguiente comando:

echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
http://nginx.org/packages/mainline/debian `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list

Importar el repositorio Nginx Stable

En caso de preferir Nginx Stable, usar el siguiente comando:

echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
http://nginx.org/packages/debian `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list

Fijar la versión del repositorio de Nginx a instalar

Next, use the following pinning command to make Debian use Nginx’s repository over the default Debian Nginx repository:

A continuación, utilizamos el siguiente comando para que el sistema utilice el repositorio de Nginx sobre el repositorio de Nginx predeterminado de Debian:

echo -e "Package: *\nPin: origin nginx.org\nPin: release o=nginx\nPin-Priority: 900\n" \
| tee /etc/apt/preferences.d/99nginx

Salida ejemplo:

se o=nginx\nPin-Priority: 900\n" \
| tee /etc/apt/preferences.d/99nginx
Package: *
Pin: origin nginx.org
Pin: release o=nginx
Pin-Priority: 900

Instalar Nginx Mainline o Stable

Ahora que hemos configurado el repositorio, antes de ejecutar el comando de instalación de Nginx, necesitamos actualizar la lista de repositorios para reflejar los nuevos cambios:

apt update

A continuación, ejecutamos el comando de instalación de Nginx, esto instalará la última versión de Nginx del repositorio que hayamos importado:

apt install nginx -y

Tener en cuenta que se nos pedirá que mantengamos o reemplacemos el archivo de configuración /etc/nginx/nginx.conf existente durante la instalación. Se recomienda mantener el archivo de configuración actual pulsando (n). Se hará una copia independientemente de la versión del mantenedor, y también podremos comprobarlo en el futuro.

Verificamos si Nginx fue instalado con éxito y a la última versión ejecutando:

nginx -v

Ejemplo de salida (Nginx Mainline)

nginx version: nginx/1.21.1

De forma predeterminada, Nginx debería estar activado si no lo está. Usar:

systemctl start nginx

Para habilitar Nginx para que se inicie en el arranque, utilizamos:

systemctl enable nginx

Ejemplo de salida en caso de éxito:

Synchronizing state of nginx.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable nginx

Verificamos el estado de Nginx:

systemctl status nginx

Actualización de Nginx

Para futuras actualizaciones, todo lo que necesitamos hacer es ejecutar el gestor de paquetes de APT como comprobamos nuestro sistema para las actualizaciones como de costumbre.