Ferme à SPIP

Un petit article synthétique qui explique en quelques mots et captures d’écrans comment faire une « ferme à SPIP » avec le plugin "Mutualisation" à partir d’un nom de domaine principal.

ATTENTION , cet article nécessite d’utiliser une version stable > à 2.0

Les prérequis (au 1er janvier 2008) :

-  posséder un nom de domaine disponible
-  avoir la possibilité de modifier la configuration apache

Dans l’exemple suivant on supposera que l’on cherche à mettre la ferme sur le site GrmlEU [1]

Installation SPIP

Installer un SPIP (une version récente est recommandée). Pour la suite de l’exercice on supposera que le SPIP est installé dans le répertoire « /home/grml/public_html/ ».

Installation plugin mutualisation

Installer le plugin Mutualisation [2] (il est plus simple de ne pas le mettre dans le répertoire plugin) . Nous avons donc « /home/grml/public_html/mutualisation »

Configuration apache

Modifier la configuration apache

Si vous êtes sur apache2 il faut créer un fichier grml.eu.

etc/apache2/sites-available# more grml.eu 
<VirtualHost *>
ServerName grml.eu
ServerAlias *.grml.eu
DocumentRoot /home/grml/public_html
</VirtualHost>

Ce qui veut dire que tous les sous domaines de grml.eu vont pointer vers le répertoire « /home/grml/public_html ».

Ensuite il faut faire une lien symbolique pour que le domaine soit actif

cd etc/apache2/sites-enable
ln -s /etc/apache2/sites-available/grml.eu  grml.eu 

Enfin il faut prendre en compte ces changements

/etc/init.d/apache2 force-reload 

Configuration DNS

Il faut maintenant que lorsque l’on tape grml.eu, il redirige vers l’adresse ip du serveur

voici la config utilisée chez gandi

Configuration de la mutualisation

Copier le fichier /home/grml/public_html/mutualisation/mes_options.php.txt vers « /home/grml/public_html/config » et enlevez l’extension « .txt » . Ouvrez ce fichier et procédez au paramétrage.

Pour vous aider voici le fichier de config utilisé sur scriibe

<?php

        $GLOBALS['taille_des_logs']=1000;
        #parametrage a faire 
        $monTld="scriibe.net";

        require _DIR_RACINE.'mutualisation/mutualiser.php';
        define ('_ID_WEBMESTRES', 1);

        $site = $_SERVER['HTTP_HOST'];

        $type_urls = 'propres2'; # par defaut, surchargeable ci-dessous

        switch($site) {
                case "www.$monTld":
                        $site=$monTld;
                        break;
                case 'www.spip-blog.net':
                        $site='spipblog';
                        break;
                case 'spip-blog.net':
                        $site='spipblog';
                        break;
                default :
                        $site = str_replace('.scriibe.net', '', $site);
                        break ; 
        }
        define ('_SITES_ADMIN_MUTUALISATION', ''); // ici sites esclaves
        define ('_INSTALL_SERVER_DB', 'mysql');
        define ('_INSTALL_HOST_DB', 'plouf');
        define ('_INSTALL_USER_DB_ROOT', 'plouf');
        define ('_INSTALL_PASS_DB_ROOT', 'plouf');
        define ('_INSTALL_TABLE_PREFIX', 'spip');
        define ('_INSTALL_NAME_DB', 'scr_'.prefixe_mutualisation($site));
        if ($site != "$monTld") {
                demarrer_site($site,
                        array(
                        'creer_site' => true,
                        'creer_base' => true,
                        'code' => 'plouf',
                        'url_img_courtes' => true,
                        'creer_user_base' => true,
                        'mail' => 'ben.spip@gmail.com'
                        )
                );
        }
        else {
        $GLOBALS['dossier_squelettes']=":mutualisation";
        }

?>

pour celui sur GrmlEU

