Home > Informatique > Faire fonctionner Django avec Apache

Faire fonctionner Django avec Apache

septembre 4th, 2009 Leave a comment Go to comments

Le framework web Django est livré avec un serveur de développement intégré. Il est cependant possible de le faire fonctionner avec serveur web Apache dans le cadre d’une utilisation en production.

Pour la rédaction de cet article, je me suis basé sur la documentation de Django. L’installation a été réalisée sur un serveur fonctionnant avec Debian Lenny.

Installation de WSGI

aptitude install libapache2-mod-wsgi

Paramétrage de l’application pour l’utilisation d’Apache

Pour ce faire créez par exemple un répertoire apache à la racine de votre site et ajouter un fichier nommé django.wsgi. Ajoutez les lignes suivantes :
import os
import sys

sys.path.append('/usr/local/src/django_apps/app/')
os.environ['DJANGO_SETTINGS_MODULE'] = 'monprojet.settings'

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

Adaptez les lignes 3 et 4 à votre projet. Attention la ligne sys.path.append contient le chemin vers votre projet, nom du projet NON compris.

Il faut ensuite ajouter à Apache le site développé avec Django. Ajoutez par exemple à votre virtualhost les lignes suivantes :

Alias /media/ /usr/local/src/django_apps/app/monprojet/media/

<Directory /usr/local/src/django_apps/app/monprojet/media>
Order deny,allow
Allow from all
</Directory>

WSGIScriptAlias /monprojet /usr/local/src/django_apps/app/monprojet/apache/django.wsgi

<Directory /usr/local/src/django_apps/app/monprojet/apache>
Order deny,allow
Allow from all
</Directory>

  • La ligne avec Alias permet de définir un chemin pour indiquer à Apache où aller chercher les fichiers statiques (images, css…).
  • La ligne avec WSGIScriptAlias définit l’URL pour l’appel de votre site.
  • Les directives avec Directory donnent l’accès aux répertoires à Apache

Voilà, ne pas oublier de recharger la configuration d’Apache.

/etc/init.d/apache2 reload

Categories: Informatique Tags: .: apache .: django
  1. No comments yet.
  1. No trackbacks yet.