Найти тему

Установка Nginx на Ubuntu 22.04

Для установки Nginx имеется инструкция:

https://nginx.org/ru/linux_packages.html

Мы её немного дополним начальной настройкой.

Установка Nginx

В стандартных репозиториях довольно старый пакет Nginx, так что будем устанавливать последний. Работаем под рутом.

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

sudo apt install curl gnupg2 ca-certificates lsb-release ubuntu-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 --no-keyring --import --import-options import-show /usr/share/keyrings/nginx-archive-keyring.gpg

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

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

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

Подключаем репозиторий. Для подключения 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

Для подключения apt-репозитория для основной версии 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

Закрепим пакеты, чтобы они не тянулись из репозиториев Ubuntu, а брались только с репозитория nginx:

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

Настройка Nginx

Включаем автостарт nginx:

systemctl enable --now nginx

Проверим статус:

systemctl status nginx
-3

Nginx запущен: "Active: active (running)".

Проверим, какие порты прослушивает nginx:

netstat -plntu | grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 102777/nginx: master

Видим, что Nginx слушает 80 порт на всех сетевых интерфейсах.

Создаём директорию для SSL сертификатов и ключей DH:

mkdir /etc/nginx/ssl

Создаём файл с параметрами DHE-шифрования:

openssl dhparam -out /etc/nginx/ssl/dhparams.pem 2048

Создадим директории для конфигурационных файлов сайтов.

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

Модифицируем настройки /etc/nginx/nginx.conf (для Nginx версии 1.26.x, для пользователя nginx):

wget https://gist.githubusercontent.com/CHERTS/4b1ad58e06404267591636a9f2b08114/raw/nginx.conf -O /etc/nginx/nginx.conf

Проверяем конфигурацию Nginx:

nginx -t
-4

Ошибок нет, перезагружаем конфигурацию Nginx:

nginx -s reload

Меняем системные лимиты на количество открытых файлов. В nginx.conf параметр worker_rlimit_nofile = 10000, нужно настроить в системе то же самое. В Ubuntu используется система инициализации systemd и поэтому лимиты на максимальное количество открытых файлов нужно настроить для systemd:

mkdir -p /lib/systemd/system/nginx.service.d
echo "[Service]" >/lib/systemd/system/nginx.service.d/limit.conf
echo "LimitNOFILE=10000" >>/lib/systemd/system/nginx.service.d/limit.conf
systemctl daemon-reload
systemctl restart nginx

Проверим лимиты:

cat /proc/$(cat /var/run/nginx.pid)/limits
-5

Смотрим Max open files. Видим наше значение 10000.

При начальной установке имеется один сайт по умолчанию "Welcome to nginx!". Его конфигурация находится в файле /etc/nginx/conf.d/default.conf:

cat /etc/nginx/conf.d/default.conf | egrep -Ev "^\s*(;|#|$)"
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}

Начальная настройка завершена.

Источник:

Установка Nginx на Ubuntu 22.04 | internet-lab.ru

💰 Поддержать проект

Если вам понравилась статья, то ставьте 👍🏻 каналу. Пишите комментарии, задавайте вопросы, подписывайтесь.