Установка и настройка Nginx на Ubuntu

Подключившись к серверу по SSH, установите nginx, выполнив команду:

sudo apt-get install nginx

Во время установки автоматически создается systemd сервис для управления состоянием nginx командами sudo systemctl start/stop/restart/status nginx и его запуска при старте системы.

Запустите сервис nginx следующей командой:

sudo systemctl start nginx

Теперь если зайти в браузере по адресу вашего сервера, то вы должны увидеть приветственное сообщение от nginx.

Подготовьте папку /var/www, в которой будут располагаться ваши приложения. Перед выполнением инструкций замените ‘DEPLOYER_USER’ на имя пользователя, под которым производится подключение к серверу.

После этого отключитесь от SSH и подключитесь снова, чтобы изменения вступили в силу.

Активируйте и настройте все основные функции nginx, необходимые для работы веб-приложения. Доработайте файл /etc/nginx/nginx.conf до следующего содержания:

Проверьте отредактированные файлы на предмет ошибок:

sudo nginx -t

В случае успеха вы должны увидеть сообщения:

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

Перезапустите nginx командой:

sudo systemctl restart nginx

Если Nginx при множестве параллельных подключений будет выдавать ошибку “11: Resource temporarily unavailable”, то действуйте по инструкции ниже.

Выполните команду, чтобы проверить текущие настройки:

sysctl net.core

Среди множества строк вы должны увидеть следующие:

net.core.somaxconn = 128
net.core.netdev_max_backlog = 200

Данный вывод означает, что максимальное возможное количество параллельных подключений, это 128, а еще 200 будут находиться в ожидании. Если Nginx попытается перенаправить в Rails больше чем 128 + 200 = 328 параллельных запросов, то часть из них не будет обработана.

Откройте файл /etc/sysctl.conf и вставьте в конец следующие строки:

net.core.somaxconn = 1280
net.core.netdev_max_backlog = 2000

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

--

--

Software Engineer

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store