Documentation non-complète

Basé sur: http://www.justanothercodemonkey.com/2009/08/deploying-django-with-buildout.html

Buildout

Buildout est le système de déploiement d'applications Python qui est en test en ce moment pour les systèmes à Montréal.

Buildout permet de gérer les dépendances, crée un environnement virtuel similaire a virtualenv, etc.

Création du buildout

La procédure utilise paster et les templates django, il faut donc l'installer:

easy_install fez.djangoskel 

Création de la structure de base:

paster create -t django_buildout <nom du dossier>

Paster va poser quelques questions:

Selected and implied templates:
fez.djangoskel#django_buildout  A plain Django buildout

Variables:
egg:      djangodev
package:  djangodev
project:  djangodev
Enter django_version (Django version to fetch, the default is 1.0.2) ['1.0.2']:
Enter django_project_name (Name of the main Django project folder) ['project']

Une fois terminé, on aura l'arborescence suivante:

djangodev
|-- bootstrap.py
|-- buildout.cfg
|-- devel.cfg
`-- README.txt

Lors de la premiere utilisation, il faut lancer le boostrap:

$ python ./bootstrap.py
Creating directory '/home/bashu/Temp/djangodev/bin'.
Creating directory '/home/bashu/Temp/djangodev/parts'.
Creating directory '/home/bashu/Temp/djangodev/develop-eggs'.
Generated script '/home/bashu/Temp/djangodev/bin/buildout'.

Il faut maintenant lui faire installer les dependances, et créer le projet:

$ ./bin/buildout -c devel.cfg
Installing django.
...

Il existe maintenant un nouvel executable bin/django, equivalent a python manage.py:

$ ./bin/django syncdb

Buildout aura aussi créé un dossier pour le projet Django. S'il s'agit d'un projet existant, suffit de copier le contenu du projet dans ce dossier.

À cette étape, il faut ajouter le path du projet dans la configuration de buildout: ajouter la ligne suivante dans la section "django" de buildout.cfg:

extra-paths = <nom du projet>

Il faudra ajouter les dépendances du projet dans buildout.cfg, en ajoutant une entrée eggs dans la sesion django:

eggs = django_pagination >=1.0
       django_sorting <=0.1
       django_historique
       django_exportateur
       auf_roa_authentification_backend

Il faut spécifier une dépendance par ligne, avec la version minimale ou maximale requise (optionnel).

Utilisation

Environnement de dev

# Créer la structure initiale du buildout, génerer les scripts
$ python bootstrap.py 
# Faire le buildout de dev
$ bin/buildout -c devel.cfg
# Lancer le serveur de dev
$ bin/django runserver

Mise en prod

# Créer la structure initiale du buildout, génerer les scripts
$ python bootstrap.py 
# Faire le buildout de prod
$ bin/buildout -c buildout.cfg # des fois, on peut avoir un production.cfg

Buildout a généré un django.wsgi dans bin, il suffira de configurer Apache pour l'utiliser