Como WSGI, CGI e os frameworks estão todos conectados?
O Apache escuta na porta 80. Ele recebe uma solicitação HTTP. Ele analisa a solicitação para encontrar uma maneira de responder. O Apache tem muitas opções para responder. Uma maneira de responder é usar o CGI para executar um script. Outra maneira de responder é simplesmente servir um arquivo.
No caso de CGI, o Apache prepara um ambiente e chama o script por meio do protocolo CGI. Essa é uma situação padrão do Unix Fork / Exec - o subprocesso CGI herda um ambiente de SO, incluindo o soquete e o stdout. O subprocesso CGI grava uma resposta, que volta ao Apache; O Apache envia essa resposta ao navegador.
O CGI é primitivo e irritante. Principalmente porque ele bifurca um subprocesso para cada solicitação, e o subprocesso deve sair ou fechar stdout e stderr para significar o fim da resposta.
WSGI é uma interface baseada no padrão de design CGI. Não é necessariamente CGI - ele não precisa bifurcar um subprocesso para cada solicitação. Pode ser CGI, mas não precisa ser.
O WSGI adiciona ao padrão de design CGI de várias maneiras importantes. Ele analisa os cabeçalhos de solicitação HTTP para você e os adiciona ao ambiente. Ele fornece qualquer entrada orientada ao POST como um objeto semelhante a arquivo no ambiente. Também fornece uma função que formulará a resposta, poupando-lhe muitos detalhes de formatação.
O que preciso saber / instalar / fazer se quiser executar uma estrutura da web (por exemplo, web.py ou cherrypy) na minha configuração básica de CGI?
Lembre-se de que bifurcar um subprocesso é caro. Existem duas maneiras de contornar isso.
Incorporado mod_wsgi
ou mod_python
incorporado o Python no Apache; nenhum processo é bifurcado. O Apache executa o aplicativo Django diretamente.
Daemon mod_wsgi
ou mod_fastcgi
permite que o Apache interaja com um daemon separado (ou "processo de longa execução"), usando o protocolo WSGI. Você inicia o processo de execução do Django, depois configura o mod_fastcgi do Apache para se comunicar com esse processo.
Observe que mod_wsgi
pode funcionar em qualquer um dos modos: incorporado ou daemon.
Quando você ler sobre mod_fastcgi, verá que o Django usa flup para criar uma interface compatível com WSGI a partir das informações fornecidas por mod_fastcgi. O pipeline funciona assim.
Apache -> mod_fastcgi -> FLUP (via FastCGI protocol) -> Django (via WSGI protocol)
O Django possui vários "django.core.handlers" para as várias interfaces.
Para mod_fastcgi, o Django fornece um manage.py runfcgi
que integra o FLUP e o manipulador.
Para mod_wsgi, há um manipulador principal para isso.
Como instalar o suporte WSGI?
Siga estas instruções.
https://code.google.com/archive/p/modwsgi/wikis/IntegrationWithDjango.wiki
Para mais informações, consulte
http://docs.djangoproject.com/en/dev/howto/deployment/#howto-deployment-index