Carnet Wiki

La mutualisation facile ....

Version 54 — Juin 2009 RealET

La mutualisation, qu’est ce ?

Supposons que vous avez plusieurs sites sous SPIP... Vous pouvez bien sûr installer les fichiers de SPIP en plusieurs exemplaires, mais vous perdez ainsi de la place et surtout de la facilité de maintenance.

Mutualiser des sites SPIP, c’est mettre en commun ce qui peut l’être (le moteur de squelette, l’interface privée etc), tout en proposant des données séparées.

Procédure d’installation

  1. Faire pointer les DNS de votre domaine vers l’IP de votre serveur. Tout l’intérêt de la mutualisation sera d’en faire pointer plusieurs en fait ;-)
  2. Sur votre serveur régler les VirtualHost des URLs à mutualiser vers ce répertoire (ou moins une pour la procédure d’installation) Virtualhost pour la mutualisation
    • Pour une première installation de la mutualisation poursuivez ci-dessous
    • Pour l’installation d’un nouveau site sur le même serveur, allez tout de suite à l’étape « Relancer la procédure d’installation automatique »
  3. Installez les fichiers de SPIP :
      • pour la suite nous considèrerons que vous installez votre mutualisation Spip dans le répertoire typique /var/www/spip/
    • par svn : svn co svn://trac.rezo.net/spip/branches/spip-2.0 spip/
      • vérifier la destination de votre installation
      • sous windows vous pouvez utiliser un client graphique style tortoisesvn : une fois installé, celui-ci est intégré à l’explorateur de fichiers. Les commandes svn sont accessibles depuis le menu contextuel. Vous pouvez donc récupérer une copie de travail en effectuant depuis un répertoire quelconque une commande « checkout »
    • en déposant spip_loader.php dans le répertoire /var/www/spip/ en en l’appelant par un navigateur http://votresite1.tld/spip_loader.php
      • / ! \ ne faire que la première étape de l’installation, vérifier par ftp que les fichiers de spip ont bien été installés et installer le plugin « mutualisation » avant de poursuivre.
  4. Installez le plugin de mutualisation
    • par svn : svn co svn://zone.spip.org/spip-zone/_plugins_/mutualisation/ spip/mutualisation/
    • par ftp en le prenant ici : http://files.spip.org/spip-zone/mut... et en l’installant à la racine du spip (ici donc dans un sous-dossier spip/mutualisation
  5. Créez un répertoire sites/ à l’intérieur du répertoire racine, dans lequel le serveur peut écrire.
  6. Créez le fichier /var/www/spip/config/mes_options.php en vous inspirant du contenu présent dans le fichier mutualisation/mes_options.php.txt
    • Vous n’aurez que les variables à modifier, c’est à dire les login/pass pour MySQL/PG..., et les drapeaux true/false.
    • Assurez-vous d’avoir un utilisateur MySQL (ou PostgreSQL) autorisé à créer des bases de données et utiliser son login et son mot de passe pour les variables correspondantes
  7. Relancer la procédure d’installation automatique
    • poursuivre maintenant cette procédure si vous aviez utilisé spip_loader.php plus haut
    • appeler http://votresite1.tld/ecrire avec un navigateur dans les autres cas.
    • saisir le code d’activation du site, celui que vous avez adapté dans le fichier mes_options.php
  8. Suivez le déroulement de l’installation en approuvant les boites de dialogue suivantes .. ;-)

