OVH permet l'exécution du code Python sur son hébergement mutualisé. Il est possible d'utiliser (en 2018) Python 3.4.2.
La version de Django la plus intéressante à utiliser avec Python 3.4 est la 1.11, car c'est une version étendue dont le support se prolongera jusqu'en 2020 alors que la 2.0 ne sera supportée que jusqu'en 2019, et que la 2.1 ne supportera pas Python 3.4 :
Dans un fichier requirements.txt
, préciser :
Django = 1.11.*
Puis installer vos requirements.txt
(y compris tous modules complémentaire) via :
pip3 install --root . -r requirements.txt
Dans votre dossier racine de projet, contenant manage.py
et django.cgi
.
L'arborescence proposée pour le code est la suivante :
/
├ projects/
│ ├ home/user/.local/lib/python3.4/site-packages
│ └ 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
│ ├ requirements.txt
│ ├ git_bundle_scp.sh
│ └ database.sqlite
└ www/
├ static/
│ ├ admin/
│ │ ├ css/
│ │ ├ img/
│ │ └ js/
│ └ monsite/
│ ├ style.css
│ └ favicon.png
├ django.cgi
├ .htaccess
├ sitemap.gz
└ robots.txt
Le code de Django se place donc dans le dossier /projects/home/$user/.local/lib/python3.4/site-packages
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(); ?>
.
Une fois le tout fonctionnel en local chez vous, zipper et uploader le tout.
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
.