OVH permet l'exécution du code Python sur son hébergement mutualisé. La version de Python utilisée est 2.6 mais Django n'est pas installé en standard (vérifier).
La version de Django la plus récente qui puisse fonctionner avec Python-2.6 est Django-1.6 (vérifier). Elle est téléchargeable à cette adresse.
Une fois l'archive téléchargée, extraire le dossier Django-1.6.10/django
. C'est ce dossier qui sera installé sur l'espace d'hébergement.
L'arborescence proposée pour le code est la suivante :
/
├ projects/
│ ├ django/
│ │ ├ bin/
│ │ ├ conf/
│ │ ├ contrib/
│ │ ├ core/
│ │ ├ db/
│ │ ├ dispatch/
│ │ ├ forms/
│ │ ├ http/
│ │ ├ middleware/
│ │ ├ shortcuts/
│ │ ├ template/
│ │ ├ templatetags/
│ │ ├ test/
│ │ ├ utils/
│ │ ├ views/
│ │ └ __init__.py
│ └ app/
│ ├ django_app/
│ | ├ __init__.py
│ | ├ settings.py
│ | ├ urls.py
│ | └ wsgi.py
│ ├ monsite/
│ | ├ migrations/
│ | ├ static/
│ | ├ template/
│ | ├ __init__.py
│ | ├ admin.py
│ | ├ models.py
│ | ├ tests.py
│ | ├ urls.py
│ | └ views.py
│ ├ manage.py
│ └ database.sqlite
└ www/
├ static/
│ ├ admin/
│ │ ├ css/
│ │ ├ img/
│ │ └ js/
│ └ monsite/
│ ├ style.css
│ └ favicon.png
├ django.cgi
├ .htaccess
├ sitemap.gz
└ robots.txt
Le code de Django-1.6.10/django
se place donc dans le dossier /projects/django
et le code « maison » dans le dossier /projects/app
. Il est possible de personnaliser cela grâce aux instructions sys.path.append
du fichier django.cgi
.
Ces instructions sont également à adapter en fonction du nom de votre compte OVH (moncompte
dans le fichier ci-joint). En cas de doute, vous pouvez obtenir cette information en créant dans le dossier www
un fichier PHP contenant <?php echo getcwd(); ?>
.
Le fonctionnement repose sur les fichiers /www/.htaccess
et /www/django.cgi
donnés ci-joints.
Il est essentiel que les permissions du fichier /www/django.cgi
soient 755
ou supérieures. Le problème est que le serveur OVH remet les permissions à 604
dès que le fichier est modifié. Pensez-y quand vous rencontrez des erreurs 500 !
Astuce : si vous hébergez votre site sur un contrat start10m
(donc avec 10 Mo d'espace disque), il est tout-à-fait possible de faire fonctionner Django. Commencez par supprimer les dossiers correspondant aux traductions que vous n'utilisez pas, dans les répertoires /locale/
. Pour ma part, je ne garde que les dossiers /locale/en
. Le dossier Django-1.6.10/django
passe alors de 26 Mo à 6 Mo et il vous reste donc 4 Mo pour héberger votre code, votre base de données et les fichiers statiques. Cependant, par défaut, Python va stocker les fichiers bytecode
(*.pyc
) et ceux-ci réduiront d'autant l'espace disponible pour l'hébergement. Les lignes suivantes, à ajouter au fichier django.cgi
, permettent d'empêcher Python de stocker ces fichiers (au prix d'une réduction des performances) :
os.environ['PYTHONDONTWRITEBYTECODE'] = '1'
sys.dont_write_bytecode = True
N'oubliez pas de configurer les variables ALLOWED_HOSTS
au(x) bon(s) nom(s) de domaine et DEBUG
et TEMPLATE_DEBUG
à False
dans /projects/app/django_app/settings.py
.
Hello,
I tried your method and I get this error :
invalid syntax (lru_cache.py, line 28)
Do you have an idea of what could be the issue ?
Many thanks,
Ludovic