Remarque Complémentaires :

  • Avec l’utilisation de ce plugin, la notion de Site Maitre/Site principal n’existe pas. Il y a seulement un site Spip à la racine (non accessible) et des sites mutualisés, généralement /sites/%{SERVER_NAME}/ (accessibles avec http://%{SERVER_NAME} )
  • Pour utiliser les url_propres, dupliquez le fichier htaccess.txt en .htaccess. A noter que pour que le .htaccess fonctionne il faut que le module rewrite d’apache soit activé et que la surcharge de règle de ré-écriture via .htaccess soit autorisé (directive AllowOverride d’Apache).
    • A noter également que le htaccess.txt dont il est question ici est celui distribué dans chaque version de Spip.
  • Assurez vous que l’ensemble de votre arborescence dispose des bons droits : typiquement le propriétaire des fichiers est l’utilisateur utilisé par apache et dispose des droits en lecture, écriture, exécution (dans le cas contraire, utiliser les commandes chown -R et chmod -R) (Vous faites comme d’habitude lorsque vous installez un Spip ou un autre logiciel).

Paramètres du fichier mes_options.php

Dans le fichiers mes_options.php vous pouvez affiner les réglages selon vos besoins.

  • $GLOBALS[’dossier_squelettes’] = ’squelettes:mutualisation’ ;
    Dans certains cas, il faut préciser le dossier contenant les scripts de mutualisation, à confirmer.
    /* spécial plugin mutualisation */


    if (!defined("_ECRIRE_INC_VERSION")) return;
            require _DIR_RACINE.'mutualisation/mutualiser.php';


    $site = str_replace('www.', '', $_SERVER['HTTP_HOST']);
            if ($site != $_SERVER['HTTP_HOST']) {
                    include_spip('inc/headers');
                    redirige_par_entete('http://'.$site.'/');
            }


    define ('_INSTALL_SERVER_DB', 'mysql'); // ou 'pg'
            define ('_INSTALL_HOST_DB', 'localhost');
            define ('_INSTALL_USER_DB', 'userdb');
            define ('_INSTALL_PASS_DB', 'passuserdb');

    Ici, les paramètres d’accès à MySQL ont été écris, pour que le plugin puisse créer les tables et éventuellement la base lors de la création d’un nouveau site.

    //        define ('_INSTALL_NAME_DB', 'mu_'.prefixe_mutualisation($site));
    //        define ('_INSTALL_TABLE_PREFIX', 'spip');
    //        define ('_INSTALL_TABLE_PREFIX', 'mu_'.prefixe_mutualisation($site));

    Dans un premier temps, on n’en à pas besoin, et même plus tard, donc j’ai laissé tout ça commenté.

        // inscrire ici le nom du site d'administration du tableau de bord
        // de la mutualisation (ou plusieurs, separes par des virgules)
        // (dans cet exemple, 'scriibe.net' est le top level domain, TLD)
        // pour autoriser tous les sites, ne pas définir la constante ;
        // Si le site maitre n'est pas dans sites/ mais a la racine, mettre ''
        // et ajouter 'mutualisation' dans $dossier_squelettes
        define ('_SITES_ADMIN_MUTUALISATION', 'pc-33-g');

Avec ce plugin, il n’y a pas de notion de site maître. Comme précisé ici, dans certains cas il faut ajouter le chemin vers le dossier mutualisation, mais est ce vraiment utile ? De même pour le site d’administration de la mutualisation, ce ne devrait pas être nécessaire.

Puis la fonction demarrer_site est définie, j’en détaille ici les variables.

  • ’creer_site’ => false,
    • Faut-il installer les fichiers, en principe, OUI, donc changer en true (sinon il ne vous demande même pas).
  • ’creer_base’ => false,
    • Faut-il créer une nouvelle base pour ce nouveau site ? (si vous voulez utiliser une seule base, laissez en false)
  • ’creer_user_base’ => false,
    • Faut-il créer un utilisateur MySQL pour cette base ? Ce sera un utilisateur distinct de celui qui à permis de créer la nouvelle base.
  • ’code’ => ’ecureuil’, // code d’activation par défaut
    • A changer pour s’éviter de mauvaises surprises.
  • ’table_prefix’ => false,
    • J’ai changé cette variable à true parce que je voulais que mes tables soient automatiquement préfixées.
  • ’cookie_prefix’ => false,
    • idem pour les cookies.
  • ’repertoire’ => ’sites’,
    • A changer si vous voulez utiliser autre chose que ce répertoire pour les sites mutualisés.
  • ’utiliser_panel’ => false
    • Sans objet pour nos premiers pas, et, c’est en principe utilisé dans le cas d’un site maître.
  • ’mail’ => ’vous @ domain .tld’
    • A changer, c’est l’e-mail qui sera utilisé pour vous avertir de la création d’un nouveau site (donc, non utile normalement pour les premiers pas)
  • ’url_creer_base’ => ’’
    • pour créer les bases en utilisant une URL interne au serveur (méthode AlternC, cf. ci-dessous)
  • ’url_img_courtes’ => false
    • Mettre a true pour que dans la partie publique les images aient une URL de la forme /IMG/jpg/image.jpg et non /sites/%nom%/IMG/jpg/image.jpg (l’intérêt principal est que les URLs ne sont pas modifiées si on exporte le site vers un hébergement solo).
      -* ’branding’ => 'Un service proposé par &lt;a href="http://www.spip.net/">la communauté SPIP</a>'
    • Texte a afficher en bas du formulaire d’activation de la mutualisation (ce peut être un lien vers une aide en ligne, un site d’explication...)
  • ’branding_logo’ => '&lt;a href="http://www.spip.net/">&lt;img src="/prive/images/logo-spip2.gif" alt="" /></a>'
    • Logo a afficher en bas du formulaire d’activation de la mutualisation (un bon endroit pour mettre votre logo : IMG/ à la racine du site)

Vous pouvez activer maintenant le plugin et tester son fonctionnement (ou lire les cas particuliers avant ?)

Quelques cas particuliers

Votre site est déjà existant

Si vous avez déjà un site opérationnel (par exemple spip-contrib.net) et que vous voulez le mutualiser, il suffit de suivre toutes les étapes,

  • Création du dossier sites
  • ajout du fichier .htaccess s’il était inexistant, et modifications pour la réécriture d’URL + tests.
  • Création du répertoire mutualisation et copies des fichiers du plugin.
  • Création ou modification du fichier /ecrire/mes_options.php pour y ajouter les éléments de la mutualisation et les variables. (je vous recommande de placer mes_options dans /ecrire plutôt que dans /config
    Enfin, créez les répertoires de mutualisation :
  • /sites/spip-contrib.net/config/ (Remplacez spip-contrib.net par votre nom de domaine.)
  • /sites/spip-contrib.net/IMG/
  • /sites/spip-contrib.net/local/
  • /sites/spip-contrib.net/tmp/

Ces répertoires peuvent être des liens symboliques vers les originaux du site à la racine, mais dans ce cas, le fichier mes_options.php devrait être déplacé dans /ecrire

Ainsi, dés l’activation du plugin, le site doit être opérationnel de manière transparente, vous ne devriez pas voir de différence.

personnalisation des squelettes pour chaque sites

Si plus tard vous voulez personnaliser les squelettes pour un site, il vous suffit de les placer dans le dossier

  • /sites/spip-contrib.net/squelettes/ (dossier à créer) Remplacez spip-contrib.net par votre nom de domaine.

Connaître et visiter les sites mutualisés

ecrire/?exec=mutualisation permet si l’on est admin du site et que l’on a les droits suffisant (lire le code) d’afficher les sites mutualisés.

La liste ainsi produite est clicable et permet de visiter chacun des sites. Mais aussi, de procéder aux mises à jour de ces derniers.

A savoir

-  Cette page décrit une méthode s’appuyant sur le plugin « mutualisation » et SPIP-2
-  Historiquement la mutualisation a commencé à être possible dans les dernières versions de SPIP-1 moyennant des méthodes demandant de mettre plus « les mains dans le cambouis »
-  Il existe certainement d’autres moyens pour mutualiser un site SPIP, consulter pour cela les références ci dessous produites dans ces phases de développement de la mutualisation
-  un exemple, très parlant, d’une mise en œuvre est donné dans cet article : Ferme à SPIP
-  d’autres explications détaillées ont été produites pour la La mutualisation d’avant SPIP-2
-  une bidouille pour gérer le dossier des plugins est donnée dans cet article : Gestion des dossiers /plugins (ou utiliser _DIR_PLUGINS_SUPPL)
-  En cas de difficultés, consultez les archives sur la liste spip-user, et, sinon, posez des questions claires, avec un sujet explicite.

Retour à la version courante

Toutes les versions