Python¶
Présentation¶
L’hébergement Python exploite le serveur WSGI Gunicorn. Pour l’utiliser, il
est nécessaire de demander l’activation de celui-ci sur un ou plusieurs
répertoires web de votre compte d’hébergement. Gunicorn tentera alors
d’accéder à un fichier nommé .wsgi/<NOM_REPERTOIRE>.py
qui devra contenir le
code Python nécessaire au chargement de l’application Python.
Bien que quelques bibliothèques Python soient disponibles sur le système, il est vivement recommandé d’utiliser l’outil virtualenv et d’installer vos propres versions de bibliothèques à l’aide de l’outil pip. Cela permettra de conserver le même environnement d’exécution de votre application, même en cas de mise-à-jour du système du serveur.
Important : Lors du déploiement d’une nouvelle version d’une application,
il est nécessaire de demander la relance de l’ensemble des worker Gunicorn en
exécutant la commande gunicorn-restart
.
Tutorial¶
Cet exemple décrit le déploiement d’une application Django nommée myapp
sur
un compte d’hébergement Oopss nommé example
, sur le serveur
example.oopss.org
. Le répertoire web par défaut htdocs
a été
préalablement configuré pour exécuter le langage Python.
Se connecter au compte :
ssh example@example.oopss.org
Créer un virtualenv dans lequel seront installés les bibliothèques Python nécessaires pour l’application :
mkvirtualenv myapp
L’arborescence correspondante sera créée dans le répertoire .virtualenv/myapp
.
Activer ce virtualenv :
workon myapp
Installer les packages Python nécessaires au bon fonctionnement de votre application (ici Django 1.6.5) :
pip install Django==1.6.5
Installer les fichiers sources de l’application dans un emplacement au choix,
par exemple app/myapp/
.
Installer les fichiers statiques (CSS, JS, images) dans le répertoire
htdocs
. Si une requête HTTP correspond à l’emplacement d’un fichier présent
dans ce répertoire, celui-ci sera servi directement par le serveur web, sans
que la requête soit traité par Gunicorn. Le gain de performance est
appréciable.
L’application étant hébergée dans le répertoire web par défaut (htdocs
),
créer un fichier .wsgi/htdocs.py
qui contiendra le code nécessaire au
chargement de votre application WSGI (exemple pour Django) :
import os, sys
# Ajout du chemin vers le virtualenv
sys.path.append('/srv/www/example/.virtualenvs/myapp/lib/python2.7/site-packages/')
# Ajout du chemin vers l'application
sys.path.append('/srv/www/example/app/myapp')
# Voir https://docs.djangoproject.com/en/dev/howto/deployment/wsgi/
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myapp.settings")
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
Enfin, relancer les processus Gunicorn :
gunicorn-restart
La relance des processus Gunicorn et les éventuelles erreurs sont alors
visibles dans le fichier de log .gunicorn/htdocs.log
.