Derniers billets de blog

Expert Python/Django/Plone et chef de projet agile, j'aime coder et découvrir de nouvelles technologies.

Plone 3 : Se connecter avec un autre utilisateur sans connaître son mot de passe

Je relaye juste un "truc & astuce" de Mustapha Benali expliquant comment se connecter à Plone avec un utilisateur donné sans connaître son mot de passe. C'est extrêmement utile pour dépanner un utilisateur qui nous dit "Je n'arrive pas à faire ceci ou cela, qu'est qui ne vas pas ?".

Pour cela, connectez-vous dans la ZMI (Zope Management Interface) et ajouter dans votre site Plone un script Python ayant le contenu suivant:

context.acl_users.session.setupSession(

                  identifiant_utilisateur,

                  context.REQUEST.RESPONSE)

Cliquez ensuite sur l'onglet "Test" et vous voilà connecté avec l'utilisateur "identifiant_utilisateur".

ATTENTION: En production, pensez à supprimer ce script Python dès la fin de son utilisation !!!

Makina Corpus, une société militante attachée aux valeurs du Logiciel Libre

Makina Corpus conçoit, développe et intègre des solutions innovantes s'appuyant exclusivement sur des logiciels libres. Cette SSLL est membre de l'association Alliance Libre, pôle d'expertise en logiciels libres de la région nantaise. En voici une présentation succincte, n'hésitez pas à consulter son site web (http://www.makina-corpus.com) pour plus d'informations.

Présentation

Makina Corpus conçoit, développe et intègre des solutions innovantes s'appuyant exclusivement sur des logiciels libres. Ces solutions libres s'intègrent parfaitement dans des environnements propriétaires existants.

La société a développé une expertise particulière en applications web complexes, dans le traitement de données géographiques (SIG), l'analyse décisionnelle (Business Intelligence) ainsi que les portails.

Étant l'un des plus anciens acteurs de l'open source en France, elle intervient également comme centre d'expertise Linux et logiciels libres.

Très attachée aux valeurs du Libre, Makina Corpus favorise l'implication de ses salariés dans les différentes communautés et accompagne ses clients dans la publication des solutions développées.

Fortement mobilisée par la gestion et la préservation de l'environnement, Makina Corpus privilégie les projets liés à ces sujets.

Pour être proche de ses clients, Makina Corpus est présente à Nantes, Toulouse, Paris, Pau, Dijon, Caen, Bruxelles et Tunis.

Expertises

  • Gestion de contenus, gestion de communautés en ligne
  • Systèmes d'information géographique
  • Décisionnel (Business Intelligence)
  • Applications d'entreprises
  • Systèmes, serveurs et réseaux

Services

  • Conseil
  • Assistance à Maîtrise d'ouvrage - AMOA
  • Assistance et support

Clients

  • Collectivités territoriales
  • Grands comptes
  • Opérateurs télécom
  • TPE/PME/PMI
  • Sites communautaires, Associations, Clubs
  • Gestion de l'eau
  • Logistique, transports
  • Bibliothèques

 

Alliance Libre

Bienvenue à Python 3.0 !!!

En ce jour de grâce du 3 décembre 2008, Python 3 est né ;) Python 3.0 ou Python 3000 ou encore Py3k est la nouvelle version du language Python, incompatible avec la branche 2.x. De nombreux détails accompagnent Python 3.0, tel que le fonctionnement des dictionnaires et des chaînes de caractère, la réorganisation de la librairie standard, la suppression de nombreuses fonctionnalités dépreciées etc... Mais rassurez-vous, Python 3.0 reste du Python !

Tester Python 3.0

Suivez ce petit tutorial (réalisé sur Ubuntu Hardy Heron)  et goûtez aux plaisirs de Python 3:

