Comment installer une plate-forme Wecena ?

Wecena est une entreprise qui organise des chantiers de mécénat de compétences pour informaticiens. Mais Wecena, c’est aussi un ensemble de logiciels libres (et open source et gratuits, licence AGPL) qui permettent d’organiser des chantiers de volontariat, de mécénat ou de bénévolat de compétences pour mettre des professionnels au service de grandes causes. Vous pouvez librement installer ces logiciels sur vos propres serveurs pour mettre en place des plates-formes réunissant entreprises et associations autour de projets de solidarité. Les logiciels Wecena sont déjà :

  • utilisés par Wecena dans le secteur informatique
  • installés par Investime pour organiser des missions professionnelles de solidarité dans les métiers de l’assurance (soutien à des institutions de micro-finance en Afrique notamment)
  • étudiés par Antoine G. pour organiser des chantiers de mécénat de compétences dans certains métiers du conseil et des services

Voici un copier-coller de mes derniers échanges par email avec Antoine (avec sa permission). Ceci peut vous aider à savoir comment installer votre propre plateforme Wecena. Pour pouvoir suivre ces échanges (et installer Wecena sur vos serveurs), il faut avoir les compétences suivantes :

  • notions d’administration systèmes linux
  • expérience en développement Web objet, si possible sur un langage open source

From Antoine G. to Jean M.

[…] Nous serions intéressé de tester la plateforme Wecena que tu as mise en place.

Pour cela, [j’ai reçu un mail] sur lequel tu indiques l’adresse de ta plateforme de test avec quelques comptes ainsi que les étapes nécessaires à l’installation de Wecena sur un autre serveur.

Je t’avouerai que sur ce deuxième point j’ai fait un checkout sur mon serveur debian, et regarder quelque peu le lien sur la configuration et le lancement d’un buildout de Plone mais tout ceci n’est pas clair pour moi encore. Si comme tu le proposais, tu pouvais me transmettre un exemple de buildout comme point de départ, avec un mini tuto, ça pourrait grandement me / nous rendre service ;-)

Et à vrai qu’est-ce exactement qu’un buildout, une sorte de Makefile ?

J’ai déjà python 2.4.4 d’installer et j’ai ajouté quelques packages qui pourraient m’être utiles « plone3-site » et « zope-plone3 » (à peu près similaire j’ai l’impression).

Je te remercie par avance, pour l’aide que tu pourras m’apporter en temps voulu.

Quoiqu’il en soit, je continue de potasser le tuto plone sur la création de bluidout de mon côté…

From Jean M. to Antoine G.

Le 22/12/2010 23:43, Antoine G. a écrit :

> Je t’avouerai que sur ce deuxième point j’ai fait un checkout sur mon
> serveur debian, et regarder quelque peu le lien sur la configuration et
> le lancement d’un buildout de Plone mais tout ceci n’est pas claire pour
> moi encore.
> Si comme tu le proposais, tu pouvais me transmettre un exemple de
> buildout comme point de départ, avec un mini tuto, ça pourrait
> grandement me / nous rendre service ;-)

La première chose que tu devrais faire, c’est sans les produits Wecena : essaie d’installer Plone 3.3.5 via son buildout en suivant ce tutoriel
http://icp.ge.ch/sem/plone-dip/le-pool-plone-dip/icp-zope-technique/installation-plone3-buildout

> Et à vrai qu’est-ce exactement qu’un buildout, une sorte de Makefile ?

Oui, en quelque sorte.

C’est un ensemble de fichiers de config (habituellement en « .cfg ») qui indiquent au logiciel buildout quelles sont les dépendances et paramétrage de déploiement d’un logiciel Python (par exemple de Zope et Plone).

Quand tu télécharges Plone sur plone.org, l’installeur te déploie Plone avec les options par défaut. Tu peux modifier ces options dans les fichiers.cfg puis mettre à jour ton déploiement en lançant la commande bin/buildout A ce moment-là, buildout va télécharger, paramétrer et installer tous les composants logiciels spécifiés dans ses fichiers de config.

