Zamierzam użyć jednego VPS do wdrożenia wielu aplikacji CherryPy o niskim natężeniu ruchu jako podkatalogów; np example.com/app1
, example.com/app2
itp
Po zbadaniu wdrożenia WSGI wygląda na to, że preferowaną metodą wdrażania aplikacji jest użycie serwera WSGI (Gunicorn, uWSGI itp.) I NGinx w konfiguracji odwrotnego proxy. Korzystanie z dwóch serwerów sieciowych w tandemie wydaje się przesadą - zwłaszcza, że moja aplikacja CherryPy sama jest serwerem sieciowym - ale nie chcę odrzucać tego pomysłu, ponieważ pojawia się wszędzie . Z pewnością nie jestem ekspertem, więc chciałbym o tym porozmawiać.
Widzę trzy opcje:
- Wdróż CherryPy samodzielnie.
- Wdróż pod Gunicorn lub innym serwerem WSGI.
- Wdróż pod serwerem WSGI i odwrotnym proxy do NGinx, który wydaje się być rozwiązaniem dla wszystkich.
Moje pytania:
- Jaki jest główny powód, dla którego wszędzie widzę ten wzór? Nginx jest tylko , że dobry?
- Czy w przypadku aplikacji o niskim natężeniu ruchu natywny serwer CherryPy jest wystarczająco dobry, czy powinienem nawet nie próbować?
Wszelkie porady są mile widziane, dziękuję.
Dlaczego ludzie stawiają Nginx na pierwszym planie?
zlib
jest tylko opakowaniem wokół biblioteki C. Ponieważ jednak Nginx skutecznie obsługuje połączenia, dobrym pomysłem jest odciążenie wątków roboczych CherryPy od udostępniania treści statycznych w produkcji i poświęcanie się tylko zawartościom dynamicznym.Czy samo korzystanie z CherryPy jest bezpieczne?
Według jednej z oryginalnych autorów, tak . Większość istotnych dla sieci rzeczy, które możesz zrobić samodzielnie dzięki CherryPy.
CherryPy ma pojęcie o aplikacji i możesz obsługiwać kilka aplikacji za pomocą jednej instancji CherryPy. CherryPy może również obsługiwać inne aplikacje WSGI .
Wdrażanie CherryPy
W tradycyjnym wdrożeniu w stylu * nix piszesz skrypt inicjujący, demontujesz przetwarzany, upuszczasz jego uprawnienia, piszesz PID itp. Nie jest to wielka sprawa, jeśli masz kilka instancji CherryPy. Gdy masz ich kilkadziesiąt, staje się to żmudne i sensowne jest przekazanie zarządzania procesami do Gunicorn lub uWGSI i przełączenie instancji CherryPy z HTTP na WSGI.
Napisałem szkielet samouczka / projektu, cherrypy-webapp-szkielet , którego celem było wypełnienie luk we wdrażaniu (tradycyjnej) rzeczywistej aplikacji CherryPy na Debianie dla programisty.
Zakończyć
CherryPy * 1 ⇐ HTTP ⇒ Client
.CherryPy * n ⇐ HTTP ⇒ Nginx ⇐ HTTP ⇒ Client
.CherryPy * n ⇐ WSGI ⇒ Gunicorn ⇐ HTTP ⇒ Nginx ⇐ HTTP ⇒ Client
.źródło