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

  • 1
    Maxwell

    Bonjour,

    Merci beaucoup pour toutes vos réponses,

    Alors tu as fait une connerie, tu me vide le dossiers sites au plus vites

    Spip te les créera (c pour ça les chmod 777)mais un conseil ne les apelle pas pareils

    J’ai fait comme vous avez dit.Comment je dois faire dans ce cas, pour qu’il me crée un dossier intranet par exemple dans sites ??Quand je lance l’url http://serveur/spip/intranet il me crée en fait un dossier portant le nom de mon serveur dans sites.C’est pas vraiment cela que je souhaiterai avoir.J’ai du raté une étape ou je n’ai pas compris le principe.
    Merci d’avance
    Bonne journée !!

    Répondre à ce message

  • 1
    Maxwell

    Oui c’est bien cela.Pour l’instant je teste ca sur un serveur de développement.
    C’est plus pratique pour la maintenance des sites de mutualiser.Il suffit de mettre à jour une seule fois.

    « Sinon Tu mets spip dans un dossier spip, tu rajoute le plugins mutualisation et sites chmod 777) dans ce meme dossiers spip »

    Ceci a été fait.

    J’ai crée dans sites 2 dossiers intranet et internet avec chacun 4 dossiers( tmp,local,IMG et config)
    Ce que je comprend pas, c’est que lorsque je lance l’url http://serveur/spip/ ou http://serveur/spip/intranet
    il me demande de créer un répertoire et du coup me crée un dossier serveur(nom du serveur) dans sites.
    Il y aurait un systeme de redirection à mettre en place non ??

    • Alors tu as fait une connerie, tu me vide le dossiers sites au plus vites

      Spip te les créera (c pour ça les chmod 777)mais un conseil ne les apelle pas pareils

    Répondre à ce message

  • 1
    Maxwell

    Bonjour à tous

    Je souhaiterai me créer un intranet et un internet en utilisant la mutualisation
    Je possede un serveur : je lance mes appli web par exemple par l’url http://serveur/appli1...http://serveur/appli2

    Je me suis installé un SPIP dans http://serveur/spip
    J’ai installé le plugin mutualisation dans la racine de spip
    J’ai crée un dossier sites/ dans la racine spip avec acces ecriture
    J’aimerai pour lancer mes sites mutualisés de cette facon :
    http://serveur/intranet et http://serveur/internet
    Je n’y arrive pas du tout.Je n’arrive pas à configurer mon fichier mes_options.php
    Est ce que quelqu’un pourrait m’apporter un peu d’aide ??
    Merci d’avance

    • Bonjour

      Si je comprens bien tu vas monter 2 intrénet sur le même serveur ? Je trouve ça bizard mais bon, si c que pour deux site ne fais pas de mutualisation a mon goût

      Sinon
      Tu mets spip dans un dossier spip, tu rajoute le plugins mutualisation et sites chmod 777) dans ce meme dossiers spip

      Les dossier tmp, IMG et local doivent être supprimer. POur le mes_options a tu bien lu nos indications ?

    Répondre à ce message

  • 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 ?

    Répondre à ce 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é ???

    Répondre à ce 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 ».

    Répondre à ce 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 ?

    Répondre à ce 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 ?

    Répondre à ce 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....

    Répondre à ce message

  • 1

    Ça marche sur quelle version ?

    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