Le tutoriel ci-dessus te permet d’installer directement Plone via buildout sans passer par un package de ton OS ni par l’installeur packagé sur plone.org. Il te permet de bien voir toutes les étapes d’installation.

> J’ai déjà python 2.4.4 d’installer et j’ai ajouté quelques packages qui
> pourraient m’être utiles « plone3-site » et « zope-plone3 » (à peu près
> similaire j’ai l’impression).

Si tu peux prendre python 2.4.6, ce serait mieux (pas sûr que Plone 3.3.5 marche avec python 2.4.4). Au besoin, tu télécharges la source et tu recompiles simplement.

Mais, pour zope et plone, oublie les package debian et installe plutôt en suivant le tutoriel ci-dessus. En effet, c’est buildout qui s’occupera d’aller chercher les dépendance dont tu as besoin et de les paramétrer comme il faut.

> Je te remercie par avance, pour l’aide que tu pourras m’apporter en
> temps voulu.

Une fois que tu auras réussi l’install d’un plone avec buildout en suivant le tuto, je t’indiquerai comment y ajouter les produits wecena comme dépendances.

> Quoiqu’il en soit, je continue de potasser le tuto plone sur la création
> de bluidout de mon côté…

OK

N’hésite pas à me faire signe au moment où tu coinces.

From Antoine G. to Jean M.

Je reviens vers toi pour te faire un petit point d’avancement sur mon installation de plone 3, à travers le tuto que tu m’as transmis ( http://icp.ge.ch/sem/plone-dip/le-pool-plone-dip/icp-zope-technique/installation-plone3-buildout ).

Dans l’ensemble ça c’est bien passé sauf que les liens des productdistros étaient pour la moitié mort… Je suis allé chercher les fichiers à la mano sur d’autres sites mais je pense que c’est bon de ce côté là.

http://plone4artists.org/products/plone4artistsvideo/releases/1.1/Plone4ArtistsVideo-1.1b1.tar.gz *DEAD*

*NEW –> http://dist.serverzen.com/misc/Plone4ArtistsVideo-1.1b1.tar.gz*

http://downloads.sourceforge.net/julius/ATGoogleVideo-0-6.tar.gz

http://plone.org/products/cmfnotification/releases/2.0/cmfnotification-2-0-rc1-tar.gz *DEAD

NEW –> http://plone.org/products/cmfnotification/releases/2.0/cmfnotification-2-0-tar.gz –> rename to cmfnotification-2-0-rc1-tar.gz*

http://plone.org/products/mailservices/releases/0.5/armailservices-0-5.tgz

http://plone.org/products/ploneldap/releases/1.0/PloneLDAP-bundle-1.0rc3.tar.gz

http://plone4artists.org/products/plone4artistscalendar/releases/1.1/Plone4ArtistsCalendar-1.1b1-plone3.0-bundle.tar.gz *DEAD

NEW –> http://icp.ge.ch/sem/plone-dip/utiliser-plone-efficacement/gerer-mon-plone/produits/produits-infos-admin/produits-fichiers-utiles/Plone4ArtistsCalendar-1.1b1-plone3.0-bundle.tar.gz/at_download/file –> rename to Plone4ArtistsCalendar-1.1b1-plone3.0-bundle.tar.gz

* http://weblion.psu.edu/static/products/cssmanager/cssmanager-0.8.tar.gz

Lors de la première exécution du ./bin/buildout j’ai rencontré pas mal de messages d’erreur. En voici quelques exemples :

SyntaxError: ‘return’ outside function

File « build/bdist.linux-i686/egg/Products/Ploneboard/skins/ploneboard_scripts/comment_redirect_to_conversation.py »,

line 33

return printed

SyntaxError: ‘return’ outside function

File « /home/ploneTest/virtualplone/ploneproject/eggs/tmplebqDf/Products.NuPlone-1.0b3-py2.4.egg/Products/NuPlone/skins/nuplone_templates/livesearch_reply.py », line 146

return ‘\n’.join(output).encode(site_encoding)

SyntaxError: ‘return’ outside function

Modules/LDAPObject.c:1228: warning: return makes pointer from integer

without a cast

Modules/LDAPObject.c:1185: warning: unused variable ânewpwâ

Modules/LDAPObject.c:1183: warning: unused variable âoldpwâ

Modules/LDAPObject.c:1181: warning: unused variable âuserâ

error: Setup script exited with error: command ‘gcc’ failed with exit status 1

An error occured when trying to install python-ldap 2.3.12. Look above this message for any errors that were output by easy_install.

While:

Installing instance.

Getting distribution for ‘python-ldap>=2.0.6’.

Error: Couldn’t install: python-ldap 2.3.12

Après l’exécution des actions suivantes, j’ai finit par avoir l’exécution d’un buildout complet propre :

aptitude install libldap2-dev

aptitude install libsasl2-dev

aptitude install libssl-dev

cp /var/lib/zope2.10/instance/plone-site/var/Data.fs var/filestorage/

aptitude install python-ldap

Résultat :

./bin/buildout

Updating zope2.

Updating fake eggs

Updating productdistros.

Updating instance.

Updating zopepy.

Malheureusement quand je lance l’instance du serveur ça ne fonctionne pas, il ne trouve pas une librairie :

./bin/instance fg

File « /home/ploneTest/virtualplone/ploneproject/eggs/Plone-3.3.5-py2.4.egg/Products/CMFPlone/browser/ploneview.py », line 12, in ?

from Products.CMFPlone import utils

File « /home/ploneTest/virtualplone/ploneproject/eggs/Plone-3.3.5-py2.4.egg/Products/CMFPlone/utils.py », line 6, in ?

from PIL import Image

ImportError: No module named PIL

Voici la liste des paquets python installés de mon côté :

python

python2.4

python2.4-dev

python2.4-minimal

python2.5

python2.5-minimal

python-central

python-docutils

python-imaging

python-imaging-tk

python-ldap

python-minimal

python-newt

python-selinux

python-semanage

python-sepolgen

python-support

python-tk

python-twisted

python-twisted-conch

python-twisted-core

python-twisted-words

Il souhaiterait peut être avoir le package python2.4-imaging, malheureusement il m’installe forcément la dernière version python-imaging… Si tu as des pistes je suis preneur ;-)

