Introduction
Pour ma part, j’ai mis du temps à comprendre le fonctionnement et à pouvoir rendre cela fonctionnel. Un tutoriel ne sera donc pas de trop pour ceux qui veulent aussi tenter l’expérience (testée sur Ouvaton).
Ce tutoriel s’adresse plutôt aux hébergés qu’aux hébergeurs, qui, je suppose, utiliseront les Alias ou VirtualHost d’Apache.
Ce tutoriel s’inspire du ticket 186 qui utilise des Alias.
2Déroulement2
J’ai installé un SPIP 1.9 avec plusieurs sites de deux manières : SPIP à la racine du compte, ou dans un sous répertoire. Peu de choses changent en fait, mais il est utile de les connaître !
Cas (1), à la racine du serveur :
- http://mon_serveur.org/
avec les sites spips de type :
- http://mon_serveur.org/mon_site/ ,
- http://mon_serveur.org/mon_autre_site/
Cas (2), dans un répertoire du serveur :
- http://mon_serveur.org/mes_spips/
avec les sites spips de type :
- http://mon_serveur.org/mes_spips/mon_site/ ,
- http://mon_serveur.org/mes_spips/mon_autre_site/
Remarquez que vous pouvez utiliser l’adresse http://mon_serveur.org/ ou http://mon_serveur.org/mes_sites/ pour avoir un SPIP aussi à cet endroit. Il vous suffit d’aller dans http://mon_serveur.org/ecrire/ ou http://mon_serveur.org/mes_sites/ecrire/ et de configurer.
Si vous avez déjà un site en SPIP 1.9 configuré, vous pouvez aussi suivre ce tutoriel pour en creer d’autres, dans un sous-dossier. Votre premier site continuera de fonctionner correctement.
21- Création des dossiers accueillant les sites2
Creer un dossier dans le répertoire hébergeant SPIP
nommé SITES (ou le nom que vous voulez, à condition de le changer partout dans le turoriel) (au même niveau que CACHE, IMG,...)
Dans ce dossier, créer un sous dossier pour chacun des sites (mon_site, mon_autre_site), et dans chacun :
des sous dossiers :
- CACHE,
- IMG,
- data,
- upload,
- squelettes (éventuellement)
des fichiers (éventuellement) :
- .htaccess (obligatoire ou non ?)
- mes_fonctions.php
- mes_options.php
22- Création et modification du .htaccess2
Le .htaccess doit être modifié pour rediriger les adresses des sites SPIP correctement.
(Ce n’est pas la méthode décrite par le ticket 186 qui modifie le fichier de configuration du serveur Apache en créant des Alias, ce qu’on ne peut pas faire dans un .htaccess)
(Il faut donc, dans notre cas, que le serveur autorise le mod_rewrite d’Apache)
Le but est que les adresses de type :
- http://mon_serveur.org/mon_site ou http://mon_serveur.org/mes_spips/mon_site
soient redirigées vers :
- http://mon_serveur.org/ ou http://mon_serveur.org/mes_spips/
pour être traitées par :
- http://mon_serveur.org/spip.php ou http://mon_serveur.org/mes_spips/spip.php
Créer le fichier .htaccess, en copiant le fichier htaccess.txt .
Puis selon le cas...
3Cas (1) : racine du serveur3
Le .htaccess est à ce niveau :
- http://mon_serveur.org/.htaccess
À l’intérieur, mettre :
- Dans Configuration :
- RewriteBase /
- Dans Réglages personnalisés :
- RewriteRule ^mon_site/(.*) /$1 [QSA,L]
- RewriteRule ^mon_autre_site/(.*) /$1 [QSA,L]
3Cas (2) : répertoire du serveur3
Le .htaccess est à ce niveau :
- http://mon_serveur.org/mes_spips/.htaccess
A l’intérieur, mettre :
- Dans Configuration :
- RewriteBase /mes_spips/
- Dans Réglages personnalisés :
- RewriteRule ^mon_site/(.*) /mes_spips/$1 [QSA,L]
- RewriteRule ^mon_autre_site/(.*) /mes_spips/$1 [QSA,L]
23- Création et modification de ecrire/mes_options.php2
Il faut maintenant dire à SPIP que les adresses comportant des dossiers dans l’url (/mon_site) doivent être utilisés comme des SPIP autonomes, si leur dossier existe.
3Pour information3
Toute modification de ce fichier affectera les options de tous les sites hébergés.
Par exemple, mettre dans ce fichier :
- $type_urls = ’propres’ ;
Donnera par défaut à tous les sites ce type d’url... Mais chaque site peut le changer dans son propre /mon_site/mes_option.php
3Cas (1) : racine du serveur3
Créer/éditer le fichier ecrire/mes_options.php :
Le mes_options.php est à ce niveau :
- http://mon_serveur.org/ecrire/mes_options.php
Ajouter entre
<?php et ?>
ces lignes :
if ( preg_match(',/([a-zA-Z0-9_-]*)[/?],',$_SERVER['REQUEST_URI'],$r)) {
if (is_dir($f = _DIR_RACINE . 'SITES/' . $r[1]. '/')) {
$cookie_prefix = $table_prefix = $r[1];
define('_SPIP_PATH', 'SITES/' . $table_prefix . '/:./:dist/:formulaires/:ecrire/');
define('_DIR_IMG', $f.'IMG/');
define('_DIR_DOC', _DIR_IMG);
define('_DIR_CACHE', $f.'CACHE/');
define('_DIR_SESSIONS', $f.'data/');
define('_DIR_TRANSFERT', $f.'upload');
define('_FILE_CONNECT_INS', $f.'inc_connect');
$GLOBALS['dossier_squelettes'] = $f.'squelettes';
if (is_readable($f .= 'mes_options.php')) include($f);
}
}
Un rapide détail s’impose
Par défaut, la ligne
- $cookie_prefix = $table_prefix = $r[1] ;
Va créer des tables mysql avec des préfixes ayant le nom du répertoire contenant le site : mon_site_article à la place de spip_article par exemple. Cela permet d’héberger tous les sites sur une seule et même base de données. Vous pouvez garder le préfixe par défaut (spip), mais il faut penser à avoir plusieurs bases de données différentes pour chaque site. _ Pour cela, mettre à la place :
- $cookie_prefix = $r[1] ;
La ligne ci dessous définit l’adresse du dossier de squelette (mon_site/squelettes) :
- $GLOBALS[’dossier_squelettes’] = $f.’squelettes’ ;
Pour que tous les sites aient le même squelette situé dans http://mon_serveur/squelettes/ vous pouvez enlever le $f. pour n’avoir que :
- $GLOBALS[’dossier_squelettes’] = ’squelettes’ ;
3Cas (2) : répertoire du serveur3
On ajoute ces lignes entre
<?php et ?>
du fichier http://mon_serveur/mes_sites/ecrire/mes_options.php :
if ( preg_match(',/mes_sites/([a-zA-Z0-9_-]*)[/?],',$_SERVER['REQUEST_URI'],$r)) {
if (is_dir($f = _DIR_RACINE . 'SITES/' . $r[1]. '/')) {
$cookie_prefix = $table_prefix = $r[1];
define('_SPIP_PATH', 'SITES/' . $table_prefix . '/:./:dist/:formulaires/:ecrire/');
define('_DIR_IMG', $f.'IMG/');
define('_DIR_DOC', _DIR_IMG);
define('_DIR_CACHE', $f.'CACHE/');
define('_DIR_SESSIONS', $f.'data/');
define('_DIR_TRANSFERT', $f.'upload');
define('_FILE_CONNECT_INS', $f.'inc_connect');
$GLOBALS['dossier_squelettes'] = $f.'squelettes';
if (is_readable($f .= 'mes_options.php')) include($f);
}
}
En fait, toute la nuance est dans le preg_match...
24- Création et modification de mon_site/.htaccess2
(je ne suis pas sûr que ce soit indispensable)
Mettre dans Configuration :
- Cas (1)
- RewriteBase /mon_site/
- Cas (2)
- RewriteBase /mes_spips/mon_site/
Conclusion
Si vous êtes chanceux, peut être que ça fonctionne !
Pour lancer la procédure d’installation de vos sites, allez dans le répertoire écrire :
- http://mon_serveur/mon_site/ecrire/
- http://mon_serveur/mes_spips/mon_site/ecrire/
Il faut bien configurer l’adresse de vos sites dans l’interface privée :
http://mon_serveur.org/mon_site/ ou http://mon_serveur.org/mes_spips/mon_site/
Il se peux que vous croisiez certains problèmes par la suite, comme trouver la bonne url pour faire fonctionner un javascript... J’ai du pour la configuration d’un menu dépliant (pour l’image des + et - qui se configure dans le javascript) mettre : SITES/nom_site/squelettes/img/mon_image.gif à la place de img/mon_image.gif . SInon, rien de bien méchant.
Alors si tout fonctionne, quand Spip passera en version 2.0 (je sais que vous en rêvez déjà !), vous n’aurez qu’un seul noyau à mettre à jour !
Discussions par date d’activité
21 discussions
Très intéressant. Je me pose néanmoins des questions.
- N’est pas intéressant uniquement si on veut strictement la même configuration pour tous les sites ?
- Quid des plugins ? Lorsqu’on les active, sont-ils de fait actifs (ce que je crois comprendre) sur tous les sites ou peut-on individualiser ? Par exemple si j’active la spip-liste puis-je activer spip-lettre sur un seul site. Ou bien dans ce cas dois-je activer les deux et n’utiliser que celle je veux selon le site ?
- Les sauvegardes sont sans doute plus lourdes ?
J’ai oublié de parler des plugins...
Tel que j’ai fait, j’ai mis un seul dossier /plugins au niveau que /ecrire, /SITES, soit ici : http://mon_serveur.org/plugins ou http://mon_serveur.org/mes_spips/plugins
On peut alors choisir pour chaque site dans la configuration quels plugins utiliser. Cela veux dire que de cette manière, tous les plugins présents dans l’unique /plugins sont utilisables pour tous les sites ; Ils sont tous décochés par défaut.
Les sites ne peuvent en ajouter en créant un dossier mon_site/plugins et Je ne sais pas si on peux changer ce comportement simplement.
Pour les sauvegardes, chaque site gère sa sauvegarde stockée dans /SITES/mon_site/data. Elles restent donc de même taille. Ce n’est pas une sauvegarde qui regroupe tous les sites présents dans /SITES, si c’est ce que tu pensais ?
Cordialement, MM.
Répondre à ce message
Ajouter un commentaire
Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :
Merci d’avance pour les personnes qui vous aideront !
Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.
Suivre les commentaires : |