Django über CGI ausliefern




Eigentlich ist ja die bevorzugte Methode, um Django Anwendungen auszuliefern, mod_python. Allerdings kann man teilweise nicht immer mod_python verwenden, z.B. wenn der Provider dies nicht unterstützt. Genau das gleiche gilt z.B. auch für FastCGI. Da Django selber WSGI kompatibel ist, ist es auch möglich Django über CGI auszuliefern.



Hierfür braucht man allerdings natürlich ein CGI Script, was die Server Komponente von FastCGI bzw. mod_python ersetzt. Ausserdem muss der Apache ein wenig angepasst werden, was auch in einer .htaccess Datei gemacht werden kann.

Das CGI Script kann z.B. so aussehen Das Script heisst bei mir django.cgi und liegt direkt im Projekt Ordner. Falls die Environment Variable DJANGO_SETTINGS_MODULE gesetzt ist, dann wird diese auch verwendet, ansonsten wird die Datei settings.py im Projekt Ordner verwendet.

Die Konfiguration von Apache ist jetzt nicht mehr schwer:
AliasMatch ^/MYAPP(.*) /pfad/zum/projekt/django.cgi/MYAPP$1
<Directory "/pfad/zum/projekt/">
  AddHandler  cgi-script .cgi
  Options ExecCGI
</Directory>
Diese Anweisungen bewirken, dass alle Anfragen für http://domain/MYAPP von der Datei django.cgi abgewickelt werden. Es wurde erst vor kurzem ein Ticket aufgemacht, mit welchem ein CGI Handler zu Django hinzugefügt wird. Allerdings kann das wohl noch eine Weile dauern, bis dies wirklich eingebaut ist.

3. August, 2006

Kommentar hinzufügen