Sinon une fois que l’on aura réussi à faire tourner le serveur, je serais intéressé comme tu l’as proposé de procéder à l’installation de wecena.

Pour ma curiosité personnelle et pour nourrir mon amour de plone, pourrais-tu me dire ce qui t’as guidé vers ce CMS ? Car je vois dans l’étude des CMS jointe en PJ ( http://www.waterandstone.com/book/2010-open-source-cms-market-share-report )qui a été faîtes sur l’année 2010, que celui-ci est loin d’être le plus répandu. Par contre je remarque que pas mal de livres sont sorties dessus, il doit avoir certains atouts majeurs…

Je te remercie pour l’aide que tu pourras m’apporter.

From Jean M. to Antoine G.

> Lors de la première exécution du ./bin/buildout j’ai rencontré pas mal
> de messages d’erreur. En voici quelques exemples :
> SyntaxError: ‘return’ outside function
> File
> « build/bdist.linux-i686/egg/Products/Ploneboard/skins/ploneboard_scripts/comment_redirect_to_conversation.py »,
> line 33
> return printed
>
> SyntaxError: ‘return’ outside function
> File
> « /home/ploneTest/virtualplone/ploneproject/eggs/tmplebqDf/Products.NuPlone-1.0b3-py2.4.egg/Products/NuPlone/skins/nuplone_templates/livesearch_reply.py »,
> line 146
> return ‘\n’.join(output).encode(site_encoding)
> SyntaxError: ‘return’ outside function

Tu peux ignorer sans risque les messages « SyntaxError: ‘return’ outside function » comme expliqué ici :
http://plone.org/documentation/error/syntaxerror-return-outside-function

> Modules/LDAPObject.c:1228: warning: return makes pointer from integer
> without a cast
> Modules/LDAPObject.c:1185: warning: unused variable ânewpwâ
> Modules/LDAPObject.c:1183: warning: unused variable âoldpwâ
> Modules/LDAPObject.c:1181: warning: unused variable âuserâ
> error: Setup script exited with error: command ‘gcc’ failed with exit
> status 1
> An error occured when trying to install python-ldap 2.3.12. Look above
> this message for any errors that were output by easy_install.
> While:
> Installing instance.
> Getting distribution for ‘python-ldap>=2.0.6’.
> Error: Couldn’t install: python-ldap 2.3.12
>
> Après l’exécution des actions suivantes, j’ai finit par avoir
> l’exécution d’un buildout complet propre :
> aptitude install libldap2-dev
> aptitude install libsasl2-dev
> aptitude install libssl-dev
> cp /var/lib/zope2.10/instance/plone-site/var/Data.fs var/filestorage/
> aptitude install python-ldap

OK Bravo.

> résultat :
> ./bin/buildout
> Updating zope2.
> Updating fake eggs
> Updating productdistros.
> Updating instance.
> Updating zopepy.

Super.

> Malheureusement quand je lance l’instance du serveur ça ne fonctionne
> pas, il ne trouve pas une librairie :
> ./bin/instance fg
>
> File
> « /home/ploneTest/virtualplone/ploneproject/eggs/Plone-3.3.5-py2.4.egg/Products/CMFPlone/browser/ploneview.py »,
> line 12, in ?
> from Products.CMFPlone import utils
> File
> « /home/ploneTest/virtualplone/ploneproject/eggs/Plone-3.3.5-py2.4.egg/Products/CMFPlone/utils.py »,
> line 6, in ?
> from PIL import Image
> ImportError: No module named PIL
> Il souhaiterait peut être avoir le package python2.4-imaging,
> malheureusement il m’installe forcément la dernière version
> python-imaging…
> Si tu as des pistes je suis preneur ;-)

