Humus numericus

Aller au contenu | Aller au menu | Aller à la recherche

R, Spip et autres

Mot-clé - spip

Fil des billets

mercredi 4 juillet 2007

Installation d'un Spip mutualisé en sous-domaine

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épertoires IMG, temp, config et local 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 fichier mes_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.