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 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 d'un projet avec Buildout

Nous disposons d'un squelette Buildout Django à l'AUF qui recense nos bonnes pratiques.

wget http://git.auf.org/?p=olivier.git;a=blob_plain;f=bootstraper/mk_django_project.py;hb=HEAD

{i} Lors d'un développement local, il est utile de faire les installations dans un environnement virtuel avec virutalenv Ceci reste néanmoins optionnel (car le script se charge de récupérer la dernière version), mais fortement conseillé.

python mk_django_project.py

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

Les recettes

Les recettes (recipe) expliquent au buildout ce qu'il a à faire. Par exemple, celle utilisée dans tous nos projet est la djangorecipe, pour bootstraper un projet. Elle permet de dire quelle version de django on veut utiliser, les modules tiers à récupérer (eggs) et bien d'autres options http://pypi.python.org/pypi/djangorecipe

djangorecipe

http://pypi.python.org/pypi/djangorecipe

Exemple :

[django]
recipe = djangorecipe
version = 1.2.3
project = auf_projets
wsgi=true
settings=production
extra-paths = auf_projets
eggs = auf_references_client
    south
    django-admin-tools
    datamaster_modeles
    django-tinymce
    django-form-utils

hexagonit.recipe.download

http://pypi.python.org/pypi/hexagonit.recipe.download

Quelque-fois les modules ne sont pas sur pypi, mais il est possible grâce à cette recette de les télécharger et de les décompresser dans le répertoire parts.

Note : il convient d'ajuster le paramètre exta-paths de la recette djangorecipe si vous voulez que ce module soit exploitable dans django

Exemple :

[wkhtmltopdf]
recipe = hexagonit.recipe.download
url = http://wkhtmltopdf.googlecode.com/files/wkhtmltopdf-0.9.9-static-i386.tar.bz2

collective.recipe.cmd

http://pypi.python.org/pypi/collective.recipe.cmd/0.5

Cette recette permet de faire des opérations systèmes

Exemple :

[wkhtmltopdf_executable]
recipe = collective.recipe.cmd
on_install = true
on_update = true
cmds =
     cd ${buildout:directory}/parts/wkhtmltopdf
     chmod +x wkhtmltopdf-i386
     cd ${buildout:directory}/bin
     ln -s ${buildout:directory}/parts/wkhtmltopdf/wkhtmltopdf-i386 wkhtmltopdf