Chez moi, c’est buildout qui s’occupe d’aller chercher et installer cette bibliothèque.

Pour cela, dans les fichiers .cfg de ton buildout, tu cherches la section [buildout] dans laquelle se trouve la liste de tes dépendances sous la forme d’une variable « eggs =  » avec la liste des dépendances. Dans cette liste, tu ajoutes :

PILwoTK

Si buildout se plaint de ne pas trouver cette bibliothèque, alors tu lui ajoutes quelques URL à partir desquelles il pourra aller fouiller. Ca se passe aussi dans la section [buildout] sous la forme d’une variable find-links :

find-links =
http://dist.plone.org/
http://download.zope.org/ppix/
http://download.zope.org/distribution/
http://effbot.org/downloads/
http://code.google.com/p/html5lib/downloads/list

C’est dans le dépôt http://download.zope.org/distribution/ qu’on trouve PILwoTK (= Python Imaging Library without its TK dependency).

Si ça ne marche pas, tu peux aussi compiler en récupérant le tarball ici : http://www.pythonware.com/products/pil/

> Sinon une fois que l’on aura réussi à faire tourner le serveur, je
> serais intéressé comme tu l’as proposé de procéder à l’installation de
> wecena.

Il faut que je prenne le temps de faire une distribution de mon buildout. Allez hop, c’est fait :

http://svn.gna.org/viewcvs/wecena/trunk/wecena.buildout/

Mais il faudra encore que je partage deux produits d’intégration :

wecena.policy
wecena.theme

Peut-être lundi prochain ?

> Pour ma curiosité personnelle et pour nourrir mon amour de plone,
> pourrais-tu me dire ce qui t’as guidé vers ce CMS ? Car je vois dans
> l’étude des CMS jointe en PJ qui a été faîtes sur l’année 2010, que
> celui-ci est loin d’être le plus répandu. Par contre je remarque que pas
> mal de livres sont sorties dessus, il doit avoir certains atouts majeurs…

Je n’ai pas fait d’analyse comparative complète récemment. J’en ai fait à certains moments dans mon parcours. Ton étude en pièce-jointe est super intéressante (notamment la méthodo qui m’a l’air très bien). Après, il faut voir comment tu l’utilises.

