Personal tools
You are here: Support Documentation Tutoriels Utilisation d'un buildout
Document Actions

Utilisation d'un buildout

Note: Return to tutorial view.

Installation d'outils via le système de buildout

Introduction

Qu'est-ce qu'un buildout ?


Le buildout est un outil d'installation automatisée de logiciels : zope, plone, etc. .

Le principe est le suivant : un fichier de base décrit les différents composants qui devront être installés à partir de "recettes". Il s'agit donc d'un fichier contenant des recettes servant à l'installation de différents types de modules : une recette par exemple servant à l'installation de Zope, une autre pour Plone, etc.

Pour exécuter les différentes commandes utilisées dans le cadre de ce tutoriel, il est nécessaire de le faire dans un terminal (ligne de commande).

Différents buildouts sont disponibles sur internet et peuvent être téléchargés. En général ces buildouts sont utilisés pour tester et développer un module particulier. Certains buildouts que nous proposons sur le svn de CommunesPlone (ceux situés dans le dossier "buildout" et dont le nom commencent par "server") correspondent en fait à une installation de tous les produits proposés dans un type d'instance Zope du serveur central.


Ce tutoriel se base sur le cas concret du buildout communesplone.dev
 

Récupération d'un buildout sur internet

Comment récupérer un buildout sur internet ?


Pour récupérer un buildout du serveur subversion CommunesPlone, il est nécessaire dans un terminal d'entrer une commande similaire (la récupération de sources au moyen de la commande svn est expliquée dans le tutoriel "Comment télécharger et installer un produit de CommunesPlone") :

svn co http://svn.communesplone.org/svn/communesplone/buildout/communesplone.dev/ dossier_local

Le paramètre "http://..." correspond à l'url contenant les sources à récupérer.
Le paramètre "dossier_local" correspond à un nom de dossier (qui sera créé) dans lequel les sources seront copiées. Ce nom de dossier peut être choisi à voter guise.

Une fois le buildout récupéré, le fichier principal de configuration se trouve dans le dossier créé et se nomme "buildout.cfg".

Pour éditer ce fichier de configuration, vous pouvez utiliser un éditeur de texte ou taper la commande:
vi nom_fichier_config.cfg

Le buildout peut être à tout moment mis à jour avec la commande suivante (exécutée dans le dossier) :
svn up
Cela permet de copier localement les mises à jour (corrections, améliorations, ...) qui auraient été faites sur le serveur.
 

Contenu du fichier de configuration principal

Description du contenu du fichier buildout.cfg.


Le fichier buildout.cfg contient les paramètres qui seront utilisés pour installer les modules nécessaires.
Le texte affiché en gras correspond au contenu du fichier.
Les lignes précédées d'un # sont des lignes mises en commentaire.

Ci-dessous une partie du fichier :

[buildout]

extends =
    variable.cfg

Le paramètre "extends" permet d'inclure le contenu d'un autre fichier. Le fichier "variable.cfg" contient des informations plus variables comme le port de connexion, le nom de l'administrateur zope, son password, etc.

parts =
#    plone
#    zope2
    productdistros
    svnproducts
    omelette
    instance
    zopepy

Le paramètre "parts" décrit les différentes sections qui vont constituer la recette globale.
Les sections "plone" et "zope2" sont désactivées ici car nous choisissons de ne pas les réinstaller dans ce buildout mais plutôt d'utiliser les outils Zope et Plone déjà installés sur le système.
Lors de la récupération des produits mentionnés dans le fichier de configuration, chaque section définie dans "parts" correspondra à un sous-dossier créé dans le dossier parts sur le système de fichier.

eggs =
    elementtree
    appy.pod
    appy.shared

Le paramètre "eggs" permet de définir les produits python disponibles sous forme d'oeufs à partir du site http://pypi.python.org.

[plone]
recipe = plone.recipe.distros
urls = http://launchpad.net/plone/2.5/2.5.5/+download/Plone-2.5.5.tar.gz
nested-packages = Plone-2.5.5.tar.gz

[zope2]
recipe = plone.recipe.zope2install
url = http://www.zope.org/Products/Zope/2.9.8/Zope-2.9.8-final.tgz

Comme les sections zope2 et plone ont été désactivées dans le paramètre "parts", elles ne sont pas utilisées. Sinon la version 2.5.5 de Plone auraient été téléchargée et installée ainsi que la version 2.9.8 de Zope.

[productdistros]
recipe = plone.recipe.distros
urls =
    http://plone.org/products/atgooglemaps/releases/0.5.2/ATGoogleMaps-0.5.2.tar.gz
    http://plone.org/products/clouseau/releases/0.8.1/clouseau-0-8-1.zip
    http://www.zope.org/Members/shh/DocFinderTab/1.0.2/DocFinderTab-1.0.2.tar.gz
    http://plone.org/products/ploneformgen/releases/1.2.3/pfg-1-2-3-scriptablefields-1-1-1.tgz
...
nested-packages =
    pfg-1-2-3-scriptablefields-1-1-1.tgz

La section "productdistros" contient les produits Plone à télécharger sous forme de fichier distribuable (compressé). 

