Tengo la intención de usar un solo VPS para implementar múltiples aplicaciones CherryPy de bajo tráfico como subdirectorios; por ejemplo: example.com/app1
, example.com/app2
, etc.
Después de investigar sobre la implementación de WSGI, parece que el método preferido para implementar aplicaciones es usar un servidor WSGI (Gunicorn, uWSGI, etc.) y NGinx en una configuración de proxy inverso. Parece excesivo usar dos servidores web en conjunto, especialmente porque mi aplicación CherryPy es en sí misma un servidor web, pero no quiero descartar la idea como aparece en todas partes . Ciertamente no soy un experto, así que me gustaría discutirlo.
Veo tres opciones:
- Implemente CherryPy por sí mismo.
- Implemente debajo de Gunicorn u otro servidor WSGI.
- Implemente debajo de un servidor WSGI y haga un proxy inverso a NGinx, que parece ser la solución de todos.
Mis preguntas:
- ¿Cuál es la razón principal por la que veo este patrón en todas partes? Nginx es simplemente que bueno?
- Para las aplicaciones de poco tráfico, ¿el servidor CherryPy nativo es lo suficientemente bueno o no debería intentarlo?
Todos y cada uno de los consejos son apreciados, gracias.
¿Por qué la gente pone a Nginx al frente?
zlib
es solo un contenedor alrededor de la biblioteca de C. Pero debido a que Nginx maneja la conexión de manera efectiva, es una buena idea evitar que sus hilos de trabajo CherryPy sirvan contenido estático en producción y dedicar solo contenido dinámico.¿Es seguro usar CherryPy solo?
Según uno de los autores originales, sí . La mayoría de las cosas relevantes para la web puedes hacerlas solo con CherryPy.
CherryPy tiene la noción de una aplicación y puede servir varias aplicaciones con una instancia de CherryPy. CherryPy también puede servir otras aplicaciones WSGI .
Implementación de CherryPy
En una implementación tradicional * nix-style, escribe script de inicio, daemoniza su proceso, elimina sus privilegios, escribe su PID, etc. No es un gran problema cuando tiene un par de instancias de CherryPy. Cuando tiene docenas, se vuelve tedioso y tiene sentido transferir la gestión de procesos a Gunicorn o uWGSI y cambiar sus instancias CherryPy de HTTP a WSGI.
Escribí un tutorial / esqueleto de proyecto, cherrypy-webapp-skeleton , cuyo objetivo era llenar los vacíos para implementar (tradicional) una aplicación CherryPy del mundo real en Debian para un desarrollador web.
Envolver
CherryPy * 1 ⇐ HTTP ⇒ Client
.CherryPy * n ⇐ HTTP ⇒ Nginx ⇐ HTTP ⇒ Client
.CherryPy * n ⇐ WSGI ⇒ Gunicorn ⇐ HTTP ⇒ Nginx ⇐ HTTP ⇒ Client
.fuente