Le premier facteur pour choisir, à mon avis, en tant que développeur, c’est le langage. Développer en python me semble plus productif qu’en Java. Et conceptuellement plus satisfaisant (plus « professionnel » ?) que PHP. Ceci dit c’est une affaire de goût. Et la communauté python compte des développeurs d’un niveau vraiment excellents qui se mettent au service des autres. Donc il y a déjà un facteur un peu irrationnel qui m’a amené vers python et sa communauté. Concrètement, mon parcours en matière de langages de prédilection est le suivant :

  • Turbo Pascal quand j’étais au lycée (jusqu’en prépa en 93)
  • un peu de VB à l’école (94/97) mais surtout du Delphi
  • ensuite, de 98 à 99 je me suis tourné vers Perl car c’était, parmi les langages du libre, celui qui avaient le plus de bibliothèques orientées Internet (et avec une bonne orientation objet)
  • de 99 à 2005, j’ai encadré des équipes qui faisaient de l’ASP, du PHP et un peu de J2EE mais, pendant ce temps j’ai découvert python, plus « propre » et maintenable que Perl mais avec les mêmes avantages (grosse communauté et bibliothèques, à fond dans le Net, agile, dynamic typing, orienté objet) ; et c’est dans la communauté python que j’ai vu apparaître des produits et framework mûrs pour livrer ce que mes équipes ASP/PHP réinventaient de manière artisanale à chaque projet,
  • de 2005 à 2007, pour le boulot, j’ai fait du J2ME, J2SE et J2EE mais, franchement, quelle lourdeur de développer en Java quand on vient de python… j’aurais pu virer ruby (encore plus agile que python mais plus jeune) ou me mettre à PHP qui avait gagné en maturité objet

Donc, pour moi :

  • J2EE = ok mais lourd
  • ruby = ok mais « jeune »
  • Perl = ok mais peu maintenable (plus artistique…)
  • PHP = ok mais une communauté de niveau inégal (beaucoup de temps perdu avec des débutants)
  • Python = ok mais moins populaire

Ensuite, au niveau framework applicatif pour le web, conceptuellement, l’idée de publier des objets m’a séduit dès le début (Zope Object Publishing Environment) alors que le paradigme de l’époque (2000/2005) restait les applis sur mesure sur base relationnelle (LAMP côté libre). C’est quand-même plus confortable, pour développer, d’accéder « nativement » à une persistence objet (base de données objet) plutôt que de gérer des accès à des données relationnelle ou de devoir gérer une surcouche de mapping objet-relationnel.

Si on compare les CMS Web PHP comme Drupal ou Joomla d’une part, et Plone d’autre part, les avantages spécifiques de Plone résident dans sa couche de sécurité et dans son moteur de workflow (qui est essentiel dans la gestion de la sécurité). Il semble que ces aspects sécurité + workflow sont moins bien pris en compte dans Drupal et Joomla que dans Plone. C’est pourquoi Plone a une réputation de meilleur produit pour les besoins professionnels impliquant des règles de sécurité fines (et compliquées) et des workflows spécifiques, avec une gestion des rôles complexes.

Drupal serait plus à son aise pour les besoins communautaires « simples » et « variés » alors que Plone serait plus à son aise pour les besoins professionnels avec des processus métiers complexes. Les produits J2EE couvrent sans doute des besoins encore plus « pro » et des processus métiers encore plus complexes et  nécessitant plus de rigueur, mais au prix d’une lourdeur énorme.

Mais on parle bien de gestion de contenu, là.

A propos de la popularité des CMS, il faut bien voir ce qu’on compare. C’est normal que WordPress (PHP) soit astronomiquement plus populaire que Plone (python) puisqu’il ne fournit que 10% des fonctionnalités d’un Plone. De plus, Plone impose un hébergement spécifique (serveur dédié) alors que WordPress ou Drupal peuvent se satisfaire d’un hébergement partagé. Donc, si tu installes du Plone, c’est que tu as une bonne raison.

Mais si on parle de développement d’applications innovantes et spécifiques, de type crowdsourcing par exemple, alors j’irais regarder du côté de framework comme Django en python.

J’ai aussi l’impression que le développeur python « moyen » est plus à l’aise avec des concepts intéressants de développement que le développeur PHP « moyen ». Il y a plus de choses conceptuellement stimulantes dans la communauté python que PHP.

