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.

Footnotes

[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

47 discussions

  • une question bete,

    le plugin fonctionne tres bien sur ma machine sauf dans un cas qui me dérange beaucoup, celui du www.
    alors suis je une trume ? ou ais je raté quelque chose ?

    Reply to this message

  • 5

    Bonjour,
    Je voudrais mettre en place un site regroupant plusieurs marchands de chevaux, on pourrais accéder à ce site suivant 2 methode soit :
    -  www.<nom du marchand>.com et on aurait acces seulement aux articles liées à ce marchand (il a une rubrique perso ou sont tous ses articles)
    -  www.<nom du site>.com ou on aurait acces à l’ensemble des articles.

    est-ce possible avec le plugin mutualisation ? et si oui comment ?
    Merci d’avance pour les réponses

    • Bonjour, non la mutualisation ne vas pas spécialement t’aider, c’est une question SPIP et il y a plusieurs solutions possibles, va demander de l’aide sur la liste SPIP

      Cet article et exemple traite uniquement du cas site1.nomdedomaine.com , site2.nomdedomaine.com, site3.nomdedomaine.com ....

    • Salut,

      Merci pour cette contribution, juste une remarque le titre “ferme à SPIP” n’est pas explicite au premier abord.

    • Bonjour, que proposes tu comme titre ? ;-)

    • Silo à SPIP pourrait être sympa

    • et hop ! Je rebondis là dessus :

      ... www._site 1_.com, www._site 2_.com ...

      non la mutualisation ne vas pas spécialement t’aider.
      Cet article et exemple traite uniquement du cas site1.nomdedomaine.com , site2.nomdedomaine.com, site3.nomdedomaine.com ....

      Derrière, par le biais d’une redirection 301 ? Ca n’est toujours pas possible ?

      Ou alors faut-il installer sa ferme sur un dédié et avoir les clés du-dit dédié ???

    Reply to this message

  • 1

    Bonjour,
    Le lien GrmlEU donne l’erreur : “Fatal error: Call to undefined function: generer_url_article() in /home/grml/public_html/ecrire/public/composer.php(51) : eval()’d code on line 62”.

    Reply to this message

  • Salut et merci pour ce superbe plugin !

    Comment je fais pour avoir:
    -  quelques plugins mutualisés (réponse: à la racine dans plugins)
    -  pour un site donné, ses propres plugins

    Sur IRC, _fil_ m’a dit dir_plguins => sites/ccc/plugins

    Après, le débat a tourné sur l’amateurisme des spipiens ;-)

    Je mets ça dans mes_options ?

    Reply to this message

  • 1

    dans l’intro est indiqué :
    “Installer le plugin Mutualisation (il est plus simple de ne pas le mettre dans le répertoire plugin) . Nous avons donc « /home/grml/public_html/mutualisation”

    c’est pas clair voire contradictoire.

    gnn ?

    • en fait tu peux soit l’installer dans le repertoire plugin soit à la racine ... mais comme ce plugin ne doit pas être désactivé, il est préférable de l’installer à la racine .

      donc en résumé il est préférable de l’installer dans /home/grml/public_html/mutualisation plutôt que dans /home/grml/public_html/plugins/mutualisation (l’installation du spip étant dans /home/grml/public_html/ )

      c’est plus clair comme cela ?

    Reply to this message

  • Oo que je suis content un article pour mutualisé spip; depuis le temps que je me bagarre avec malgré le carnet et bien c’est pareil...

    Je suis nul.

    Donc j’ai installé ubuntu avec tous keskifo ;)

    l’adresse : www.bachant.info pointe sur la machine d’ailleurs j’ai la page d’accueil de la mutu.

    mais lorsque je fait www.test.bachant.info j’arrive a rien .Serveur introuvable

    je pense que c’est le fichier mes_options que je ne sais pas comprendre le voici donc en copie.
    Si vous pouvez faire en sorte que mon ecureuil et des jeunes j’en serais ravie merci

    @micalement stéphane

    <?php
    
            $GLOBALS['taille_des_logs']=1000;
            #parametrage a faire 
            $monTld="bachant.info";
    
            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' => 'asso.bachant@laposte.net'
                            )
                    );
            }
            else {
            $GLOBALS['dossier_squelettes']=":mutualisation";
            }
    >?

    j’ai opté pour scriibe, car une base et un utilisateur mysql sont créés pour chaque
    l’idée et de pouvoir démultiplier les sites de l’association et que chacun puiseent y trifouiller comme bon lui semble....

    Reply to this message

  • 1

    Ça marche sur quelle version?

    Reply to this message

Add a comment

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 / PostgreSQL
  • 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 apparait.

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.

Who are you?
[Log in]

To show your avatar with your message, register it first on gravatar.com (free et painless) and don’t forget to indicate your Email addresse here.

Enter your comment here

This form accepts SPIP shortcuts {{bold}} {italic} -*list [text->url] <quote> <code> and HTML code <q> <del> <ins>. To create paragraphs, just leave empty lines.

Add a document

Follow the comments: RSS 2.0 | Atom