Installer Django Sur OVH.net

Cet article explique comment installer django sur les serveurs mutualisés d’ovh.com. Django ne peut fonctionner seulement en mode cgi, donc la performance ne sera pas au rendez-vous. Mais cela conviendra tres bien pour des sites a faible fréquentation.

Voici les détails techniques à la date de publications :

  • Python : v2.4
  • Plan ovh.net : 240
  • Django : Unicode r5489

1. Structure des dossiers

/projects/mysupersiteweb

  • django : code source de django, le repertoire django/django
  • trunk : code source du project

/www : répertoire www de votre compte

  • django.cgi : cgi qui appel django
  • media : lien symbolique vers /projects/mysupersiteseb/trunk/media
  • .htaccess : cache le cgi pour les url

2. django.cgi

Ce code provient du ticket [1] qui donne diverses solutions pour l’utilisation de django en cgi. Le fichier est accessible en pièce jointe [2].

Il faut rajouter une ligne qui correspond on chemin absolue de /projects/mysupersiteweb. Cette ligne est a rajouter après “import os, sys”

sys.path.append("/YOURHOMEDIRECTORTY/USERNAME/projects/mysupersiteweb")

Il faut également spécifier à Django la location du fichier settings. Cette ligne se trouve a la fin du fichier.

os.environ['DJANGO_SETTINGS_MODULE'] = 'trunk.settings'

Le fichier doit être exécutable : chmod ua+x django.cgi

Vous pouvez également modifier la dernière ligne en cas d’erreur 500. Cela vous permettra d’afficher les éventuelles erreurs de django en cas de problèmes.

try:  
    run_with_cgi(django.core.handlers.wsgi.WSGIHandler())  
except Exception, inst:  
    print "Content-type: text/htmlnn"  
    print inst  

3. .htaccess

RewriteEngine on  
RewriteBase /  
RewriteCond %{REQUEST_FILENAME} !-f  
RewriteRule ^(.*)$ django.cgi/$1 [L]  

4. settings.py

N’oublier pas de modifier ce fichier en fonction des paramétres fournis par ovh.com pour la connection MySQL ainsi que les chemins absolues pour les templates.

5. Et voila !

Normalement si tous c’est bien passé, vous devriez avoir votre site qui fonctionne.

Remarques

Vous ne devez pas avoir de “print …” dans votre code, sinon le serveur d’ovh retourne une erreur 500.

Références

[1] http://code.djangoproject.com/ticket/2407
[2] http://code.djangoproject.com/attachment/ticket/2407/django.cgi?format=raw