Par exemple, quelle est la maturité de telle ou telle communauté en matière d’outils et pratiques de Test-Driven Development, etc.

> Je te remercie pour l’aide que tu pourras m’apporter.

De rien.

Je t’ai répondu un peu en vrac ci-dessus alors n’hésite pas à préciser tes questions.

From Antoine G. to Jean M.

Merci pour tes indications précieuses. Tu as débloqué la situation, nous avons maintenant une instance zope/plone qui tourne.

Pour ce qui est du buildout de wecena, j’ai déjà fait un checkout du svn pour récupérer la distribution que tu as faite. Quand je l’exécute j’ai l’erreur suivante :

While:
  Initializing.
Error: The specified download cache:
'/home/jean/Desktop/techno/buildouts/.shared/downloads'
Doesn't exist.

Je pense que je pourrais commenter la partie faisant référence à ce dossier ‘downloads’ en local sur ton serveur car il n’est peut être pas nécessaire mais comme tu le disais il faut encore que je récupère wecena.policy et wecena.theme

Je te remercie pour ton analyse sur le marché des CMS avec en trame de fond les grandes lignes de ton parcours. Tout cela est fort enrichissant et si tu
conçois le développement python/plone à contrario de la lourdeur de Java, j’ai hâte de voire ça ;).

Maintenant que je vais bientôt pouvoir modifier / créer du contenu avec plone, as-tu un livre de chevet à me conseiller ? Je pense déjà regarder la doc du côté du site français de plone : http://plone.org/countries/fr/index_html

J’ai regardé le comparatif que tu m’as envoyé par la suite entre les 4 CMS (wordpress, drupal, joomla et plone), qui est encore un bon point pour plone. D’ailleurs en quoi la sécurité sur plone est-elle mieux assurée ? Est-ce simplement par un meilleur degré de précision sur la gestion des droits utilisateurs ?

From Jean M. to Antoine G.

Le 23/01/2011 03:47, Antoine G.  a écrit :

> Merci pour tes indications précieuses. Tu as débloqué la situation, nous
> avons maintenant une instance zope/plone qui tourne :
>
> http://alterformation.org:8080/

Bravo !

> Pour ce qui est du buildout de wecena, j’ai déjà fait un checkout du svn
> pour récupérer la distribution que tu as faite. Quand je l’exécute j’ai
> l’erreur suivante :
>
> While:
> Initializing.
> Error: The specified download cache:
> /home/jean/Desktop/techno/buildouts/.shared/downloads’
> Doesn’t exist.

Tu dois créer sur ton disque un répertoire dans lequel seront stockés les dépendances au fur et à mesure qu’elles sont téléchargées (cache). Et tu en indiques le chemin dans un fichier de buildout en lieu et place du chemin indiqué dans ce message d’erreur.

> Je pense que je pourrais commenter la partie faisant référence à ce dossier
> ‘downloads’ en local sur ton serveur car il n’est peut être pas nécessaire
> mais comme tu le disais il faut encore que je récupère wecena.policy et
> wecena.theme

C’est juste un cache local. C’est utile surtout si tu installes plusieurs buildout qui partageront le même cache. Si tu commentes cette instruction, buildout utilisera je ne sais plus quel chemin pour y stocker ses téléchargements.

> Maintenant que je vais bientôt pouvoir modifier / créer du contenu avec
> plone, as-tu un livre de chevet à me conseiller ? Je pense déjà regarder la
> doc du côté du site français de plone :
> http://plone.org/countries/fr/index_html

Ce bouquin-ci est très bien pour les techniques utilisés pour le développement dans Plone 3 : http://professional-plone-book.packtpub.com/

> J’ai regardé le comparatif que tu m’as envoyé par la suite entre les 4 CMS
> (wordpress, drupal, joomla et plone), qui est encore un bon point pour
> plone. D’ailleurs en quoi la sécurité sur plone est-elle mieux assurée ?
> Est-ce simplement par un meilleur degré de précision sur la gestion des
> droits utilisateurs ?

