Установка и настройка Nginx на Ubuntu
How to install and setup Nginx on 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
Необходимые числа должны определяться опытным путем через нагрузочное тестирование, чтобы удовлетворять требованиям к веб-серверу.