Ответ 1
-
Типичная конфигурация включает в себя два серверных процесса (которые могут запускаться вместе на одном и том же самом аппаратном или виртуальном сервере), чтобы прокси-сервер впереди мог буферизовать медленных клиентов. Например: медленный клиент подключится к nginx с запросом. Nginx передаст запрос на Gunicorn, и Гуникорн ответит. Nginx затем немедленно уничтожит ответ Gunicorn, сразу же освободив ресурсы Gunicorn. В этот момент медленный клиент может занять столько времени, сколько хочет, чтобы потреблять ответ от Nginx, не зациклив на ресурсах сервера. Альтернативой модели с двумя серверами является использование асинхронных рабочих с Gunicorn и установка самого Gunicorn спереди или использование комбинации async-sync, например Waitress. Тем не менее, Nginx впереди обладает дополнительным преимуществом удвоения как готового к использованию сервера статики.
Обратите внимание, что "медленные клиенты" могут описывать: мобильные телефоны, которые теряют свое соединение и оставляют сокет TCP висящим до таймаута в середине запроса; мобильные телефоны, которые просто медленны; ненадежные связи всех типов; враждебные клиенты отказа в обслуживании, которые намеренно пытаются использовать серверные ресурсы; иногда любое старое соединение, которое по какой-либо причине имеет икоту или неисправность. Таким образом, это проблема, которая затронет почти любой сайт.
-
Вам не понадобятся сценарии оболочки, но привыкание к Ubuntu займет некоторое время. Существует много возможностей для изучения даже вне сценариев, например, как использовать диспетчер пакетов, как настраивать пакеты после их установки способами, которые не будут смешивать будущие обновления и т.д. И вам определенно нужно научиться использовать SSH; это один из самых фундаментальных инструментов администрирования сервера в мире * nix.
Альтернативой обучению использованию Ubuntu или другой серверной платформы является использование опции "Платформа как услуга", например Heroku, поскольку провайдеры хостинга PaaS действительно позаботятся обо всем этом. Я рекомендую этот подход. Это было сказано, хотя я думаю, что PaaS - хороший вариант для людей, которые хотят сосредоточиться на разработке, а не на сервере, независимо от их уровня мастерства, также верно, что немного опыта работы с серверными платформами Linux идет долгий путь помогая вам понять окружающую среду, в которой работает ваш код. Поэтому, даже если вы пойдете с PaaS, вы по-прежнему сможете немного поработать с Ubuntu (или много).
Еще одно преимущество PaaS состоит в том, что обычно их инфраструктура обрабатывает часть Nginx сделки (буферизация медленных запросов через прокси). Так обстоит дело с Heroku, например. Поэтому вам не придется беспокоиться об этой части инфраструктуры вообще.
-
Эта часть вопроса слишком широка для ответа, но дайте мне знать в комментариях, если вам нужно уточнение.