<?php

        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');
        define ('_INSTALL_HOST_DB', 'localhost');
        define ('_INSTALL_USER_DB', 'plouf');
        define ('_INSTALL_PASS_DB', 'plouf');
        define ('_INSTALL_NAME_DB', 'grml');
        #define ('_INSTALL_TABLE_PREFIX', 'spip');
 
        define ('_SITES_ADMIN_MUTUALISATION', 'grml.eu');


        demarrer_site($site,
                array(
                        'creer_site' => true,  
                        'creer_base' => false,
                        'creer_user_base' => false,
                        'mail' => 'ben.spip@gmail.com',               
                        'code' => 'ecureuil',
                        'table_prefix' => true,     
                        'cookie_prefix' => true,   
                        'repertoire' => 'sites',     
                        'url_img_courtes' => true, 
                        'url_creer_base' => '' 
                )
        );

?>

On peut noter que pour scriibe, une base et un utilisateur mysql sont créés pour chaque site. Par contre sur GrmlEU, il n’y a qu’un user et qu’une seule base, avec un préfixe différent pour les tables de chaque site.

Notes

[1GrmlEU est un site qui permet d’essayer SPIP : vous pouvez créer un SPIP en quelques clics. Les sites sont effacés tous les mois

Discussion

50 discussions

  • Hello,

    J’ai rédigé un petit billet concernant l’installation de spip mutualisé en spip 3 sur un mutualisé OVH avec serveur sql dédié : http://www.soon7.com/developpements/mutualisation-du-noyau-spip-3-sur-un-mutualise-de-chez-ovh/

    Répondre à ce message

  • 2

    Bonjour,

    Je veux installer plusieurs sites en mutualisation, dont un déjà existant ailleurs.
    Le site existant, domaine1.org, doit être refondu avant.

    Je voudrais créer un site en mutualisation, temp.domaine1.org, qui serait une version de développement de domaine1.org.
    Puis, une fois les nouveaux développements terminés, remplacer temp.domaine1.org par domaine1.org.
    Est-ce possible avec l’install de mutualisation ?
    Là j’ai essayé, sur Gandi Simple Hosting, de faire un lien symbolique d’un site nouveau vers un site déjà installé en mutu, mais l’installation se déclenche come si c’était un nouveau site.
    Si je fais une redirection « redirect permanent » avec un htaccess, c’est toujours l’url du site visé qui s’affiche.

    Est-ce donc possible de faire pointer domaine1.org vers le temp.domaine1.org, pour utiliser l’install de temp.domaine1.org, en ayant l’url de domaine1.org d’affichée ?
    Ou est-on obligé d’installer un nouveau spip mutu avec domaine1.org (avec la base développée dans temp.domaine1.org), en ayant un temps de coupure le temps de l’installation spip + plugins + paramétrages divers ?

    Je sais pas si ma question est claire ? (j’ai l’habitude des installs spip, j’ai déjà réalisé une mutualisation spip sur Gandi AI et GAndi Simple hosting, mais je ne connais pas les serveurs, Apache, etc.)

    Autre question : quelqu’un a déjà fait de la mutualisation spip sur Ouvaton ? Ca parait pas gèrable par l’utilisateur, car là on a juste des espaces web « séparés » sur son espace, et pas de moyens apparemment de faire un lien symbolique entre deux espaces... A moins qu’il y ait d’autres moyens ?

    Merci pour toute aide utile
    DM

    • Bonjour

      Tu as renommer le dossier dans /site ?

    • Eh oui, bien vu !, il suffit de renommer le dossier du site dans /sites/
      Je n’avais pas osé le faire en me disant que forcément ça allait perturber tout.

      Là on a la bonne url et on récupère le site déjà développé du coup ! Il suffit de changer aussi l’url dans configuration/identité du site

      Merci, ça va me simplifier bien le travail !

    Répondre à ce message

  • 3

    Bonjour
    impossible de faire fonctionner les thèmes et le Zen-Garden avec la mutualisation.
    J’ai essayé de placer le dossier « thèmes » soit à la racine de spip, soit à la racine de chaque site, rien à faire.
    Dans les deux cas, le Zen-Garden « voit » bien les thèmes et les propose dans l’espace privé, mais n’arrive pas à les activer, ni en visualisation, ni en choix....
    Une solution ?
    merci

    • Bonsoir

      Version de spip ? parce que en 2.1 ça fonctionne et en 3 aussi chez moi.

    • Merci de la réponse rapide (malheureusement elle ne me rassure pas ;)
      je suis en SPIP 3.0.2 de hier soir, le plugin mutualisation 59992 commit du 02/04/12
      Je ne vois pas trop quoi réinstaller....
      quelle est la config qui marche chez toi ?
      dans mes plugins j’ai
      saisies
      yaml
      zen-garden
      (peut-être fautil bonux mais je crois que en SPIP 3 ca ne sert à rien ?)

    • je me réponds en remerciant encore pierre.
      il faut le plugin
      Zpip-dist v1 1.7.19

      Mais comme Zen-Garden ne le met pas en « required » et que je pensais que Spip 3 était « natif Zpip », et bien cela ne marchait pas...

      Mes excuses
      MJ

    Répondre à ce message

  • Lupitek

    J’ai une ferme a spip avec 20 sites dessus et je viens de me rendre compte qu’en faisant www.monsite1.com/sites/ j’obtient le listing de tous mes sites dans la mutualisation.

    Je n’ai pas vu dans la procédure d’installation qu’il fallait protéger le dossier /sites/ avec un .htaccess... ou alors j’ai raté un truc.

    Répondre à ce message

  • 3
    ERNCHEMILLOIS

    Bonjour,
    avec une seule base est il possible de jouer uniquement sur les préfixes des tables en réutilisant le nom du site, sans recréer une base de donnée indépendante ?

    Merci !

    • Affirmatif :
      -  le répertoire config est propre a chaque site !
      -  son fichier « connect.php » permet de choisir le $prefix

    • ERNCHEMILLOIS

      Merci pour la rapidité de la réponse, je m’attèle à la tâche de suite ,
      Et merci aux développeurs du plugin !

    • IL faut juste que tu régles bien le fichier de config pour que les sites s’installe correctement.
      Ne fais pas ça avec de gros site sinon j’ai peur que la base déconne.

    Répondre à ce message

  • Bonjour,

    Est-ce que ce plugin peut-être utilisé avec des sites en sous-répertoire au lieu de sous-domaine ? Je voudrais que mes adresses soient comme ça : www.mondomaine.com/site1, www.mondomaine.com/site2, etc.

    merci !

    Répondre à ce message

  • 1
    Tipoussin

    Bonjour,

    Je sèche sur l’utilisation de ce plugin. Lorsque je tape mondomaine.tld, j’arrive sur une page « Installation de votre site SPIP » où on me demande un code d’activation du site...

    Qu’est-ce que c’est ?

    Merci

    Répondre à ce message

  • 4
    Apprenti geek

    Bonjour, j’ai installé le plugin mutualisation et tout marche impeccable.

    Seulement voilà, je ne sais pas comment faire un lien du dossier IMG d’un nouveau site mutualisé vers le dossier IMG du site existant avant la mutualisation...

    Dans le carnet Wiki sur la mutualisation, un auteur a écrit :
    “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”

    J’ai bien mis mon fichier mes_options.php dans /ecrire/ mais je ne sais pas comment mettre en place ces liens symboliques.

    Quelqu’un aurait-il une idée ?

    Merci d’avance et comme d’hab, bravo pour le travail collaboratif de toute cette communauté !

    • Bonjour

      Pourquoi ne pas déplacer le fichier IMG vers la mutualisation ?

    • Apprenti Geek

      Bonjour,

      Tu as raison, mais étant que deux sites utiliseront la même base de données et donc les mêmes ressources à savoir le répertoire IMG, j’aurai aimé automatiser un peu le truc...

      Deux solutions s’offrent à moi :
      -  soit je mets en place une synchronisation automatique des deux sous répetoires IMG (aucune idée comment procéder mais cette solution supposerait de dupliquer automatiquement tout fichier dans le dossier IMG du site 1 vers le dossier IMG du site 2 ;
      -  soit je permets au site 2 d’aller chercher son dossier IMG non pas dans son sous répertoire, mais dans le sous répertoire du site 1 ;

      J’espère que je suis suffisamment clair... tu penses pouvoir m’aider ?

      Merci d’avance en tout cas pour ta réponse

    • Alors à ta réponse voici une question : 2 sites OK

      Pourquoi la même base et les même images, autant faire un site non ?

    • Apprenti Geek

      non parce que le site 1 n’a pas le même design et ne propose pas les mêmes fonctionnalités que le site 2 ... donc des templates différents mais un contenu de base similaire pour certaines rubriques...

    Répondre à ce message

  • 5

    Bonjour,

    Je pense créer un site internet et un blog. Idéalement le site sera multilingue et le blog dans une seule langue.

    Mon but est d’avoir une adresse internet www.adresseweb.com et un sous-domaine interne pour mon blog : blog.adresseweb.com

    Est ce que ce plugin est adapté à mon objectif ?
    Si non, y a t il une autre solution ?

    Merci

    • Bonsoir
      L’intéré de ce plugins est de mutualiser un spip et ses plugins donc si tu as 2 sites et 2 squelettes cela ne vos pas le coup a mon avis.

      Peux tu nous en dire plus sur ton projet ?

    • Comme indiqué dans mon précédent message, je souhaite réaliser un site sur une adresse et un blog sur un domaine interne (par exemple http://blog.adresseweb.com.
      L’une des solution que je vois, est de créer des compositions différentes (une pour le site + une autre pour le blog) avec plusieurs rubriques dont l’une blog. Sur mon FTP, dans mon répertoire /blog, je pourrais placer un fichier de redirection php vers l’url générée par spip pour la rubrique blog.

      Néanmoins, tout ça me semble de la bricole. D’où mes recherches s’il n’y aurait pas une meilleure solution plus « propre ».

    • Pierre KUHN

      Dans ce cas autant monter 2 sites a moins que tes plugins soit commun car si je comprend bien tu utiliserais Composition ?

    • Oui, j’utiliserais Compositions et d’autres plugins certainement en commun.
      Néanmoins, le désavantage de 2 sites est d’avoir 2 espaces privés. Mon but est d’en avoir idéalement un seul. D’ou mas recherche sur la mutualisation.

    • Pierre KUHN

      Euh alors tu as pas compris ce qu’est la mutualisation. La mutu te permets d’avoir x sites sur 1 SPIP et donc x espaces privés.

      Si tu veux 1 espace privé, il te faut dans ce cas jouer avec le plugins multidomaine http://www.spip-contrib.net/Plugin-Multidomaines

    Répondre à ce message

  • 1

    La personnalisation de la variable $dossier_squelettes> via $GLOBALS['dossier_squelettes'] = 'mon_dossier' dans mes_options.php ne fonctionne pas chez moi dans le cadre d’une ferme à spip. C’est normal ça ?

    • Je me réponds à moi-même...
      En fait il faut indiquer le chemin complet du répertoire que l’on souhaite prendre en compte

      Par ex : pour le site1 :

      dans
      www/sites/monsite1/config/mes_options.php

      il faut indiquer
      $GLOBALS['dossier_squelettes'] ='sites/monsite1/skel';
      et le rép. skel est bien pris en compte.

      Quand on y réfléchit, c’est assez logique, mais c’est tout de même perturbant au premier abord puisqu’on a envie d’écrire
      $GLOBALS['dossier_squelettes'] ='skel';

      et dans ce cas, SPIP s’attend à trouver un dossier ’skel’ à la racine.. de la mutualisation ! Et non pas à la racine « du site1 »

      Logique, mais pas tout à fait « portable » : si on sort le site de la mutualisation (ex : sur mon site de développement en local, c’est en mutu <==> sur le site en production, ce n’est plus le cas), le contenu de mes_options.php n’est pas strictement le même

      N’y aurait-il pas moyen d’homogénéiser les deux écritures ?

      Allez, bonne année à notre écureuil et un énoooorme merci à ses développeurs !

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom