Humus numericus

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

R, Spip et autres

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.

Commentaires

1. Le mercredi 4 juillet 2007, 19:18 par Matthieu Marcillaud

Merci pour cette contribution.

A noter qu'il y a un pseudo plugin de mutualisation aussi
->[http://www.spip-contrib.net/L...]

2. Le lundi 27 août 2007, 12:55 par Gurdil

Wahou !
Merci, franchement vous me sortez de la galère, toutefois un petit truc me chifonne : si je vire tout ça
<code>

       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]

<code>
ça change rien de rien. Tout est pareil

3. Le lundi 27 août 2007, 22:36 par Juba

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).

4. Le mercredi 29 août 2007, 15:22 par Gurdil

Réponse

Ah d'accord, merci beaucoup pour la réponse rapide

5. Le samedi 29 septembre 2007, 13:54 par Applejuice

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 ?

6. Le samedi 29 septembre 2007, 22:57 par Juba

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é.

7. Le lundi 13 octobre 2008, 14:00 par Seb

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

8. Le lundi 13 octobre 2008, 16:12 par Juba

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)...