L'installation d'Apache en frontal de ZOPE a plusieurs avantages :
Il permet de mettre en place des virtualhosts et par conséquent de masquer l'adresse et le port du serveur ZOPE.
Il peut-être utilisé comme proxy pour améliorer les performances du site au niveau des pages statiques.
Apache est plus robuste que ZOPE (XXX : url mal formées ?).
Dans la suite de cette section nous allons présenter rapidement la mise en place d'un virtualhost. De nombreux documents sont disponibles sur zope.org ou plone.org pour aller plus loin (notamment sur l'utilisation d'Apache comme proxy).
Cette opération se déroule en deux temps, d'un côté la configuration d'Apache pour l'activation effective du virtualhost, de l'autre la configuration de ZOPE pour prendre en compte le changement d'URL dans les fonctions qui renvoient ce genre d'information (absolute_url par exemple).
Pour ZOPE, l'opération consiste simplement à ajouter à la racine du serveur un objet de type VirtualHostMonster. Celui-ci modifie le comportement des fonctions qui renvoient une URL (telle que absolute_url) afin qu'elles prennent en compte le virtualhost.
Une fois que le VirtualHostMonster est créé, cliquer dessus pour avoir plus d'information sur son fonctionnement.
Pour Apache, il faut ajouter une section similaire à la suivante dans le httpd.conf.
<VirtualHost ip:port> Servername nom_virualhost RewriteEngine On RewriteRule ^/(.*) http://serveur_zope:port_zope/VirtualHostBase/http/nom_virtualhost/VirtualHostRoot/$1 [P] </VirtualHost>
Explications
Cette directive active le processus de réécriture des URLs pour ce virtualhost.
Cette règle est vérifiée pour toutes les URLs du site, la page demandée (avec son chemon complet) est stockée dans la variable $1.
Serveur sur lequel apache va récupérer la page demandée (voir [P]).
Le VirtualHostMonster mis en place sur le serveur ZOPE va réagir à la présence de ces élément dans l'URL. Il va remplacer l'adresse réelle du serveur ZOPE par celle qui est contenu entre ces deux éléments.
L'adresse par laquelle il faut remplacer l'adresse réelle du serveur ZOPE.
La page initialement demandée est ajoutée au bout de la requête. Lorsque le serveur ZOPE va recevoir la requête en entier (http:///serveur_zope:port_zope/VirtualHostBase/http/nom_virtualhost/VirtualHostRoot/unChemin/unePage), le VirtualHostMonster va retirer tout ce qui le concerne et ZOPE va procéder à la recherche de la page demandée (http://serveur_zope:port_zope/unChemin/unePage).
Ce paramètre indique à Apache de se comporter comme un proxy, c'est à dire que c'est lui qui va interroger le serveur ZOPE, récupérer la page puis l'envoyer au client. Sans la présence du [P], Apache se contente de rediriger le client web vers la cible de la rewriterule (le client verra donc apparaître l'adresse réelle du serveur ZOPE, ce que l'on cherche à éviter).