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/spip1et/home/julien/www/spip/sites/nozav.org/spip2, plus les sous-répertoiresIMG,temp,configetlocalpour 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_urlsque l'on souahite dans le fichiermes_options.phpdu 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.