Я намерен использовать один VPS для развертывания нескольких приложений CherryPy с низким трафиком в качестве подкаталогов; например: example.com/app1
, example.com/app2
и т.д.
После изучения развертывания WSGI похоже, что предпочтительным методом развертывания приложений является использование сервера WSGI (Gunicorn, uWSGI и т. Д.) И NGinx в настройке обратного прокси-сервера. Кажется излишним использование двух веб-серверов в тандеме - тем более что мое приложение CherryPy само по себе является веб-сервером - но я не хочу отклонять эту идею, поскольку она появляется везде . Я, конечно, не эксперт, поэтому я хотел бы обсудить это.
Я вижу три варианта:
- Разверните CherryPy самостоятельно.
- Разверните под Gunicorn или другим сервером WSGI.
- Развертывание под сервером WSGI и обратный прокси-сервер к NGinx, который, похоже, является решением для всех.
Мои вопросы:
- Какова основная причина, по которой я вижу эту модель повсюду? NGinx это так хорошо?
- Для приложений с низким трафиком достаточно ли родного сервера CherryPy, или мне даже не попробовать?
Любой совет ценится, спасибо.
Почему люди ставят Nginx впереди?
zlib
это просто оболочка для библиотеки C. Но поскольку Nginx эффективно обрабатывает соединение, хорошей идеей будет освободить рабочие потоки CherryPy от предоставления статического контента в производстве и выделять его только для динамического контента.Безопасно ли использовать CherryPy самостоятельно?
По словам одного из авторов оригинала, да . Большинство веб-актуальных вещей вы можете делать с CherryPy самостоятельно.
CherryPy имеет представление о приложении, и вы можете обслуживать несколько приложений с одним экземпляром CherryPy. CherryPy также может обслуживать другие приложения WSGI .
Развертывание CherryPy
В традиционном развертывании в стиле * nix вы пишете сценарий инициализации, демонизируете процесс, отбрасываете его привилегии, пишете его PID и т. Д. Это не имеет большого значения, если у вас есть пара экземпляров CherryPy. Когда у вас есть десятки, это становится утомительным, и имеет смысл передать управление процессами в Gunicorn или uWGSI и переключить ваши экземпляры CherryPy с HTTP на WSGI.
Я написал учебник / скелет проекта cherrypy-webapp-skeleton , целью которого было заполнить пробелы в развертывании (традиционного) реального приложения CherryPy на Debian для веб-разработчика.
Заворачивать
CherryPy * 1 ⇐ HTTP ⇒ Client
.CherryPy * n ⇐ HTTP ⇒ Nginx ⇐ HTTP ⇒ Client
.CherryPy * n ⇐ WSGI ⇒ Gunicorn ⇐ HTTP ⇒ Nginx ⇐ HTTP ⇒ Client
.источник