Django Installation

Aus Hostsharing Wiki
Wechseln zu: Navigation, Suche

Installation Djangobibliothek

Die Djangobibliotheken werden in einer Virtualenv-Umgebung installiert. Vorraussetzung ist ein auf dem System installiertes python mit einem virtualenv-Paket Zunächst wird die Virtualenvumgebung erstellt:

xyz00-doms:~$ virtualenv djangoenv
New python executable in djangoenv/bin/python
Installing setuptools............done.

Dann werden die Django-Bibliotheken in die eben erstellte Virtualenvumgebung installiert.

xyz-doms:~$ djangoenv/bin/easy_install django
Searching for django
Reading http://pypi.python.org/simple/django/
Reading http://www.djangoproject.com/
Best match: Django 1.3
.
.
.
Finished processing dependencies for django

Testen, ob Django installiert ist:

xyz-doms:~$ djangoenv/bin/python
Python 2.6.6 (r266:84292, Dec 27 2010, 00:02:40) 
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
>>> 

Mit Ctrl-D kann die Konsole wieder verlassen werden.

Django-Projekt

Dann wird das Django Projekt im Bereich einer Domain abgelegt.

xyz-doms:~$ cd ~/doms/example.com/
xyz-doms:~$ /path_to_djangoenv/djangoenv/bin/django-admin.py startproject djangoprojekt

Jetzt kann man unter Verwendung des Pythons der Virtualenv testen, ob Django läuft.

xyz00: /path_to_djangoenv/djangoenv/bin/python manage.py runserver 
Validating models...

0 errors found
Django version 1.3, using settings 'mysite.settings'
Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

... und die settings.py an die Hostsharing-Pfade angepasst.

Nutzung mit FastCGI

Zunächst richtet man den FastCGI-Skript (django.fcgi) ein und legt es im fastcgi-Verzeichnis ab und macht es ausführbar:

#!/path_to_djangoenv/djangoenv/bin/python

import os, sys
os.chdir("/path_to_doms/doms/example.com/djangoprojekt/")
os.environ['DJANGO_SETTINGS_MODULE']= "djangoprojekt.settings"
sys.path.insert(0, "/path_to_doms/doms/example.com/djangoprojekt/")
from django.core.servers.fastcgi import runfastcgi
runfastcgi(method="threaded", daemonize="false")

Das Djangoprojekt sollte jetzt unter example.com/fastcgi-bin/django.fcgi erreichbar sein.

Nutzung mit WSGI via flup

Zunächst legt man das FastCGI-Skript (django.fcgi) an und legt es im fastcgi-Verzeichnis ab und macht es ausführbar:

#!/path_to_djangoenv/djangoenv/bin/python

import os, sys
os.chdir("/path_to_doms/doms/example.com/django")
os.environ['DJANGO_SETTINGS_MODULE']= "djangoprojekt.settings"
sys.path.insert(0, "/path_to_doms/doms/example.com/django")
sys.path.insert(0, "/path_to_doms/doms/example.com/django/djangoprojekt")

from flup.server.fcgi import WSGIServer
from django.core.handlers.wsgi import WSGIHandler
WSGIServer(WSGIHandler()).run()

Das Djangoprojekt sollte jetzt unter example.com/fastcgi-bin/django.fcgi erreichbar sein. Tipp: Manchmal werden Änderungen in den Quellen, insbesondere der settings.py nicht übernommen. Dann hilft es den Zeitstempel der Datei django.fcgi mit touch zu aktualisieren.

Apache Weiterleitung

Nun wird das Djangoprojekt unter www.example.com verfügbar gemacht. Hierfür wird eine .htaccess im entsprechenden Domainverzeichnis angelegt:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /fastcgi-bin/django.fcgi/$1 [QSA,L]

Nun sollte die Seite unter (www.)example.com erreichbar sein.