Salut,
Je ne connais pas o2switch, mais pour déployer un site Django j’avais rédigé (en partie) ceci sur le wiki de mon asso (il faut éventuellement adapter, hésite pas si tu as des questions):
Concernant Django
Pour Django, on doit utiliser le module '’'mod_wsgi’'' :
Si le module n’existe pas, il faudra installer le paquet :
sudo apt-get install libapache2-mod-wsgi
De plus, on doit indiquer à apache de servir vos fichiers static et media.
Pour cela il suffit d’ajouter les lignes suivantes dans le fichier du Virtual Host
Alias /static/ /var/www/monsite/static
Alias /media/ /var/www/monsite/static
WSGIDaemonProcess monsite threads=2 display-name=%{GROUP}
WSGIProcessGroup monsite
WSGIScriptAlias / /var/www/monsite/monprojet/wsgi.py
à consulter : https://docs.djangoproject.com/en/1.8/howto/deployment/wsgi/modwsgi/
[…]
Déploiement d’applications Django dans un Virtualenv
Pour certaines raisons (par exemple faire rager [un nom]), on peut vouloir déployer des sites en Django en utilisant des bibliothèques récentes. Une solution pour cela est d’installer lesdites bibliothèques '’via’' Pip. Le problème prend une autre dimension lorsque l’on souhaite faire cohabiter plusieurs sites avec différentes versions de Python ou de bibliothèques. Un outil très pratique est alors virtualenv. Il permet de créer un environnement Python dédié au site.
Supposons que vous ayez développé '’xxx’'.
Prérequis
- virtualenv installé
- Apache avec mod_wsgi installé
Récupération du projet et installation de l’environnement
On va travailler en sudo
sudo -Es
cd /var/www
# On récupère votre site tout beau
git clone url_de_votre_depot
# On crée un environnement virtuel dédié au site
virtualenv env_xxx -p /chemin/vers/python # Par exemple /usr/bin/python3
# On l'active
source env_xxx/bin/activate
# On installe les dépendances. Si vous êtes une personne de qualité qui utilise la puissance de pip freeze,
pip install -r requirements.txt
# Vous pouvez vérifier que votre site est prêt à marcher en lançant dans le répertoire du site un
./manage.py check
Configuration côté Apache
On va utiliser un virtual host comme décrit dans la section Mise en place de VirtualHost. Par exemple pour xxx.rezometz.org :
<VirtualHost *:80>
ServerName xxx.rez
ServerAlias xxx.rezometz.org xxx
LogLevel info
ErrorLog ${APACHE_LOG_DIR}/xxx-error.log
CustomLog ${APACHE_LOG_DIR}/xxx-access.log combined
<Directory /var/www/xxx>
Order allow,deny
Allow from all
</Directory>
WSGIScriptAlias / /var/www/xxx/xxx/wsgi.py
WSGIProcessGroup www-data
WSGIDaemonProcess www-data processes=2 threads=16 maximum-requests=1000 display-name=xxx
</VirtualHost>
On va ensuite éditer le wsgi.py afin de charger l’environement virtuel. Pour cela on se base sur le wsgi.py que Django a écrit pour nous.
import os
import sys
VIRTUALENV_LOC = '/var/www/xxx/env_xxx'
activate_env=os.path.join(VIRTUALENV_LOC, 'bin/activate_this.py')
exec(compile(open(activate_env, "rb").read(), activate_env, 'exec'), {'__file__':activate_env})
sys.path.append('/var/www/xxx')
sys.path.append('/var/www/xxx/xxx')
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "xxx.settings")
application = get_wsgi_application()
Pour finir il suffit d’ajouter le site aux enabled et de restart le serveur comme décrit plus haut. Pensez à vérifier les droits sur le répertoire du site.