Ich beabsichtige, mit einem einzigen VPS mehrere verkehrsarme CherryPy-Apps als Unterverzeichnisse bereitzustellen. zB: example.com/app1
, example.com/app2
usw.
Nach der Untersuchung der WSGI-Bereitstellung scheint die bevorzugte Methode für die Bereitstellung von Apps darin zu bestehen, einen WSGI-Server (Gunicorn, uWSGI usw.) und NGinx in einem Reverse-Proxy-Setup zu verwenden. Es scheint übertrieben, zwei Webserver gleichzeitig zu verwenden - zumal meine CherryPy-App selbst ein Webserver ist -, aber ich möchte die Idee nicht verwerfen, da sie überall erscheint . Ich bin sicherlich kein Experte, deshalb würde ich gerne darüber diskutieren.
Ich sehe drei Möglichkeiten:
- Stellen Sie CherryPy selbst bereit.
- Bereitstellung unter Gunicorn oder einem anderen WSGI-Server.
- Bereitstellung unter einem WSGI-Server und Reverse-Proxy für NGinx, was anscheinend die Lösung für alle ist.
Meine Fragen:
- Was ist der Hauptgrund, warum ich dieses Muster überall sehe? Ist NGinx einfach so gut?
- Ist der native CherryPy-Server für Apps mit geringem Datenverkehr gut genug oder sollte ich es nicht einmal versuchen?
Jeder Rat wird geschätzt, danke.
Warum setzen die Leute Nginx in den Vordergrund?
zlib
ist nur ein Wrapper um die C-Bibliothek. Da Nginx die Verbindung jedoch effektiv verwaltet, ist es eine gute Idee, Ihre CherryPy-Worker-Threads von der Bereitstellung statischer Inhalte in der Produktion zu entlasten und sich nur dynamischen Inhalten zu widmen.Ist es sicher, CherryPy alleine zu verwenden?
Laut einem der ursprünglichen Autoren ja . Die meisten webrelevanten Dinge, die Sie mit CherryPy alleine tun können.
CherryPy hat eine Anwendungsvorstellung und Sie können mehrere Anwendungen mit einer CherryPy-Instanz bereitstellen. CherryPy kann auch andere WSGI-Anwendungen bedienen .
Bereitstellen von CherryPy
In einer herkömmlichen Bereitstellung im * nix-Stil schreiben Sie ein Init-Skript, dämonisieren Ihre Verarbeitung, löschen seine Berechtigungen, schreiben seine PID usw. Wenn Sie über mehrere CherryPy-Instanzen verfügen, ist dies keine große Sache. Wenn Sie Dutzende haben, wird es mühsam und es ist sinnvoll, das Prozessmanagement an Gunicorn oder uWGSI zu übergeben und Ihre CherryPy-Instanzen von HTTP auf WSGI umzustellen.
Ich habe ein Tutorial / Projekt-Skelett geschrieben, cherrypy-webapp-skeleton . Ziel war es, die Lücken für die (traditionelle) Bereitstellung einer realen CherryPy-Anwendung auf Debian für einen Webentwickler zu schließen.
Einpacken
CherryPy * 1 ⇐ HTTP ⇒ Client
.CherryPy * n ⇐ HTTP ⇒ Nginx ⇐ HTTP ⇒ Client
.CherryPy * n ⇐ WSGI ⇒ Gunicorn ⇐ HTTP ⇒ Nginx ⇐ HTTP ⇒ Client
.quelle