Utilisation d'un buildout
Note: Return to tutorial view.
Introduction
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
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
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
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
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
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
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