C’est l’une des deux raisons. La deuxième raison est plus fondamentale (ce qui en fait la première…) : Plone s’appuie sur la Zope Object DataBase (ZODB). C’est une base objet. Le caractère sécuritaire de cette base objet tient à ce que tout accès à un objet stocké fait l’objet d’un contrôle d’accès très fin et applicatif. Ce n’est pas comme dans le cas classique du développement avec une base relationnelle. Habituellement, avec une base relationnelle, tu as une chaîne de connexion (login + mot de passe) unique utilisée quasiment partout dans ton code. Ton code accède partout comme il veut à toute ta base de données. Au contraire,
avec la ZODB, l’accès à chaque objet se fait sous le contrôle des permissions associées à l’utilisateur qui s’est authentifié. Autrement dit, il ne s’agit d’une base de données par-dessus laquelle on a plaqué une couche de sécurité indépendante mais d’un système d’accès sécurisé aux données qui est inclus dans la base de données (ce qui a pour inconvénient un côté un peu monolithique de cette base).

Donc non seulement le contrôle d’accès est plus fin (d’innombrables permissions qui se combinent les unes aux autres) mais aussi il est plus « profond ».

Mais je te réponds un peu « de mémoire » donc je me trompe peut-être un peu sur les points ci-dessus. Les autres raisons pour lesquels on lit que Zope est sûr :

  • comme ce n’est pas une base SQL, la ZODB n’est pas soumise au risque d’injection SQL qui est une cause fréquente de failles dans les systèmes relationnels,
  • comme Zope est une techno moins populaire, il y a moins d’intérêt pour un pirate à l’étudier (?)
  • comme Plone fournit des fonctionnalités qui plaisent plus aux entreprises qu’aux bricoleurs (workflow, contrôle d’accès poussé), il est plus souvent utilisé dans un contexte professionnel que associatif ou personnel et donc la communauté Plone a une culture de sécurisation d’entreprise qui, en moyenne, est plus stricte et rigoureuse que dans la moyenne des produits alternatifs

A propos de la sécurité dans Zope, tu trouveras plus de détails ici : http://www.zope.org/Documentation/Books/ZDG/current/Security.stx

[ Update : malgré ces arguments, il faut noter qu’une vulnérabilité très grave de Plone vient d’être annoncée et un patch sera révélé mardi prochain. Mais, ces dernières années, je n’ai vu que 2 vulnérabilités significatives annoncées pour Plone. ]

J’ai publié wecena.policy et wecena.theme dans mon dépôt subversion. Tu devrais pouvoir les checkouter et les mettre sous le répertoire src/ de
ton buildout.

Et voila.

From Jean M. to Antoine G.

