Démarrage rapide avec Zope 3
A la fin de ce chapitre, vous devriez pouvoir lancer une application web "hello world" avec Zope 3. D'abord vous allez installer et lancer le serveur applicatif zope. Ensuite vous allez découvrir l'interface d'administration de Zope (Zope Management Interface, ZMI). A la fin vous allez créer une petite application.
Ce texte est une traduction libre d'une partie du livre "Zope Guide" écrit par une communauté de développeur Zope. L'originial
est disponible sur : http://kpug.zwiki.org/ZopeGuide. Conformément à la licence du texte original (je déteste la CC pour ça...), je dois citer l'auteur, qui est : "Zope 3 Distilled
Contributors (http://kpug.zwiki.org/ZopeGuideContributors)". Notons que malgrès l'attribution de la licence, ce texte reviens vraiment à Baiju M. qui en est le véritable auteur.
| Author: | Zope 3 Distilled Contributors (http://kpug.zwiki.org/ZopeGuideContributors) |
| Version: | 0.1.6 |
| Date: | 6 septembre 2006 |
| Copyright: | Creative Commons Attribution-ShareAlike 2.5 License |
| Traduction: | Benjamin Poulain < ikipou AT (@) gmail.com > |
Installation
La seule dépendance de Zope 3 est Python 2.4. Zope 3 peut être installé sur toutes les plateformes principales depuis les sources et des packages binaire sont disponible pour MS Windows. Les distributions majeure de GNU/Linux inclue Zope 3.
GNU/Linux
Téléchargez Zope 3.3 depuis http://dev.zope.org/Products/Zope3. Assurez vous d'avoir Python 2.4.2 (ou plus) installé.
Pour l'installez (en root) :
# tar zxvf Zope-3.3.0.tgz
# cd Zope-3.3.0
# ./configure --with-python=/chemin/vers/python2.4
# make install
Remplacez /chemin/vers/python2.4 par le chemin réel vers votre interpréteur Python. Si vous avez installé Python depuis les sources, il devrait se trouver ddans /usr/local/bin/python2.4, sinon, généralement dans /usr/bin/python2.4.
MS Windows
La meilleure façon d'installer Zope 3 sous MS Windows est d'utiliser l'installeur exécutable.
Créer une instance
Zope 3 utlises des instances pour contenir les informations relative à un serveur (d'un ensemble de serveur). Pour créer une instance, allez dans le repertoire où vous avez installé Zope (sous MS Windows vous le trouverez dans /path/to/python/Scripts/) et lancez la commande mkzopeinstance. Vous devriez obtenir quelque chose comme ceci :
$ cd /usr/local/Zope-3.3.0/bin
$ ./mkzopeinstance
Please choose a directory in which you'd like to install Zope
'instance home' files such as database files, configuration files,
etc.
Directory: /home/ikipou/myzope
Please choose a username for the initial administrator account.
This is required to allow Zope's management interface to be used.
Username: admin
Please select a password manager which will be used for encode the password of
the initial administrator account.
1. Plain Text
2. MD5
3. SHA1
Password Manager Number [1]: 3
'SHA1' password manager selected
Please provide a password for the initial administrator account.
Password:
Verify password:
Après avoir créé l'instance, allez dans le repertoire de l'instance et lancez zope :
$ cd /home/ikipou/myzope
$ ./bin/runzope
Vous devriez obtenir quelque chose comme ceci :
------
2006-09-06T11:03:19 INFO root -- HTTP:localhost:8080 Server started.
Hostname: localhost
Port: 8080
------
2006-09-06T11:03:19 INFO root Startup time: 2.648 sec real, 2.270 sec CPU
Si vous obtenez une erreur, vérifier que le port 8080 n'est pas déjà utilisé par un autre programme (squid souvent), dans ce cas, stopez ce programme et relancez Zope.
La racine de l'instance
Regardons maintenant de plus prêt de repertoire de l'instance, d'abord lisez le README.txt. Ce dossier peut être considéré comme votre espace de travail Zope.$ls * -F
README.txt
bin:
debugzope* i18nmergeall* importchecker* runzope* static-apidoc* zopeservice.py*
debugzope.bat* i18nmergeall.bat* importchecker.bat* runzope.bat* test* zpasswd*
i18nextract* i18nstats* pyskel* scriptzope* test.bat*
i18nextract.bat* i18nstats.bat* pyskel.bat* scriptzope.bat* zopectl*
etc:
ftesting-base.zcml overrides.zcml securitypolicy-ftesting.zcml site.zcml zope.conf
ftesting.zcml package-includes/ securitypolicy.zcml ssh_host_rsa_key
overrides_ftesting.zcml principals.zcml server.pem zdaemon.conf
lib:
python/
log:
access.log README.txt z3.log
var:
Data.fs Data.fs.index Data.fs.lock Data.fs.tmp README.txt
Comme vous pouvez le constater, le repertoire bin contient quelques scripts comme runzope, test, etc. Certains script sont spécifique à MS Windows.
Zope sauve toutes les données dans le dossier var, c'est le dossier a sauver régulièrement dans vos backup. Si var/Data.fs est manquant (la base de donnée), il sera automatiquement recréé vierge lorsque vous lancerez Zope a nouveau.
Dans etc vous pouvez trouver les fichiers de configurations. Dans etc/zope.conf vous pouvez changer le numéro de port utilisé par les différents serveurs.
Vos applications Zope 3 se trouverons dans le dossier lib/python. Par défaut ce dossier ne se trouvera pas dans votre chemin de recherche Python (PYTHONPATH). Vous pouvez aussi placer vos packages dans n'importe quel PYTHONPATH valide.
ZMI
Si vous ouvrez votre navigateur et allez sur http://localhost:8080 you verrez ZMI (Zope Management Interface).
Allez y et cliquez sur le lien "[Connexion]" dans le coin supérieur droit. Entrez le nom et le mot de passe que vous avez définit à la création de l'instance. Maintenant cliquez sur "[racine]" dans le cadre "Navigation" à gauche. Essayez maintenant d'ajouter des objets de contenu ("content object" en relation avec "content type", nous y reviendrons). Notez comment les objets peuvent être organsés en hiérarchie à l'aide de "dossier" qui ne sont que des objets spéciaux qui servent de conteneur pour d'autres objets.
Il n'y a rien de spécial dans Zope pour ZMI, c'est juste une skin pour Zope 3. Vous pouvez le modifier selon vos désir, ou le remplacer complètement.
Quand vous aurez exploré ZMI, retournez dans la fenêtre où vous avez lancé runzope, vous pouvez remarquer que chaque requête de votre navigateur est rapportée ici. Appuyez sur Control + C pour arrêter Zope.
Hello World
Cette section montre les étapes pour créer rapidement une application "Hello world". Tout d'abord allez dans votre instance de Zope 3 et créez y un package :
$ cd /home/ikipou/myzope/lib/python
$ mkdir hello
$ cd hello
$ touch __init__.py
Tout le code Python pourrait se trouver dans "__init__.py" mais pour suivre les conventions nous allons créer un autre module. Pour des projets plus important vous pouvez créer un package browser mais pour de plus petites applications un module browser.py est suffisant :
$ touch browser.py
Maintenant nous allons enregistrer le packages hello. Créez le fichier /home/ikipou/myzope/etc/package-includes/hello-configure.zcml et mettez-y les lignes suivantes :
<configure
xmlns="http://namespaces.zope.org/zope">
<include package="hello" />
</configure>
Maintenant écrivez le code suivant dans le module browser.py:
from zope.publisher.browser import BrowserView
class HelloView(BrowserView):
def __call__(self):
return """
<html>
<head>
<title>Hello World</title>
</head>
<body>
Hello World
</body>
</html>
"""
Finallement nous avons besoins d'un fichier de configuration pour enregistrer la vue et ses permissions de sécurité, configure.zcml.
$ touch configure.zcml
La configuration enregistre la page sous le nom hello, elle utilise les permissions publique et utilise la classe python HelloView:
<configure
xmlns="http://namespaces.zope.org/browser">
<page
for="*"
name="hello"
permission="zope.Public"
class=".browser.HelloView"
/>
</configure>
Lancez Zope 3 (/home/ikipou/myzope/bin/runzope). Pour voir l'application fonctionner, visitez http://localhost:8080/hello.

