Configurer un serveur Apache pour Zope et Plone sous Debian GNU Linux
Lorsque l'on souhaite disposer de plusieurs sites Plone sur une même machine, on a coutume d'utiliser Apache, ce dernier nous permettra de rediriger les requêtes HTTP sur les instances qui écoutent chacune sur leur port respectifs. Voici comment nous allons nous y prendre sur Debian GNU Linux.
Le contexte technique de départ
Nous travaillons sur un serveur distant en ssh, sans interface graphique puisque notre serveur est destiné à la production. Si ça ne vous dit rien je vous invite à vous reporter à cette documentation, ainsi qu'a cette Man Page.
Nous disposons d'un Apache2 qui fonctionne (pour vérifier ouvrez un navigateur et tapez y l'adresse http://adresseipduserveur
L'éditeur de texte que nous utilisons ici est emacs .... mais oui vi, vim ou nano sont de très bon choix, du moment que vous êtes à l'aise dessus. Si ce n'est pas le cas, commencez par les essayer et à consulter leur documentation respective, le premier contact est souvent douloureux mais il est indispensable pour travailler dans de bonnes conditions.
Nous avons 2 instances Zope :
- la première se trouve dans /home/zope/z8080 et écoute sur le pour 8080 et elle accueillera le site http://exemple1.com ; le portail Plone a été créé à la racine de l'instance et se nomme exemple1
- la seconde se trouve dans /home/zope/z9000 écoute sur le port 9000 et elle accueillera le site http://exemple2.com
ATTENTION : ces informations sont capitales pour colmprendre l'écriture des vhost que nous allons voir juste après
Petit rappel
Le fichier Zope.conf vous permet de déterminer le port d'écoute de votre instance, vous pouvez l'éditer, ce qui donne dans noter exemple pour l'instance 1 :
$ emacs /home/zope/z8080/etc/zope.conf
Les modules Apaches
Nous allons donc commencer par activer les modules dont Apache va avoir besoin.
$ sudo a2enmod_rewrite
$ sudo a2enmod_proxy
$ sudo a2enmod_proxy_http
On va maintenant configurer le mod Proxy :
$ sudo emacs /etc/apache2/mods-avaliable/proxy.conf
et on fait en sorte qu'il ressemble a ça :
<IfModule mod_proxy.c>
ProxyRequests Off
ProxyVia On
<Proxy *>
Order deny,allow
Allow from votreurl.com
Allow from localhost
</Proxy>
</IfModule>
On sauvegarde le tout avec ctrl+x et ctrl+s pour emacs et on redémarre notre apache pour qu'il assimile la nouvelle configuration :
$ sudo apache2ctl restart
Nous allons maintenant pouvoir créer nos virtualhosts afin que nos noms de domaines pointent bien sur leur bon site respectif; Evidemment rien ne vous empêche d'avoir plusieurs sites par instances et d'indiquer correctement dans le vhost la racine de chaque domaine même au sein de la même instance.
Création des VHOST
Nous allons créer un fichier dans le /etc/apache2/sites-availiable pour chaque site en prenant soin de les nommer intelligemment. Puis les activer et enfin redémarrer notre Apache pour que les configurations soient prises en compte.Pour le premier site :
$ sudo /etc/apache2/sites-availiable/emacs 001-exemple1.comComme il écoute sur le port 8080 et que le site Plone nommé exemple1 se trouve à la racine de l'instance Zope, on l'écrira comme suit :
<VirtualHost *>
ServerAdmin vous@unmailquifonctionne.com
ServerName exemple1.com
ServerAlias www.exemple1.com
RewriteEngine On
RewriteRule ^/(.*) http://localhost:8080/VirtualHostBase/http/www.exemple1.com\:80/exemple1/VirtualHostRoot/$1 [L,P]
CustomLog /var/log/apache2/exemple1.com.log combined
</VirtualHost>
Voilà pour notre premier site, il va maintenant falloir l'activer :
$ sudo a2ensite 001-exemple1.comVous pouvez vous assurer que le lien symbolique créé avec la commande a2ensite est bien en place
$ cd /etc/apache2/sites-enable && lsvous y trouverez votre fichier de config 001-exemple1.com
Pour le second site :
$ sudo /etc/apache2/sites-availiable/emacs 002-exemple2.comComme il écoute sur le port 9000 et que le site Plone nommé exemple2 se trouve à la racine de l'instance Zope, on l'écrira comme suit :
<VirtualHost *>
ServerAdmin vous@unmailquifonctionne.com
ServerName exemple2.com
ServerAlias www.exemple2.com
RewriteEngine On
RewriteRule ^/(.*) http://localhost:9000/VirtualHostBase/http/www.exemple2.com\:80/exemple2/VirtualHostRoot/$1 [L,P]
CustomLog /var/log/apache2/exemple2.com.log combined
</VirtualHost>
Voilà pour notre second site, il va maintenant falloir l'activer :
$ sudo a2ensite 001-exemple2.comVous pouvez vous assurer que le lien symbolique créé avec la commande a2ensite est bien en place
$ cd /etc/apache2/sites-enable && lsvous y trouverez votre fichier de config 002-exemple2.com
Et voilà, il ne vous reste plus qu'à redémarrer votre Apache
$ sudo apache2ctl restart... Et à vérifier avec votre navigateur web préféré que vos sites http://exemple1.com et http://exemple2.com pointent correctement sur leur sites Plone respectifs.

