[2.0] Mutualisation avec une seule base

Bonjour,

Je souhaiterais installer plusieurs sites Spip 2.0 en mutualisant les sources sur un hébergement ne disposant que d'une seule base.

1/ Est-ce possible ?
2/ Est-ce qu'il y a un tutoriel quelque part ?

NB : Je n'ai pour l'instant trouvé que des documents valables pour Spip 1.9 et/ou utilisant plusieurs bases
(cf. http://www.spip.net/fr_article3514.html, http://www.pyrat.net/Mutualisation-SPIP-sur-OVH.html)

Merci d'avance pour vos lumières,

eM
---
"À force de regarder les étoiles, on finit par marcher sur des vers luisants."

Hello, oui, c'est possible.

Il y a un peu de doc la :
http://www.spip-contrib.net/La-mutualisation-facile

Si tu as des questions, n'hésite pas à me demander. J'ai mis ca en place
(mais avec plusieurs bases) il y a 2j.

Un grand merci d'ailleurs à _fil_ et marcimat qui m'ont filé un coup de
main sur irc.

Chag

Clinamen poste restante a écrit :

Bonjour,

Je souhaiterais installer plusieurs sites Spip 2.0 en mutualisant les
sources sur un hébergement ne disposant que d'une seule base.

1/ Est-ce possible ?
2/ Est-ce qu'il y a un tutoriel quelque part ?

NB : Je n'ai pour l'instant trouvé que des documents valables pour Spip
1.9 et/ou utilisant plusieurs bases
(cf. Mutualisation du noyau SPIP - SPIP,
Mutualisation SPIP sur OVH - Pyrat.net – Création de sites Internet)

Merci d'avance pour vos lumières,

eM
---
"À force de regarder les étoiles, on finit par marcher sur des vers
luisants."

_______________________________________________
liste spip
spip@rezo.net - désabonnement : spip-off@rezo.net

Infos et archives : http://listes.rezo.net/mailman/listinfo/spip

Documentation de SPIP : http://www.spip.net/

irc://irc.freenode.net/spip ou
http://embed.mibbit.com/?server=irc.freenode.net&channel=%23spip

--
"Ca ne marche pas" ne veut rien dire. Alors ne dites rien (ou développez !)
"it doesn't work" means nothing. So, say nothing (or say more !)

Clinamen poste restante a écrit :

Je souhaiterais installer plusieurs sites Spip 2.0 en mutualisant les
sources sur un hébergement ne disposant que d'une seule base.

1/ Est-ce possible ?

Oui

2/ Est-ce qu'il y a un tutoriel quelque part ?

Oui.

Il y a un plugin "Mutualisation": doc
http://www.spip-contrib.net/La-mutualisation-facile

Il y a un article "Ferme à spip" qui rajoute un peu de sel

Et c'est simple puisque j'ai su le faire :wink:

--
Suske

Suske a écrit :

Clinamen poste restante a écrit :

Je souhaiterais installer plusieurs sites Spip 2.0 en mutualisant les
sources sur un hébergement ne disposant que d'une seule base.

1/ Est-ce possible ?
    
Oui

2/ Est-ce qu'il y a un tutoriel quelque part ?
    
Oui.

Il y a un plugin "Mutualisation": doc
La mutualisation facile : modifications manuelles

Il y a un article "Ferme à spip" qui rajoute un peu de sel
Ferme à SPIP - SPIP-Contrib

Et c'est simple puisque j'ai su le faire :wink:
  
Un document que j'ai créé ici (si ça peut aider) : http://spip.ac-rouen.fr/?Mettre-en-place-une-plate-forme

Cordialement,
Olivier Gautier.

--
Suske

_______________________________________________
liste spip
spip@rezo.net - désabonnement : spip-off@rezo.net

Infos et archives : http://listes.rezo.net/mailman/listinfo/spip

Documentation de SPIP : http://www.spip.net/

irc://irc.freenode.net/spip ou http://embed.mibbit.com/?server=irc.freenode.net&channel=%23spip

Bonsoir,

Merci pour vos réponses, j'ai avancé mais je bloque sur le paramétrage du fichier mes_options.php

Supposons que mon hébergeur me fournit une base MySql sur le serveur 'mysql17', base nommée 'domaine_spip' à laquelle j'accède par le login 'utilisateur' et la password 'mdp'

J'ai fait plusieurs essais en m'inspirant des indications données dans le fichier par défaut et des exemples donnés sur http://www.spip-contrib.net/Plugin-Mutualisation
Mais, la connexion à la base de données a échoué à chaque fois...

Je suis sans doute un peu perdu entre les variable _INSTALL_HOST_DB et _INSTALL_NAME_DB

Pourriez-vous m'indiquez où se situe mon (mes) erreur(s) dans la configuration ci-dessous ?

[…]

define ('_INSTALL_SERVER_DB', 'mysql');
define ('_INSTALL_HOST_DB', 'domaine_spip');
define ('_INSTALL_USER_DB', 'utilisateur');
define ('_INSTALL_PASS_DB', 'mdp');
define ('_INSTALL_NAME_DB', 'domaine_spip');
define ('_INSTALL_TABLE_PREFIX', 'spip');
define ('_INSTALL_HOST_DB_LOCALNAME', 'mysql17');
define ('_SITES_ADMIN_MUTUALISATION', 'domaine.tld');

[…]

En vous remerciant par avance

eM
---
"À force de regarder les étoiles, on finit par marcher sur des vers luisants."

Clinamen poste restante a écrit :

Pourriez-vous m'indiquez où se situe mon (mes) erreur(s) dans la
configuration ci-dessous ?

define ('_INSTALL_HOST_DB', 'domaine_spip');

Plutot qq ch comme: define ('_INSTALL_HOST_DB', 'localhost');

--
Suske

je dirai plutot

define ('_INSTALL_SERVER_DB', 'mysql');
define ('_INSTALL_HOST_DB', 'mysql17');
define ('_INSTALL_USER_DB', 'utilisateur');
define ('_INSTALL_PASS_DB', 'mdp');

vu que la base est sur mysql17

dans
define ('_INSTALL_NAME_DB', 'domaine_spip');

je mettrai le nom de la base (qui ne s'appelle probablement domaine_spip)

ca, c'est le prefix des noms des tables de la DB
define ('_INSTALL_TABLE_PREFIX', 'spip');
mais on peut avoir un truc du genre
define ('_INSTALL_NAME_DB', 'mutu_'.prefixe_mutualisation($r[1]));
qui va changer le prefix selon le site auquel on essaie d'acceder

ca, je ne suis pas sur que ca serve. Essayer avec et sans
define ('_INSTALL_HOST_DB_LOCALNAME', 'mysql17');

et ca, c'est l'adresse du site qui gere l'admin des sous sites.
define ('_SITES_ADMIN_MUTUALISATION', 'domaine.tld');

Chag

Suske a écrit :

Clinamen poste restante a écrit :

Pourriez-vous m'indiquez où se situe mon (mes) erreur(s) dans la
configuration ci-dessous ?

define ('_INSTALL_HOST_DB', 'domaine_spip');

Plutot qq ch comme: define ('_INSTALL_HOST_DB', 'localhost');

--
Suske
_______________________________________________
liste spip
spip@rezo.net - désabonnement : spip-off@rezo.net

Infos et archives : http://listes.rezo.net/mailman/listinfo/spip

Documentation de SPIP : http://www.spip.net/

irc://irc.freenode.net/spip ou http://embed.mibbit.com/?server=irc.freenode.net&channel=%23spip

--
"Ca ne marche pas" ne veut rien dire. Alors ne dites rien (ou développez !)
"it doesn't work" means nothing. So, say nothing (or say more !)

Bonjour,

Tout d'abord, merci beaucoup pour votre aide grâce à laquelle j'ai réussi à mutualiser les sites.

Le 6 janv. 09, à 10:31, assobachant a écrit :

en espérant que tu fera un tuto si cela fonctionne

Donc, en dehors de vos messages, je me suis surtout appuyé sur le lien suivant :
Source : http://www.spip-contrib.net/Plugin-Mutualisation

Mon objectif était de mutualiser des sites dont les adresses respectives seraient test1.domaine.tld, test2.domaine.tld, test3.domaine.tld

Je suppose que mon hébergeur me fournit une base MySql sur le serveur 'mysql17', base nommée 'domaine_spip' à laquelle j'accède par le login 'utilisateur' et la password 'mdp'

J'ai procédé comme suit :
* Installation de Spip 2.0.2 dans le dossier chez_hébergeur/www/~domaine/spip/
* Installation du pluggin Mutualisation dans le dossier chez_hébergeur/www/~domaine/spip/mutualisation
* Création des sous-domaines test1.domaine.tld, test2.domaine.tld, test3.domaine.tld pointant tous vers dossier cible chez_hébergeur/www/~domaine/spip/
* Creation d'un dossier chez_hébergeur/www/~domaine/spip/sites, il faudra alors indiquer 'sites' pour la variable repertoire de demarrer_site dans mes_options.php (cf. ci-dessous)
* Renommer le fichier mes_options.php.txt en mes_options.php, le paramètrer, le mettre dans chez_hébergeur/www/~domaine/spip/config
* Accéder aux adresses test1.domaine.tld, test2.domaine.tld, test3.domaine.tld pour initialiser les sites selon la procédure habituelle après avoir indiqué un code d'activation (donné dans mes_options.php).

Le fichier mes_options.php : c'est le point sensible dans la mesure où, si j'ai bien compris, il permet d'automatiser l'ensemble d'une "ferme à Spip" et prévoit donc de créer des bases, des utilisateurs et peut gérer un tas de configurations dépassant le simple cas d'école qui est le mien.
Qui peut le plus, peut le moins... à condition de s'y retrouver dans le paramétrage :slight_smile: avec votre aide j'ai opté pour la version ci-dessous de mes_options.php avec succès dans mon cas.

<?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'); // type de serveur
  define ('_INSTALL_HOST_DB', 'mysql17'); // nom du serveur mysql
  define ('_INSTALL_USER_DB', ''utilisateur'); // login pour accéder à la base mysql
  define ('_INSTALL_PASS_DB', 'mdp'); // password pour acceder à la base mysql
  define ('_INSTALL_NAME_DB', 'domaine_spip'); // nom de ma base mysql

  #define ('_INSTALL_TABLE_PREFIX', 'spip'); // mis en commentaire pour me permettre de décider 'manuellement' du préfixe des tables pour un site donné lors de l'initialisation de celui-ci

  # define ('_INSTALL_HOST_DB_LOCALNAME', 'mysql17'); // mis en commentaire car sans ça marche donc bon... je n'ai pas cherché plus loin
  
  define ('_SITES_ADMIN_MUTUALISATION', 'domaine.tld');

  demarrer_site($site,
    array(
      'creer_site' => true, // Creer ou non le site s'il n'existe pas (defaut: false)
      'creer_base' => false, // Creer ou non la base de donnee si elle n'existe pas (false)
      'creer_user_base' => false, // Creer ou non un utilisateur pour la nouvelle base de donnee (false)
      'mail' => 'utilisateur@domaine.tld', // Adresse mail pour recevoir un mail lors d'une creation de site mutualise ('')
      'code' => 'ecureuil', // Code d'activation ('ecureuil')
      'table_prefix' =>false, // Definir automatiquement le prefixe de table (false) ... mettre true si tous les sites dans la meme base
      'cookie_prefix' =>false, // Definir automatiquement le prefixe de cookie (false)
      'repertoire' => 'sites', // Nom du repertoire contenant les sites mutualises ('sites')
      'url_img_courtes' => true, // Utiliser la redirection des URL d'images courtes dans la partie publique (false)
      'url_creer_base' => '' // Creer la base de donnees via une URL (methode AlternC)
    )
  );

?>

Voilà, je crois que c'est tout... une remarque et une question...

* Si j'ai bien compris, cette méthode (plugin mutualisation) ne fonctionne que pour des sites "en sous-domaine". Donc si on veut mutualiser les sites www.domaine1.tld et www.domaine2.tld, il faut faire autrement mais je n'ai pas compris pourquoi.
* Cette méthode semble fondée sur de la réécriture d'url en amont mais je n'ai pas trouvé dans quel fichier la procédure était gérée (un .htaccess quelque part créé automatiquement par le plugin mutualisation ? mais où?).

Voilà, en tout cas ça fonctionne, merci encore pour votre aide.
Merci aussi aux concepteurs de la version 2.0 que je découvre avec beaucoup de plaisir.

Sincèrement,

eM
---
http://www.clinamen.org
"À force de regarder les étoiles, on finit par marcher sur des vers luisants."