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.