Installation d'un Spip mutualisé en sous-domaine
Par Juba le mercredi 4 juillet 2007, 16:35 - Docs informatique - Lien permanent
J'ai eu l'occasion de travailler sur la configuration d'un Spip pour le mutualiser en sous-domaine (et non en sous-répertoire). Comme c'était pas tout à fait de la tarte, je mets mes notes de travail ici, même si tout ça n'a pas forcément été testé à fond les ballons.
Configuration
Un spip situé sur un serveur nommé dd.nozav.org
et accessible à
l'adresse http://dd.nozav.org/spip/.
Deux autres sites Spip que l'on veut atteindre en sous-domaines via http://spip1.nozav.org/ et http://spip2.nozav.org/.
On a donc trois sites hébergés sur 3 bases différentes sur le même serveur MySql. On peut aussi apparemment n'utiliser qu'une base de données MySql en modifiant les préfixes des tables.
Le tout est situé dans le répertoire /home/julien/www/spip
.
Installation du site principal
- Décompression de Spip 1.9.2b dans
/home/julien/www/spip
.
- Installation du site http://dd.nozav.org/spip de manière classique (j'ai l'impression que cette étape est obligatoire, même si le site en question reste vide, à vérifier).
- Création des répertoires
/home/julien/www/spip/sites/nozav.org/spip1
et/home/julien/www/spip/sites/nozav.org/spip2
, plus les sous-répertoiresIMG
,temp
,config
etlocal
pour chacun d'entre eux.
Attention : la convention de nommage est importante, pour un site dont
l'url serait toto.domaine.fr
, on doit avoir un répertoire
sites/domaine.fr/toto
.
Configuration d'Apache
On crée un site dans /etc/apache2/sites-enabled/
avec le
contenu suivant :
<VirtualHost *> ServerName spip1.nozav.org ServerAlias spip2.nozav.org # Redirection vers le SPIP noyau DocumentRoot "/home/julien/www/spip" <Directory "/home/julien/www/spip/"> AllowOverride All Order allow,deny Allow from all </Directory> RewriteEngine On RewriteCond %{SERVER_NAME} (www\.)?([^.]+)\.nozav\.org$ RewriteCond /home/julien/www/spip/sites/nozav.org/%2/%{REQUEST_FILENAME} -f [OR] RewriteCond /home/julien/www/spip/sites/nozav.org/%2/%{REQUEST_FILENAME} -d RewriteRule (.*) /home/julien/www/spip/sites/nozav.org/%2/$1 [QSA,L] RewriteCond %{SERVER_NAME} (www\.)?([^.]+)\.nozav\.org$ RewriteRule (.*) /home/julien/www/spip/$1 [QSA,L] </VirtualHost>
Configuration de Spip
Création du fichier spip/config/mes_options.php
:
<?php if ( preg_match(',(.*)\.nozav\.org/?,',$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_FILENAME'],$r)) { if (is_dir($e = _DIR_RACINE . 'sites/nozav.org/' . $r[1]. '/')) { $cookie_prefix = $r[1]; $table_prefix='spip'; define('_SPIP_PATH', $e . ':' . _DIR_RACINE .':' . _DIR_RACINE .'dist/:' . _DIR_RESTREINT); spip_initialisation( ($e . _NOM_PERMANENTS_INACCESSIBLES), ($e . _NOM_PERMANENTS_ACCESSIBLES), ($e . _NOM_TEMPORAIRES_INACCESSIBLES), ($e . _NOM_TEMPORAIRES_ACCESSIBLES) ); $GLOBALS['dossier_squelettes'] = $e.'squelettes'; if (is_readable($f = $e._NOM_PERMANENTS_INACCESSIBLES._NOM_CONFIG.'.php')) include($f); } } ?>
Installation des sous-sites
Ensuite on se rend dans http://spip1.nozav.org/ecrire et on procède à
une installation classique. On peut ensuite faire une migration d'un
site existant en copiant les répertoires config
, squelettes
, tmp
,
local
, IMG
ainsi que d'éventuelles ressources statiques et en
effectuant une restauration de base.
Idem pour http://spip2.nozav.org/
Remarques
- Les plugins sont également mutualisés, c'est à dire qu'ils sont installés pour l'ensemble des sous-sites. Mais chaque site peut choisir de les activer ou non.
- Il est possible d'utiliser des types d'urls différentes par sous sites en mettant le
$type_urls
que l'on souahite dans le fichiermes_options.php
du sous-site.
- Pour les migrations de site vers un mutualisé il y a apparemment des subtilités concernant les images et documents joints. Voir la remarque Note sur les sauvegardes et les restaurations sur la page de la doc qui va bien.
Commentaires
Merci pour cette contribution.
A noter qu'il y a un pseudo plugin de mutualisation aussi
->[http://www.spip-contrib.net/L...]
Wahou !
Merci, franchement vous me sortez de la galère, toutefois un petit truc me chifonne : si je vire tout ça
<code>
<code>
ça change rien de rien. Tout est pareil
Pour Gurdil :
Le premier bloc
RewriteCond
sert à pouvoir accéder aux éventuelles ressources statiques du site (images, etc.). Le deuxième sert à accéder à un site sous Spip qui ne serait pas en sous-domaine (l'installation principale).Réponse
Ah d'accord, merci beaucoup pour la réponse rapide
Mais quand le script à ajouter dans les "/etc/apache2/sites-enabled/" est indisponible parce que géré par l'hébergeur (qui utilise Apache), que doit-on faire ?
Ben tu peux toujours essayer de mettre les instructions Rewrite* dans un .htaccess, mais c'est pas dit que ça fonctionne. Je pense pas que ce genre de mutualisation soit trop prévue pour de l'hébergement mutualisé.
Très bon article !!!!
Juste, j'apporte ma pierre à l'édifice car j'ai galéré un moment.
Il faut qu'il n'y ai qu'un seul fichier mes_options.php (ds / ou / config ou /ecrire) sinon ça ne prend pas !
A+
Seb
Merci pour ton commentaire !
Content de savoir que ce billet peut encore être utile à d'autres, même s'il risque de devenir obsolète au fil du temps (comme tout billet de blog qui se respecte)...