Pretendo usar um único VPS para implantar vários aplicativos CherryPy de baixo tráfego como subdiretórios; por exemplo: example.com/app1
, example.com/app2
, etc.
Após pesquisar sobre a implantação do WSGI, parece que o método preferido para implantar aplicativos é usar um servidor WSGI (Gunicorn, uWSGI, etc) e NGinx em uma configuração de proxy reverso. Parece um exagero usar dois servidores da web em conjunto - especialmente porque meu aplicativo CherryPy é um servidor da web - mas não quero descartar a ideia, pois ela aparece em todos os lugares . Eu certamente não sou um especialista, então gostaria de discutir isso.
Eu vejo três opções:
- Implante o CherryPy por si só.
- Implante no Gunicorn ou em outro servidor WSGI.
- Implante em um servidor WSGI e faça proxy reverso no NGinx, que parece ser a solução de todos.
Minhas perguntas:
- Qual é a principal razão pela qual vejo esse padrão em todos os lugares? Nginx é apenas que bom?
- Para aplicativos de baixo tráfego, o servidor CherryPy nativo é bom o suficiente ou eu nem deveria tentar?
Todo e qualquer conselho é apreciado, obrigado.
Por que as pessoas colocam o Nginx na frente?
zlib
é apenas um invólucro em torno da biblioteca C. Porém, como o Nginx lida com a conexão de maneira eficaz, é uma boa idéia aliviar os threads de trabalho do CherryPy de veicular conteúdo estático na produção e dedicar apenas ao conteúdo dinâmico.É seguro usar o CherryPy por conta própria?
De acordo com um dos autores originais, sim . A maioria das coisas relevantes para a web você pode fazer por si só com o CherryPy.
CherryPy tem noção de um aplicativo e você pode atender a vários aplicativos com uma instância CherryPy. O CherryPy também pode atender a outros aplicativos WSGI .
Implantando o CherryPy
Em uma implantação tradicional no estilo * nix, você escreve o script init, daemoniza o processo, elimina seus privilégios, escreve o PID etc. Não é grande coisa quando você tem algumas instâncias do CherryPy. Quando você tem dezenas, torna-se entediante e faz sentido entregar o gerenciamento de processos ao Gunicorn ou uWGSI e alternar suas instâncias do CherryPy de HTTP para WSGI.
Eu escrevi um esqueleto de tutorial / projeto, cherrypy-webapp-esqueleto , cujo objetivo era preencher as lacunas para implantar (tradicional) um aplicativo CherryPy do mundo real no Debian para um desenvolvedor web.
Embrulhar
CherryPy * 1 ⇐ HTTP ⇒ Client
.CherryPy * n ⇐ HTTP ⇒ Nginx ⇐ HTTP ⇒ Client
.CherryPy * n ⇐ WSGI ⇒ Gunicorn ⇐ HTTP ⇒ Nginx ⇐ HTTP ⇒ Client
.fonte