[svnproducts]
recipe = infrae.subversion
urls =
    http://svn.plone.org/svn/collective/ATPhoto/trunk ATPhoto
    http://svn.plone.org/svn/collective/CMFSin/trunk CMFSin
    http://svn.communesplone.org/svn/communesplone/contacts/trunk contacts
    http://svn.communesplone.org/svn/communesplone/Container/trunk Container
...

La section "svnproducts" contient les produits Plone à télécharger à partir d'un repository subversion.

[omelette]
recipe = collective.recipe.omelette
eggs = ${instance:eggs}
products = ${instance:products}

La section "omelette" permet de rassembler dans le dossier parts/omelette les différents produits Plone récupérés par différentes méthodes. En fait ce dossier contiendra des liens vers les produits se trouvant dans d'autres dossiers.

[instance]
products =
    ${buildout:directory}/products
    ${productdistros:location}
    ${svnproducts:location}
#    ${plone:location}
    /srv/Plone-2.5.5

La section "instance" contient des paramètres relatifs à l'instance zope qui sera créée. Le paramètre "products" reprend les différents dossiers qui contiendront les produits. Comme nous n'utilisons pas la section "plone", la ligne ${plone-location} est mise en commentaire. Le dossier contenant Plone est spécifié explicitement.
 

Contenu du fichier de configuration secondaire : variable.cfg

Description des paramètres complémentaires définis dans le sous-fichier de configuration

Le texte affiché en gras correspond au contenu du fichier.
Les lignes précédées d'un # sont des lignes mises en commentaire.

Ci-dessous une partie du sous-fichier :

[instance]
recipe = plone.recipe.zope2instance
#zope2-location = ${zope2:location}
zope2-location = /srv/zope298
#zope-conf = /path/to/zope.conf
#effective-user =
user = admin:admin
http-address = 8080
#debug-mode = on
verbose-security = on
zope-conf-additional =
     %include ${buildout:directory}/zope_add.conf
[zopepy]
#extra-paths = ${zope2:location}/lib/python
extra-paths = /srv/zope298/lib/python

Le paramètre "zope2-location" indique où Zope est installé. Dans notre cas, l'endroit est spécifié explicitement. 
Le paramètre "effective-user" permet d'indiquer un nom d'utilisateur qui sera utilisé pour exécuter le serveur. 
Le paramètre "user" permet d'indiquer un nom d'utilisateur admin et son mot de passe. Ce dernier peut être changé une fois l'instance créée.
Le paramètre "http-address" indique le port utilisé pour accéder au serveur web.
Le paramètre "zope-conf-additional" permet d'indiquer des lignes complémentaires qui seront rajoutées au fichier de configuration principal "parts/instance/etc/zope.conf". Dans notre cas, la ligne %include permet d'indiquer un nom de sous-fichier qui sera inclu dans le fichier zope.conf. 
 

Fichier de configuration complémentaire de Zope : zope_add.conf

descriptif du fichier configuration de zope


Le fichier de configuration complémentaire "zope_add.conf" est ajouté au fichier généré "parts/instance/etc/zope.conf". Ce fichier permet d'inclure par exemple la définition de mount points.

Ci-dessous une partie du fichier :

%define FILESTORAGE /path/var/filestorage
<zodb_db xxx>
    <filestorage>
      path $FILESTORAGE/xxx.fs
    </filestorage>
    mount-point /xxx
</zodb_db>

La ligne contenant %define doit être adaptée : le chemin "/path" doit être remplacé par le chemin dans lequel le buildout a été récupéré. 
 

Exécuter le buildout

Comment lancer la récupération automatique des modules spécifiés ?

Lorsque les fichiers de configuration ont été éventuellement modifiés, il est nécessaire d'exécuter le buildout afin d'installer automatiquement tous les modules spécifiés.


Les différentes commandes spécifiées ci-dessous nécessitent python dans une version adéquate pour Zope et Plone. Par exemple Python 2.4.4 pour Zope 2.9.8. Dans la machine virtuelle, python 2.4.4 a été installé dans /srv/python244. Nous allons utiliser cetet version pour exécuter les scripts.

1) Installer l'utilitaire python easy_install
Après avoir téléchargé ez_setup.py, exécuter :
/srv/python244/bin/python ez_setup.py

2) Initialiser le buildout
Se placer dans le dossier où le buildout a été téléchargé et exécuter :
/srv/python244/bin/python bootstrap.py

3) Exécuter le buildout
Cette commande doit être lancée à chaque fois qu'un fichier de configuration est modifié.
bin/buildout


Si une modification est effectuée dans un fichier de configuration du buildout, il est nécessaire d'exécuter à nouveau celui-ci avec la commande bin/buildout 
 

Démarrer le serveur Zope

Lancer l'instance Zope installée


Afin de lancer l'instance, il est nécessaire de se placer dans le dossier du buildout et d'exécuter la commande suivante :

bin/instance fg

Le paramètre "fg" exécute l'instance en avant-plan. D'autres paramètres peuvent être utilisés (voir "bin/instance help").

Pour accéder à l'instance Plone, ouvrir un navigateur internet et taper l'adresse suivante :

http://localhost:8080/manage_main

Le nom de l'utilisateur est : admin
Le mot de passe : admin
 


Powered by Plone CMS, the Open Source Content Management System