Version 1 — Juin 2013 — bruno31 — Version initiale
Cet article décrit une solution permettant de conserver la mutualisation des sites SPIP utilisant THELIA. Elle permet d’avoir une boutique distincte pour chaque site.
Cette solution est loin d’être parfaite mais elle peut déjà dépanner.
SPIP offre des mécanismes de mutualisation permettant d’éviter de dupliquer le noyau SPIP pour chaque site. Le code est ainsi factorisé et il suffit de faire les mises à jour à un seul endroit, en une seule fois, et tous les sites SPIP mutualisés sont impactés.
En mutualisé, il n’y pas plus qu’un seul site (par exemple dans /home/spip3/public_html). Tous les virtual hosts pointent vers ce répertoire.
Quand on utilise THELIA sous SPIP (donc avec l’aide du plugin SPIP-THELIA), on est obligé de copier l’arborescence de THELIA à la racine du site. Il s’agit des répertoires : clients, classes, lib, fonctions, admin_xxx.
Tous les site SPIP mutualisés peuvent donc accéder à THELIA. Le problème, c’est qu’il accèdent TOUS à la même boutique THELIA. En effet, les répertoires clients et classes contiennent le paramètrage de la boutique.Et comme il n’y a qu’un seul clients et qu’un seul classe, on a donc une seule boutique accessible, la même pour tous les sites.
Et comme THELIA n’offre pas de mécanisme de mutualisation ; à ce que je sache ; on est bloqué.
Comment faire si on veut des boutiques différentes pour chaque site ?
La solution que j’ai testé consiste à faire pointer le virtual host, non plus vers /home/spip3 mais vers un répertoire spécifique à la boutique : /home/maboutique1
Dans ce répertoire spécifique, on y copie les répertoires THELIA :
- classes : contient notamment la classe cnx qui contient les paramètrages d’accès à la base. Cela permet de pointer vers une base THELIA spécifique au site.
- admin_xxx : répertoire d’administration de THELIA. Spécifique aussi à la boutique.
- lib
- client : les fichiers spécifiques de la boutique (images, doc, cache, etc.)
On y copie aussi les répertoires spécifiques SPIP :
- local
- tmp
- config
- IMG
En théorie, il faudrait aussi copier les répertoires de SPIP pour que SPIP fonctionne. Mais l’astuce consiste à créer des liens symboliques vers les répertoires dans /home/spip3. Ainsi, si SPIP3 évolue, de même que les plugins, la boutique SPIP+THELIA évolue aussi.
Les liens symboliques à créer dans /home/maboutique1/public_html pointant vers le même répertoire fichier dans /home/spip3/public_html :
- .htaccess
- index.php
- spip.php
- ecrire
- favicon.ico (on peut aussi avoir un favicon spécifique à la boutique)
- mutualisation
- plugins
- plugins-dist
- prive
- sites
- squelettes-dist
Je suis conscient que cette solution peut sembler complexe pour le néophyte. Mais elle est finalement assez simple. Il faut juste avoir les droits suffisants pour créer les liens symboliques. Il est probable que cette solution ne sera pas implémentable sur des serveurs type mutualisé.
Cette solution ne permet pas non plus de mutualiser le noyau de THELIA. Il faut copier tous les fichiers THELIA pour chaque boutique. Mais elle permet au moins de factoriser tous ce qui est relatif à SPIP. Et c’est déjà beaucoup. En attendant mieux.