Comment WSGI, CGI, et les cadres sont tous connectés ?
Apache écoute sur le port 80. Il reçoit une requête HTTP. Il analyse la demande de trouver un moyen de répondre. Apache a BEAUCOUP de choix pour répondre. Une façon d'y répondre est d'utiliser des CGI pour exécuter un script. Une autre façon d'y répondre est d'être simplement un fichier.
Dans le cas de CGI, Apache prépare un environnement et invoque le script par le protocole CGI. C'est un standard d'Unix Fork/Exec situation -- le CGI sous-processus hérite d'un environnement de système d'exploitation, y compris la prise et la sortie standard (stdout). Le CGI sous-processus écrit une réponse, qui remonte à Apache; Apache envoie cette réponse au navigateur.
CGI est primitif et ennuyeux. Surtout parce qu'il les fourches d'un sous-processus pour chaque demande.
WSGI est une interface basée sur le CGI modèle de conception. Il n'est pas nécessairement CGI -- il n'a pas à fourche d'un sous-processus pour chaque demande. Il peut être CGI, mais il n'a pas à être.
WSGI ajoute à la CGI modèle de conception de plusieurs façons importantes. Il analyse les en-Têtes de Requête HTTP pour vous et ajoute de ces de l'environnement. Il fournit toute l'après-entrée orientés vers un fichier comme objet dans l'environnement. Il vous offre également une fonction qui permettra de formuler la réponse, vous sauver de beaucoup de détails de mise en page.
De quoi ai-je besoin de savoir / installer / faire si je veux exécuter un framework web (dire web.py ou cherrypy) sur ma base de configuration CGI ?
Rappelons que la fourche d'un sous-processus est coûteux. Il y a deux façons de contourner cela.
Incorporé mod_wsgi
ou mod_python
incorpore Python à l'intérieur de Apache; aucun processus n'est fourchue. Apache s'exécute l'application Django directement.
Démon mod_wsgi
ou mod_fastcgi
permet à Apache d'interagir avec un démon (ou "long processus en cours d'exécution"), à l'aide de la WSGI protocole. Vous démarrez votre longue Django processus, vous devez ensuite configurer Apache mod_fastcgi pour communiquer avec ce processus.
Notez que mod_wsgi
peut fonctionner dans les deux modes: intégré ou démon.
Quand vous lisez sur mod_fastcgi, vous verrez que Django utilise flup pour créer un WSGI-interface compatible à partir de l'information fournie par mod_fastcgi. Le pipeline fonctionne comme ceci.
Apache -> mod_fastcgi -> FLUP (via CGI protocol) -> Django (via WSGI protocol)
Django a plusieurs "django.de base.gestionnaires" pour les différentes interfaces.
Pour mod_fastcgi, Django fournit un manage.py runfcgi
qui intègre FLUP et le gestionnaire.
Pour mod_wsgi, il y a un gestionnaire de base pour cela.
Comment faire pour installer WSGI de soutien ?
Suivez ces instructions.
http://code.google.com/p/modwsgi/wiki/IntegrationWithDjango
Pour plus d'information, voir ce
http://docs.djangoproject.com/en/dev/howto/deployment/#howto-deployment-index