$ export py3k_install_dir="ou/je/veux"
$ mkdir -p py3k_install_dir
$ cd py3k_install_dir
$ wget http://www.python.org/ftp/python/3.0/Python-3.0.tgz
# vérifier le md5 su fichier téléchargé: ac1d8aa55bd6d04232cd96abfa445ac4
$ which md5sum
/usr/bin/md5sum
$ /usr/bin/md5sum Python-3.0.tgz
ac1d8aa55bd6d04232cd96abfa445ac4  Python-3.0.tgz
$ tar -vxf Python-3.0.tgz
$ cd Python-3.0
$ ./configure --prefix=$py3k_install_dir
$ make
$ make test
$ make install
$ ./python
Python 3.0 (r30:67503, Dec  4 2008, 10:41:35)

Apprendre Python 3000, qu'est-ce qui a changé ?

Varnish 2 - Quelques changements dans la syntaxe VCL

Varnish est un excellent reverse-proxy permettant de décharger les serveurs d'application web avec une gestion du cache très avancée. Varnish est très performant et il est de plus en plus utilisé. Si vous utilisez Varnish 1, voici ce qu'il faut connaître pour adapter votre fichier VCL pour Varnish 2.

La version 2 du serveur de cache Varnish est disponible depuis le 15 octobre 2008, mais deux releases de maintenance ont déjà été publiées. Nous en sommes aujourd'hui à la version 2.0.2.

Avant de mettre à jour Varnish, il vous faut connaître les quelques modifications apportées par Varnish 2 à la syntaxe VCL:

  • L'action "remove" est renommée en "unset".
-- remove req.http.cookie; 
++ unset req.http.cookie;
  • La définition des backend est simplifiée:
-- backend b1 { set backend.host = "10.0.0.100";} 
++ backend b1 { .host = "10.0.0.100";}
  • Dans la fonction vcl_fetch, l'action "insert" est renommée en "deliver".
  • obj.valid n'existe plus. Seuls des objets valides sont fournis à la fonction vcl_fetch.

 

Site Web du projet Varnish

Plone élu meilleur CMS 2008 !

Plone est élu meilleur CMS dans la catégorie "non PHP/MySQL", devant dotCMS et DotNetNuke. Félicitation !

Installer Plone 3 derrière Varnish avec Buildout

Ce tutorial présente la marche à suivre pour déployer le CMS Plone 3 avec Buildout (Apache -> Varnish -> Zope -> Plone), le tout dans un environnement virtuel Python (VirtualEnv).

Plone est un système de gestion de contenu (CMS: Content Managment System) professionnel Open Source capable de rivaliser sans complexe avec tous les produits commerciaux du moment. Plone repose sur le serveur d'application Zope, développé avec le langage de programmation Python. Plone est sûrement la contribution la plus aboutie de la communauté Zope.

Passons aux choses sérieuses à présent! En considérant qu'Apache est déjà installé sur le système, le déploiement permettra d'obtenir l'architecture suivante:

Architecture Plone 3 derrière Apache/Varnish avec Buildout