3 réflexions au sujet de « Comment installer une plate-forme Wecena ? »

  1. Ping : Tweets that mention Comment installer une plate-forme Wecena ? « Jean, aka Sig(gg) -- Topsy.com

  2. Sig Auteur de l’article

    Brice, l’un des volontaires Wecena, envisage de faire un peu de développement python sur l’un des nouveaux produits wecena (wecena_openofficetester). Mais il souhaiterait développer sur Windows. Alors, comment installer une plate-forme wecena sur Windows pour développer ?

    La première à chose faire me semble être d’essayer d’installer un buildout Plone 3.3.5 « de base » (pas wecena) sous Windows. Une fois qu’on aura réussi à franchir cette étape, il faudra faire un checkout du buildout wecena et travailler à partir de cet environnement qui n’a pas la même configuration que celle d’un Plone tout fraîchement sorti de sa boîte (produits additionnels, paramétrage spécifique, etc.).

    Alors, comment installer Plone 3.3.5 sous Windows sous la forme d’un buildout ? Cette documentation Plone indique comment installer la toute dernière version de Plone (Plone 4 à ce jour) sur Windows sous forme d’un buildout. Il faut donc essayer de la suivre mais à deux détail-près : ce n’est pas Plone 4.x qu’on va installer mais Plone 3.3.5 et il faut donc Python 2.4.6 plutôt que Python 2.6.6 (non compatible avec Plone 3.3.5). A moins que l’installeur Windows mentionné au début de cette doc-là ne permette réellement d’installer directement Plone et un environnement buildout auquel cas il n’y a pas besoin de suivre la doc en question pas à pas ? A tester.

    Au final, l’objectif est de pouvoir utiliser la commande « buildout » en ligne de commande sous Windows. Cette commande va consulter des fichiers de configuration du buildout pour y déterminer toutes les dépendances qu’elle doit télécharger de manière à installer et configurer une instance Plone qui convienne. Ainsi, la commande buildout va notamment créer d’autres binaires dans son répertoire. L’un de ces binaires lance une instance Plone (elle s’appelle par exemple « single-instance » ou « primary-instance » selon ce qui est présent dans les fichiers de config du buildout). Et c’est ensuite en appelant cette instance qu’on peut lancer des scenarii de tests automatiques et donc commencer à développer en mode « Test-Driven Development » (développement guidé par les tests).

    L’objectif pour pouvoir contribuer au développement du composant wecena_openofficetester, c’est de pouvoir lancer avec succès la commande suivante :

    bin/instance test -s Products.wecena_openofficetester

    Cette commande est sensée lancer une instance Plone qui est configurée pour utiliser le produit additionnel « Products.wecena_openofficetester » et elle est sensée exécuter tous les scenarii de test (testcases) associés à ce produit wecena_openofficetester. Le principal testcase défini pour ce produit s’appelle testMain.txt (wecena_openofficetester\doc\testMain.txt)

    La démarche de développement guidé par les tests suppose que l’on modifie ce testcase en y ajoutant (en langage python et avec des commentaires en anglais) des tests supplémentaires à effectuer (des actions utilisateurs à simuler dans un navigateur virtuel et des vérifications du résultats dans les pages affichées par ce navigateur virtuel) pour décrire la fonctionnalité que l’on souhaite développer ou bien les bugs que l’on souhaite résoudre. Puis on lance les tests à l’aide de la commande ci-dessus. S’affiche alors un rapport de test qui indique que les tests ont échoué à tel et tel étapes du scénario (par exemple le navigateur virtuel n’affiche pas certaines chaînes de caractères auxquelles on se serait attendu). C’est normal vu qu’on a décrit les nouvelles fonctionnalités dans le scénario de test mais qu’on ne les a pas encore développées dans le code. On commence alors à coder la fonctionnalité désirée et on relancer périodiquement les tests jusqu’à ce qu’ils réussissent tous à 100%. On obtient ainsi non seulement la fonctionnalité désirée mais également un scénario de tests qui nous alertera si jamais quelque chose est ultérieurement cassé dans le code lors de futures modifications (régressions).

    Et, pour pouvoir lancer cette commande, les pré-requis sont donc :

    1) de disposer d’un environnement buildout pour pouvoir lancer la commande buildout une première fois de manière à installer et configurer une instance du CMS Plone

    2) de disposer des fichiers de configuration buildout de wecena pour pouvoir installer la plate-forme complète, configurée comme il faut ; ces fichiers sont dans le dépôt subversion de Wecena (cf. plus haut dans l’article)

    3) de réussir à ce que la commande buildout, avec ces fichiers de config, construise l’environnement désiré sans planter : buildout se plaint parfois de ne pas réussir à trouver des dépendances, ou de rencontrer des conflits de version. En cas de plantage de buildout, vous pouvez mettre vos messages d’erreur ci-dessous ou me les envoyer par email

    4) pour tester le produit wecena_openofficetester, il faut aussi installer OpenOffice sur son poste et le démarrer ainsi que le composant pyunoctl avec la commande « pyunoctl start » (mais est-ce que ça va marcher sous Windows ? …. normalement oui)

    Au passage, il faudra également réussir l’épreuve qui consiste à ce que buildout réussisse à traverser le firewall de l’entreprise pour télécharger les dépendances désirées puis à traverser également le firewall avec le client subversion installé sur sa machine, de manière à télécharger les fichiers de config buildout depuis le dépôt Subversion de Wecena, ainsi que les produits Wecena qui n’ont pas été distribués ailleurs, pour le moment, que dans notre dépôt subversion.

    Voila, donc ya du pain sur la planche !

Les commentaires sont fermés.