Version 89 — Octobre 2017 — Francky
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/trunk spip/mutualisation/
(ou branches/... au lieu de trunk si vous etes en spip2)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.RewriteCond %{HTTP-HOST}%{REQUEST_URI} ^" . preg_quote("$host$racine/", ',') . "
par RewriteCond %{HTTP:X-FORWARDED-SERVER}%{REQUEST_URI} ^" . preg_quote("$host$racine/", ',') . "
dans le fichier ./mutualisation/mutualiser_gerer_img.php. Ça fonctionnera à tous les coups ;)chown -R
et chmod -R
) (Vous faites comme d’habitude lorsque vous installez un Spip ou un autre logiciel).config/mes_options.php
: Lorsqu’on utilise donc le plugin « Mutualisation facile » et qu’on doit ajouter une fonction dans le fichiers config/mes_options.php à la racine du site, il faut que cette fonction soit placée après la fonction « demarrer_site() ». En effet, lorsqu’on doit utiliser des include_spip et cie, le routage n’est pas encore instancié correctement avant cette fonction, et cela crée des erreurs ou plantages du site. Si par contre on met nos fonctions maisons après demarrer_site tout rentre dans l’ordre.Dans le fichier 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="https://www href="http://www .spip.net/">la communauté SPIP</a></p>'
'avant_initialisation' => function () { if file_exists(_DIR_SITE.'squelettes/mes_options_de_lutilisateur.php') include_once(_DIR_SITE.'squelettes/mes_options_de_lutilisateur.php'); }
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 /config
Ces 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. Depuis la version 1.x du plugin mutualisation, il est possible de faire une mutualisation de SPIP 3..
- 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... et en particulier son PDF détaillé 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/sp... ou http://www.pyrat.net/Mutualisation-...)
- last (but not least) Maïeul nous fait partager son expérience http://geekographie.maieul.net/Gerer-un-SPIP-mutualise-avec-SSH et http://geekographie.maieul.net/Gerer-beaucoup-de-sites-SPIP-en
- une description de l’installation d’une mutualisation SPIP sur un hébergement mutualisé OVH
- mutualisation sous windows en local http://www.blanche-de-peuterey.com/...
- 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.
toto