Convention pour les lignes de commande ou les extraits de code ('\' représentant un retour à la ligne factice nécessaire à la mise en page de cet article):

zope@linux: cd /home/zope python virtualenv.py PROJECT 
\ --python=python2.4

Sommaire

1. Pré-requis systèmes

2. Installation du VirtualEnv

3. Création de la structure du projet Plone 3

4. Configurer le buildout selon ses besoins

5. Lancer le buildout

6. Lancer les services et tester son installation

7. Créer le site Plone

8. Configurer Apache

9. Liens & documentations

 

1. Pré-requis systèmes

La procédure qui suit considère que vous avez déjà installé sur votre système:

  • Le serveur web Apache,
  • Un interpréteur Python 2.4 (disponible via la commande "python2.4"), ainsi que le paquet python-devel si vous installez Python depuis votre système de paquet.
    Taper la ligne de commande "python -V" pour connaître la version de Python installée par défaut sur votre système.
  • Les outils nécessaires à l'installation/compilation des logiciels et le traitement d'images JPG: make, gcc, libncurses5/libncurses5-dev (utile pour la compilation de Varnish), etc..., libjpeg, ... (dépend de votre distribution).

La procédure considère également que vous avez créé un utilisateur "zope" qui sera responsable du lancement des services, ainsi que le groupe "zope" correspondant.

 

2. Installation du VirtualEnv

sbo@linux:  su - zope
zope@linux: export PROJECT=/home/zope/my_project
zope@linux: cd /home/zope
zope@linux: wget http://svn.colorstudy.com/virtualenv/trunk/virtualenv.py
zope@linux: python virtualenv.py --python=python2.4 --no-site-packages my_project

Le script virtual_env.py créé $PROJECT/lib/python2.4/site-packages.
Il créé également l'exécutable python correspondant: $PROJECT/bin/python.
Il installe également Setuptools, et tout appel à $PROJECT/bin/easy_install installera les paquets dans l'environnement virtuel.
easy_install est un outil permettant d'obtenir des packages Python sur Cheese Shop (PyPI, Python Package Index, egg repository)

zope@linux: cd $PROJECT
zope@linux: ./bin/python -V
Python 2.4.4
zope@linux: source bin/activate
(my_project)zope@linux: bin/easy_install ZopeSkel

ZopeSkel est une collection de PasteScript templates pour le développement avec Zope et Plone.
L'egg ZopeSkell est bien installé dans notre environnement (ex: $PROJECT/lib/python2.4/site-packages/ZopeSkel-2.10-py2.4.egg).

(my_project)zope@linux: bin/easy_install PasteScript

PasteScript est un outil permettant d'initialiser des applications à partir de templates prédéfinis (ex: créer un egg pour Plone 3).
L'egg PasteScript est bien installé dans notre environnement (ex: $PROJECT/lib/python2.4/site-packages/PasteScript-1.6.3-py2.4.egg)

 

3. Création de la structure du projet Plone 3

zope@linux: cd $PROJECT
zope@linux: source bin/activate
(my_project)zope@linux: bin/paster create -t plone3_buildout buildout
Enter zope2_install (Path to Zope 2 installation; leave blank to fetch one) ['']:
Enter plone_products_install (Path to directory containing Plone products; \
leave blank to fetch one) ['']:
Enter zope_user (Zope root admin user) ['admin']: admin
Enter zope_password (Zope root admin password) ['']: admin
Enter http_port (HTTP port) [8080]: 8080
Enter debug_mode (Should debug mode be "on" or "off"?) ['off']: off
Enter verbose_security (Should verbose security be "on" or "off"?) ['off']: off

Si nécessaire, modifier les droits du projet:

(my_project)zope@linux: sudo chown -R zope:zope buildout

 

4. Configurer le buildout selon ses besoins

Le fichier buildout responsable de la construction du projet se trouve dans ici: $PROJECT/buildout/buildout.cfg
Utilisez le buildout suivant, modifié pour ajouter le serveur de cache Varnish, FileSystemStorage, et quelques produits utiles (dont CacheFu pour l'amélioration de la gestion du cache Plone-Varnish): buildout.cfg

zope@linux: cd $PROJECT
zope@linux: source bin/activate
(my_project)zope@linux:cd buildout
(my_project)zope@linux:mv buildout.cfg buildout.cfg.initial \
& wget http://www.asilax.fr/files/blog/2008/installer-plone-3-derriere-varnish-avec-buildout\
/buildout.cfg/at_download/file 
(my_project)zope@linux:mv ./file buildout.cfg

Téléchargez également le fichier de configuration Varnish (varnish.vcl) modifié spécification pour une utilisation avec Zope/Plone. Le buildout se chargera de le placer où il faut ($PROJECT/buildout/parts/varnish-instance/).

(my_project)zope@linux: cd $PROJECT/buildout/
(my_project)zope@linux: wget http://www.asilax.fr/files/blog/2008/\
installer-plone-3-derriere-varnish-avec-buildout/varnish.vcl/at_download/file
(my_project)zope@linux: mv ./file varnish.vcl

Décrivons un peu les modifications apportées au buildout de base:

 

4.1. FileSystemStorage (fss)

[buildout]
parts =
    ...
    fss

...

[fss]
recipe = iw.recipe.fss
conf = ${instance:location}/etc/plone-filesystemstorage.conf
storages = www_monsite_com /monsite/www_monsite_com directory 

 

4.2. PIL (Python Imaging Library) & CacheFu

eggs =
    ...
    PILwoTk
    Products.CacheSetup==1.2

 

4.3. Correction des droits sur les fichiers installés (nécessaire en cas d'installation en root)

[buildout]
parts =
    ...
    chown

[chown]
# This recipe is used to set permissions -- and ownership for root mode installs
recipe = plone.recipe.command
command = chmod 600 .installed.cfg
command = chown -R ${instance:effective-user} ${buildout:directory}/parts

 

4.4. Configuration de l'instance Zope

[instance]
effective-user = zope
zodb-cache-size = 5000
event_log_level = ERROR
z_log_level = ERROR
debug-mode = off
verbose-security = off

 

4.5. Varnish

parts =
    ...
    varnish-build
    varnish-instance
    varnish-config
    ...

[varnish-instance]
recipe = plone.recipe.varnish:instance
bind = 127.0.0.1:8079
backends = 127.0.0.1:8080
cache-size = 100M

[varnish-build]
recipe = plone.recipe.varnish:build
url = http://puzzle.dl.sourceforge.net/sourceforge/varnish/varnish-1.1.2.tar.gz

[varnish-config]
# This recipe is used to replace the default varnish configuration file
recipe = plone.recipe.command
command = mv ./buildout/parts/varnish-instance/varnish.vcl \
./buildout/parts/varnish-instance/varnish.vcl.initial
command = cp ./varnish.vcl ./buildout/parts/varnish-instance/varnish.vcl

 

5. Lancer le buildout

zope@linux: cd $PROJECT
zope@linux: source bin/activate
(my_project)zope@linux: cd buildout
(my_project)zope@linux: ../bin/python bootstrap.py
(my_project)zope@linux: ../bin/python ./bin/buildout -v -c buildout.cfg > buildout.log


Pour voir ce que fait buildout, dans un autre terminal:

zope@linux: tail -f buildout.log

 

6. Lancer les services et tester son installation

6.1. Lancer Zope (port 8080) et Varnish (port 8079)

zope@linux: cd $PROJECT
zope@linux: source bin/activate
(my_project)zope@linux: cd buildout
(my_project)zope@linux: ./bin/instance start
(my_project)zope@linux: ./bin/varnish-instance


6.2. Tester la disponibilité du serveur Zope

 

7. Créer le site Plone

Ajouter un site plone à la racine de votre zope, en le nommant par exemple "monsite".

8. Configurer Apache

Rajouter ceci dans votre le fichier de configuration d'Apache:

#
# Site http://www.monsite.fr
#

<VirtualHost www.monsite.fr:80>
  ServerName www.monsite.fr
  ServerAlias *.monsite.fr
  ServerAlias monsite.fr

  RewriteEngine on

  # On empêche le http://monsite.fr et les sous-domaines
  RewriteCond %{HTTP_HOST} ^monsite\.fr [NC]
  RewriteRule ^/(.*) http://www.monsite.fr/$1 [L,R=301]

  # www.monsite.fr -> réécriture d'URL vers le site Plone
  RewriteRule ^/(.*) http://localhost:8080/VirtualHostBase/\
http/www.monsite.fr:80/monsite/VirtualHostRoot/$1 [P,L]

  # Log
  CustomLog /var/log/apache/monsite_fr.log combined
</VirtualHost>

 

9. Liens & documentations