J'ai l'intention d'utiliser un seul VPS pour déployer plusieurs applications CherryPy à faible trafic en tant que sous-répertoires; par exemple: example.com/app1
, example.com/app2
, etc.
Après des recherches sur le déploiement de WSGI, il semble que la méthode préférée pour déployer des applications consiste à utiliser un serveur WSGI (Gunicorn, uWSGI, etc.) et NGinx dans une configuration de proxy inverse. Il semble exagéré d'utiliser deux serveurs Web en tandem - d'autant plus que mon application CherryPy est elle-même un serveur Web - mais je ne veux pas rejeter l'idée telle qu'elle apparaît partout . Je ne suis certainement pas un expert, donc j'aimerais en discuter.
Je vois trois options:
- Déployez CherryPy par lui-même.
- Déployez sous Gunicorn ou un autre serveur WSGI.
- Déployez-le sous un serveur WSGI et inversez-proxy vers NGinx, qui semble être la solution de tout le monde.
Mes questions:
- Quelle est la principale raison pour laquelle je vois ce modèle partout? NGinx est-il juste aussi bon?
- Pour les applications à faible trafic, le serveur natif CherryPy est-il assez bon, ou devrais-je même pas essayer?
Tous les conseils sont appréciés, merci.
Pourquoi les gens mettent-ils Nginx au premier plan?
zlib
n'est qu'un wrapper autour de la bibliothèque C. Mais parce que Nginx gère efficacement la connexion, c'est une bonne idée de soulager vos threads de travail CherryPy de la diffusion de contenu statique en production et de se consacrer uniquement au contenu dynamique.Est-il sûr d'utiliser CherryPy seul?
Selon l'un des auteurs originaux, oui . La plupart des choses pertinentes sur le Web que vous pouvez faire avec CherryPy seule.
CherryPy a la notion d'application et vous pouvez servir plusieurs applications avec une seule instance CherryPy. CherryPy peut également servir à d'autres applications WSGI .
Déploiement de CherryPy
Dans un déploiement traditionnel de style * nix, vous écrivez le script init, démonifiez votre processus, supprimez ses privilèges, écrivez son PID, etc. Ce n'est pas un gros problème lorsque vous avez quelques instances CherryPy. Lorsque vous en avez des dizaines, cela devient fastidieux et il est logique de transférer la gestion des processus vers Gunicorn ou uWGSI et de faire passer vos instances CherryPy de HTTP à WSGI.
J'ai écrit un tutoriel / squelette de projet, cherrypy-webapp-skeleton , dont le but était de combler les lacunes pour le déploiement (traditionnel) d'une application CherryPy du monde réel sur Debian pour un développeur web.
Emballer
CherryPy * 1 ⇐ HTTP ⇒ Client
.CherryPy * n ⇐ HTTP ⇒ Nginx ⇐ HTTP ⇒ Client
.CherryPy * n ⇐ WSGI ⇒ Gunicorn ⇐ HTTP ⇒ Nginx ⇐ HTTP ⇒ Client
.la source