Utilisation d'un buildout
Note: Ceci est une impression contenant toutes les pages du Tutoriel sur une seule page. La version paginée est disponible ici.
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.
Définition d'un cache pour buildout
A chaque exécution d'un buildout, des fichiers sont récupérés sur internet.
Il est intéressant lors de l'utilisation de multiples buildout de centraliser les téléchargements dans un dossier précis (rapidité, économie d'espace, intégrité).
Pour cela, effectuer les opérations suivantes:
cd
mkdir .buildout
créer le fichier .buildout/default.cfg et y mettre les lignes suivantes (voir le fichier default.cfg):
[buildout]
eggs-directory = /srv/zinstances/cache/eggs
download-cache = /srv/zinstances/cache/downloads
Il ne faut pas oublier de créer les dossiers de cache.
mkdir /srv/zinstances
mkdir /srv/zinstances/cache
mkdir /srv/zinstances/cache/eggs
mkdir /srv/zinstances/cache/downloads
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.
Attention: veuillez noter que contenu indiqué ici est un exemple. Les buildouts récupérés sur le svn peuvent être différents !!
Ci-dessous une partie du fichier :
[buildout]
extends =
xxx.cfg
Le paramètre optionnel "extends" permet d'inclure le contenu d'un autre fichier.
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" peuvent être désactivées dans certains cas.
Lors de la récupération des produits mentionnés dans le fichier de configuration, la plupart des sections définies dans "parts" correspondront à 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.
[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]
...
#effective-user =
user = admin:admin
http-address = 8080
#debug-mode = on
verbose-security = on
zope-conf-additional =
%include ${buildout:directory}/zope_add.conf
La section "instance" contient des paramètres relatifs à l'instance zope qui sera créée.
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 cette 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