Установка последней стабильной версии nginx в Debian | Ubuntu

Частым действием при разработке или внедрению веб-приложений является установка и настройка HTTP-сервера или прокси-сервера, на роль которого отличным образом подойдет наше отечественное решение — nginx (по-русски произносится как энджи́нкс или э́нжин-и́кс).

nginx [engine x] — это HTTP-сервер и обратный прокси-сервер, почтовый прокси-сервер, а также TCP/UDP прокси-сервер общего назначения, изначально написанный Игорем Сысоевым. Уже длительное время он обслуживает серверы многих высоконагруженных российских сайтов, таких как Яндекс, Mail.Ru, ВКонтакте и Рамблер. Согласно статистике Netcraft nginx обслуживал или проксировал 22.50% самых нагруженных сайтов в октябре 2021 года. Вот некоторые примеры успешного внедрения nginx (тексты на английском языке): Dropbox, Netflix, WordPress.com, FastMail.FM.

https://nginx.org/ru/

Безусловно, его установка решается простой командой:

sudo apt install nginx

Но с какой проблемой мы сталкиваемся выбирая этот путь? Прежде, чем рассмотреть эту проблему необходимо ввести команду, которая обновляет источники для получения обновлений и установке нового программного обеспечения в вашей операционной системы:

sudo apt update

Вывод будет примерно следующий:

Hit:1 http://security.debian.org/debian-security buster/updates InRelease
Hit:2 http://deb.debian.org/debian buster InRelease                                                  
Hit:3 http://deb.debian.org/debian buster-updates InRelease                                          
Hit:4 https://packages.beget.com/deb/production generic InRelease                                                                       
Reading package lists... Done
Building dependency tree       
Reading state information... Done
All packages are up to date.

Что нам говорят эти строки? О том, что по указанным адресам наша операционная система будет получать доступные обновления (как правило в виде исправления ошибок) и брать пакеты для установки, если требуется внедрить в ОС новое ПО.

Проблема состоит в том, что в репозитории по умолчанию находятся не всегда последняя стабильная версия софта (программного обеспечения), а намного ниже версией. И когда по условиям, например, технического задания стоит задача установить последнюю стабильную версию, то тут и возникает проблема , которую мы сейчас и порешаем.

Мы будем устанавливать nginx на Linux используя пакеты с официального сайта — nginx.org. И для этого, как вы понимаете, нам необходимо подключить и настроить официальный репозиторий пакетов nginx. После этого можно будет установить и в будущем обновлять nginx из этого репозитория.

Debian

Начнем с того, что установим пакеты, необходимые для подключения apt-репозитория:

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

Теперь нам нужно импортировать официальный ключ, используемый apt для проверки подлинности пакетов. Скачаем этот ключ. Для передачи данных воспользуемся пакетом CURL

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

Убедимся, что ключ был загружен верный:

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

Вывод команды должен содержать полный отпечаток ключа 573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62:

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

Если отпечаток отличается от вышеуказанного, удалите файл ключа.

Для подключения apt-репозитория для стабильной версии nginx, выполните следующую команду:

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

Если требуется использовать пакеты из основной ветки nginx, выполните следующую команду вместо предыдущей:

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

Для использования пакетов из официального репозитория nginx вместо распространяемых в дистрибутиве, настройте закрепление:

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

После этого выполним повторение команды по обновлению источников:

sudo apt update 

Вывод будет содержать добавленный новый источник.

Hit:1 http://security.debian.org/debian-security buster/updates InRelease
Hit:2 http://deb.debian.org/debian buster InRelease                                                  
Hit:3 http://deb.debian.org/debian buster-updates InRelease                                          
Hit:4 https://packages.beget.com/deb/production generic InRelease                                    
Hit:5 http://nginx.org/packages/debian buster InRelease                                       
Reading package lists... Done
Building dependency tree       
Reading state information... Done
All packages are up to date.

Это значит, что все хорошо и мы готовы к установке актуальной версии nginx из официального репозитория продукта:

sudo apt install nginx

Ubuntu

Установите пакеты, необходимые для подключения apt-репозитория:

sudo apt install curl gnupg2 ca-certificates lsb-release ubuntu-archive-keyring

Теперь нужно импортировать официальный ключ, используемый apt для проверки подлинности пакетов. Скачайте ключ:

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

Проверьте, верный ли ключ был загружен:

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

Вывод команды должен содержать полный отпечаток ключа 573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62:

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

Если отпечаток отличается от вышеуказанного, удалите файл ключа.

Для подключения apt-репозитория для стабильной версии nginx, выполните следующую команду:

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

Если предпочтительно использовать пакеты для основной версии nginx, выполните следующую команду вместо предыдущей:

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

Для использования пакетов из нашего репозитория вместо распространяемых в дистрибутиве, настройте закрепление:

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

Чтобы установить nginx, выполните следующие команды:

sudo apt update
sudo apt install nginx

Внимание! Учтите, что получать продукт из официального репозитория надежнее в плане совместимости с дистрибутивом (операционной системы) который вы используете. В противном случае можно столкнуться с проблемами в конфигурацией, что для неопытного пользователя может быть не легкой задачей.