Для установки 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>
Если отпечаток отличается от вышеуказанного, удалите файл ключа.
Подключаем репозиторий. Для подключения 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
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
Ошибок нет, перезагружаем конфигурацию 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
Смотрим 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;
}
}
Начальная настройка завершена.
Источник:
Если вам понравилась статья, то ставьте 👍🏻 каналу. Пишите комментарии, задавайте вопросы, подписывайтесь.