Version 65 — Avril 2011 — YannX
Supposons que vous avez plusieurs sites sous SPIP... Vous pouvez bien sûr installer les fichiers de SPIP en plusieurs exemplaires, mais vous perdez ainsi de la place et surtout de la facilité de maintenance.
Mutualiser des sites SPIP, c’est mettre en commun ce qui peut l’être (le moteur de squelette, l’interface privée etc), tout en proposant des données séparées.
/var/www/spip/
svn co svn://trac.rezo.net/spip/branches/spip-2.0 spip/
spip_loader.php
dans le répertoire /var/www/spip/
en en l’appelant par un navigateur http://votresite1.tld/spip_loader.php
svn co svn://zone.spip.org/spip-zone/_plugins_/mutualisation/ spip/mutualisation/
sites/
à l’intérieur du répertoire racine, dans lequel le serveur peut écrire./var/www/spip/config/mes_options.php
en vous inspirant du contenu présent dans le fichier mutualisation/mes_options.php.txt
spip_loader.php
plus hauthttp://votresite1.tld/ecrire
avec un navigateur dans les autres cas. mes_options.php
/sites/%{SERVER_NAME}/
(accessibles avec http://%{SERVER_NAME}
)htaccess.txt
en .htaccess
. A noter que pour que le .htaccess
fonctionne il faut que le module rewrite d’apache soit activé et que la surcharge de règle de ré-écriture via .htaccess soit autorisé (directive AllowOverride
d’Apache).
htaccess.txt
dont il est question ici est celui distribué dans chaque version de Spip.chown -R
et chmod -R
) (Vous faites comme d’habitude lorsque vous installez un Spip ou un autre logiciel).Dans le fichiers mes_options.php vous pouvez affiner les réglages selon vos besoins.
/* spécial plugin mutualisation */
if (!defined("_ECRIRE_INC_VERSION")) return;
require _DIR_RACINE.'mutualisation/mutualiser.php';
$site = str_replace('www.', '', $_SERVER['HTTP_HOST']);
if ($site != $_SERVER['HTTP_HOST']) {
include_spip('inc/headers');
redirige_par_entete('http://'.$site.'/');
}
define ('_INSTALL_SERVER_DB', 'mysql'); // ou 'pg'
define ('_INSTALL_HOST_DB', 'localhost');
define ('_INSTALL_USER_DB', 'userdb');
define ('_INSTALL_PASS_DB', 'passuserdb');
Ici, les paramètres d’accès à MySQL ont été écrits, pour que le plugin puisse créer les tables et éventuellement la base lors de la création d’un nouveau site.
// define ('_INSTALL_NAME_DB', 'mu_'.prefixe_mutualisation($site));
// define ('_INSTALL_TABLE_PREFIX', 'spip');
// define ('_INSTALL_TABLE_PREFIX', 'mu_'.prefixe_mutualisation($site));
Dans un premier temps, on n’en à pas besoin, et même plus tard, donc j’ai laissé tout ça commenté.
// inscrire ici le nom du site d'administration du tableau de bord
// de la mutualisation (ou plusieurs, separes par des virgules)
// (dans cet exemple, 'scriibe.net' est le top level domain, TLD)
// pour autoriser tous les sites, ne pas définir la constante ;
// Si le site maitre n'est pas dans sites/ mais a la racine, mettre ''
// et ajouter 'mutualisation' dans $dossier_squelettes
define ('_SITES_ADMIN_MUTUALISATION', 'pc-33-g');
Avec ce plugin, il n’y a pas de notion de site maître. Comme précisé ici, dans certains cas il faut ajouter le chemin vers le dossier mutualisation, mais est ce vraiment utile ? De même pour le site d’administration de la mutualisation, ce ne devrait pas être nécessaire.
Puis la fonction demarrer_site est définie, j’en détaille ici les variables.
true
pour que dans la partie publique les images aient une URL de la forme /IMG/jpg/image.jpg
et non /sites/%nom%/IMG/jpg/image.jpg
(l’intérêt principal est que les URLs ne sont pas modifiées si on exporte le site vers un hébergement solo).'<p>Un service proposé par <a href="http://www.spip.net/">la communauté SPIP</a></p>'
Vous pouvez activer maintenant le plugin et tester son fonctionnement (ou lire les cas particuliers avant ?)
Votre site est déjà existant
Si vous avez déjà un site opérationnel (par exemple spip-contrib.net) et que vous voulez le mutualiser, il suffit de suivre toutes les étapes,
mes_options
dans /ecrire
plutôt que dans /configCes répertoires peuvent être des liens symboliques vers les originaux du site à la racine, mais dans ce cas, le fichier mes_options.php devrait être déplacé dans /ecrire
Ainsi, dés l’activation du plugin, le site doit être opérationnel de manière transparente, vous ne devriez pas voir de différence.
personnalisation des squelettes pour chaque sites
Si plus tard vous voulez personnaliser les squelettes pour un site, il vous suffit de les placer dans le dossier
ecrire/?exec=mutualisation
permet si l’on est admin du site et que l’on a les droits suffisant (lire le code) d’afficher les sites mutualisés.
La liste ainsi produite est clicable et permet de visiter chacun des sites. Mais aussi, de procéder aux mises à jour de ces derniers.
- Cette page décrit une méthode s’appuyant sur le plugin « mutualisation » et SPIP-2
- Historiquement la mutualisation a commencé à être possible dans les dernières versions de SPIP-1 moyennant des méthodes demandant de mettre plus « les mains dans le cambouis »
- Il existe certainement d’autres moyens pour mutualiser un site SPIP, consulter pour cela les références ci dessous produites dans ces phases de développement de la mutualisation
- un exemple, très parlant, d’une mise en œuvre est donné dans cet article : Ferme à SPIP expliquant le plugin Mutualisation (voir aussi [->http://spip2.ac-rouen.fr/?Mettre-en-place-une-plate-forme] et en particulier son [PDF détaillé->http://spip2.ac-rouen.fr/IMG/pdf/Memo_Mutualisation_SPIP.pdf] 37 pages !).
- d’autres explications détaillées ont été produites pour la La mutualisation d’avant SPIP-2
- une seconde démarche rajoute des tables de gestion pour un Plugin SiloSPIP (ou es), resté en développement en 2009
- quelques références extérieures ( [->http://spipistrelle.clinamen.org/spip.php?article22] ou [->http://www.pyrat.net/Mutualisation-SPIP-sur-OVH.html])
- une bidouille pour gérer le dossier des plugins est donnée dans cet article : Gestion des dossiers /plugins (ou utiliser _DIR_PLUGINS_SUPPL)
- de nouvelles précisions en développement dans Choisir un mode de mutualisation
- En cas de difficultés, consultez les archives sur la liste spip-user, et, sinon, posez des questions claires, avec un sujet explicite.