Version 46 — Janvier 2009 — livier
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.
- Il existe plusieurs moyens pour mutualiser un site SPIP.
- Cette page décrit une méthode s’appuyant sur un plugin, et donne un lien vers une autre méthode, mais vous n’avez pas besoin de changer de page pour réussir votre mutualisation.
- En cas de difficultés, consultez les archives sur la liste spip-user, et, sinon, posez des questions claires, avec un sujet explicite.
- un exemple, très parlant, d’une mise en oeuvre est donné dans cet article : Ferme à SPIP
- des explications plus détaillées ont été produites pour la La mutualisation d’avant SPIP-2
-* Installez les fichiers de SPIP dans un répertoire ; appelons-le spip/
, c’est la racine de votre système :svn co svn://trac.rezo.net/spip/spip/ spip/
;
Typiquement, ce dossier contient votre site, chez moi c’est /var/www/monsite et mon virtualhost pointe dessus, donc on ne peut pas remonter plus haut avec un navigateur.
-# Faire pointer les DNS de votre domaine vers l’ip de votre serveur. Tout l’intérêt de la mutualisation sera d’en faire pointer plusieurs en fait ;-)
/var/www/spip/
svn co svn://trac.rezo.-* Installez les fichiers de mutualisation facile en les chargeant depuis la zone, vers un répertoire quelconque :
-** Depuis un terminal shell, utilisez la commande
_ <code>svn co svn://zone.net/spip/spip org/spip-zone/_plugins_/_stable_/mutualisation / spip/</code spip/mutualisation/</code >
-*** vérifier la destination de votre installation
-*** sous ;
-** Sous windows vous pouvez utiliser un client graphique style tortoisesvn : une fois installé, celui-ci est intégré à l'explorateur de fichiers. Les commandes svn sont accessibles depuis le menu contextuel. Vous pouvez donc récupérer une copie de travail en effectuant depuis un répertoire quelconque une commande "checkout"
-** en déposant sur <code>spip_loader code > svn://zone .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_/_stable_/mutualisation/ spip/mutualisation/</code </ code >
-** par ftp en le prenant ici : [-> http://files . spip.org/spip-zone/mutualisation.zip]
-# Créez un répertoire <code>sites/
à l’intérieur du répertoire racine, dans lequel le serveur peut écrire.
-# Créez le fichier /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
-* Faites pointer les URLs à mutualiser vers le répertoire racine spip/
(VirtualHost) ; Virtualhost pour la mutualisation
sites/
à l’intérieur du répertoire racine, dans lequel le serveur peut écrire.-* Créez le fichier spip/config/mes_options.
php en vous inspirant du contenu présent dans le fichier mutualisation/mes_options.php.txt
/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.-* Créez le répertoire mutalisation et copiez les fichiers du plugin dans ce répertoire.chown -R
et chmod -R
) (Vous faites comme d’habitude lorsque vous installez un Spip ou un autre logiciel).
php
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é écris, 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 definir 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).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
Problème avec les images, les liens commençant par /IMG dans vos feuilles de style par exemple
/ !\ Cette partie n’est plus valable avec la version 0.6.1 du plugin qui permet de gerer cela avec l’option ’url_img_courtes’ => true.
-* Ajoutez cette simple règle de réécriture dans votre fichier .htaccess
RewriteCond %{REQUEST_URI} !(sites)
RewriteCond %{REQUEST_URI} /(IMG)/[^/]+$
RewriteRule ([^/]+)/([^/]+)$ sites/%{SERVER_NAME}/$1/$2 [QSA,L]
Cela signifie que :