La mutualisation facile

Bonjour,

je reviens sur ce vieux message :

Le 17 mai 07 à 00:10, Fil a écrit :

La révision 9300 intègre un mutualiseur automatique.

Comment ca marche, la mutualisation :

- on peut faire Mutualisation du noyau SPIP - SPIP

certes, mais incompréhensible pour moi, ainsi que

et
http://www.spip-contrib.net/La-mutualisation-facile

une fois on parle d'un site en fonctionnement, une autre fois de ne pas installer avant la fin de la configuration de la mutualisation. Et comme plusieurs options sont développées simultanément, plouf ! perdu. Je n'arrive pas à restituer un pas à pas simple (n'importe lequel, les options se sera pour d'autres tests) et complet.
Pour compliquer le tout, plusieurs pages ou mails parlent d'un plugin mutualisation (d'où qu'il est ?) à utiliser ! Mais pas d'adresse ; s'agit-il d'une expression abusive pour le fichier mutualiser (tiens, je ne le trouve pas dans mon /inc d'ailleurs) ?

je précise que je teste en local (spip 10533), avec
http://localhost:8888/mutu/
pour installer
MAMP/htdocs/mutu/sites/site1
MAMP/htdocs/mutu/sites/site2
MAMP/htdocs/mutu/sites/site3
(si j'ai tout compris)

- on peut faire aussi, desormais, dans mes_options.php

on le met où ? dans /config (avant ou après installation du spip), dans /ecrire, à la racine ?
le spip de base (ici "mutu"), sert-il ou pas, existe-t-il d'ailleurs ? Ce n'est pas clair.

====
Ahhhh ! Erreur de transmission. Quand ce message est passé par svn, il
a bouffé les dollars :frowning:

Il fallait lire :
<?php
include_spip('inc/mutualiser');
demarrer_site($_SERVER['HTTP_HOST']);
?>

<?php
include_spip('inc/mutualiser');
demarrer_site($_SERVER['HTTP_HOST'], array('creer_site' => true));
?>

-- Fil

les options sont :
- creer_site (false par defaut), cree le repertoire sites/xxxx/ et les
4 sous-repertoires IMG, local, tmp et config
- cookie_prefix (true par defaut) ajoute un cookie_prefix
- table_prefix (true par defaut) ajoute un table_prefix

comment devine-t-il les /xxxx s'ils ne sont pas créés ?

le script charge automagiquement le fichier
sites/xxx/config/mes_options.php s'il exsite, et positionne la
variable des squelettes sur sites/xxx/squelettes/

même remarque, donc même réponse, je suppose :slight_smile:

Voilà, j'ai testé chaque explication en local. Rien, sinon parfois des pages blanches provoquées par le "mes_options.php". Les tests, sont pour installer ensuite sur un serveur en AlternC.

Claude

Nota: ce script fait quelques choix (par exemple sur le prefixe des
tables ou du cookie) qu'on peut toujours renverser soit dans
mes_options.php, soit dans sites/xxx/config/mes_options.

Il ne prejuge pas de ce qui definit un site : dans l'exemple ici je
définis le site sur la variable $_SERVER['HHTP_HOST'], mais ça
pourrait bien être autre chose (un truc qui change selon un élément de
REQUEST_URI, ou en fonction de l'IP du visiteur ou de l'heure qu'il
est).

Ce n'est qu'une collection de fonctions, qu'on peut enrichir si on a
d'autres astuces de mutualisation.

-- Fil
_______

dlatr a écrit :

Pour compliquer le tout, plusieurs pages ou mails parlent d'un plugin mutualisation (d'où qu'il est ?) à utiliser ! Mais pas d'adresse ;

Salut,

Donc : le 'pseudo' plugin à installer dans /mutualiser (pas dans /plugins/mutualiser) :

il est développé sur la zone :

on peut l'attraper par svn :
svn checkout svn://zone.spip.org/spip-zone/_plugins_/_test_/mutualisation

Voir le plugin.xml pour les explications et la page "la mutualisation facile"

A priori, je ne le vois pas en Zip.
On pourrait peut être l'ajouter aux paquets.

MM.

Le 28 oct. 07 à 12:40, Matthieu Marcillaud a écrit :

dlatr a écrit :

Pour compliquer le tout, plusieurs pages ou mails parlent d'un plugin
mutualisation (d'où qu'il est ?) à utiliser ! Mais pas d'adresse ;

Salut,

Donc : le 'pseudo' plugin à installer dans /mutualiser (pas dans
/plugins/mutualiser) :

il est développé sur la zone :
Connexion · GitLab

on peut l'attraper par svn :
svn checkout svn://zone.spip.org/spip-zone/_plugins_/_test_/mutualisation

Voir le plugin.xml pour les explications et la page "la mutualisation
facile"

A priori, je ne le vois pas en Zip.
On pourrait peut être l'ajouter aux paquets.

MM.

merci, je teste
Claude

Le 28 oct. 07 à 13:15, dlatr a écrit :

Le 28 oct. 07 à 12:40, Matthieu Marcillaud a écrit :

dlatr a écrit :

Pour compliquer le tout, plusieurs pages ou mails parlent d'un plugin
mutualisation (d'où qu'il est ?) à utiliser ! Mais pas d'adresse ;

Salut,

Donc : le 'pseudo' plugin à installer dans /mutualiser (pas dans
/plugins/mutualiser) :

il est développé sur la zone :
Connexion · GitLab
mutualisation

on peut l'attraper par svn :
svn checkout svn://zone.spip.org/spip-zone/_plugins_/_test_/
mutualisation

Voir le plugin.xml pour les explications et la page "la mutualisation
facile"

A priori, je ne le vois pas en Zip.
On pourrait peut être l'ajouter aux paquets.

MM.

merci, je teste
Claude

je patauge toujours. Sauf que je crois comprendre que c'est dans /mutualisation et non /mutualiser

sinon, pas moyen d'entre dans /ecrire après l'installation, je suis renvoyé à la racine des sites et non dans /mutu

et maintenant, en mettant mes_options.php (sans savoir s'il est bien rempli) j'ai un

Installation de votre site SPIP
SPIP
Erreur...
Veuillez entrer le code d'activation du site :

Un code d'activation ? (la page était déjà parue "furtivement", trop furtivement pour être sur que ce soit bien celle-ci

Claude

dlatr a écrit :

Le 28 oct. 07 à 13:15, dlatr a écrit :

Le 28 oct. 07 à 12:40, Matthieu Marcillaud a écrit :

dlatr a écrit :

Pour compliquer le tout, plusieurs pages ou mails parlent d'un
plugin
mutualisation (d'où qu'il est ?) à utiliser ! Mais pas d'adresse ;

Salut,

Donc : le 'pseudo' plugin à installer dans /mutualiser (pas dans
/plugins/mutualiser) :

il est développé sur la zone :
Connexion · GitLab
mutualisation

on peut l'attraper par svn :
svn checkout svn://zone.spip.org/spip-zone/_plugins_/_test_/
mutualisation

Voir le plugin.xml pour les explications et la page "la mutualisation
facile"

A priori, je ne le vois pas en Zip.
On pourrait peut être l'ajouter aux paquets.

MM.

merci, je teste
Claude

je patauge toujours. Sauf que je crois comprendre que c'est dans /
mutualisation et non /mutualiser

sinon, pas moyen d'entre dans /ecrire après l'installation, je suis
renvoyé à la racine des sites et non dans /mutu

et maintenant, en mettant mes_options.php (sans savoir s'il est bien
rempli) j'ai un

Installation de votre site SPIP
SPIP
Erreur...
Veuillez entrer le code d'activation du site :

Un code d'activation ? (la page était déjà parue "furtivement", trop
furtivement pour être sur que ce soit bien celle-ci

Claude

Bonjour

Il faut suivre la procédure sur la page de la "mutualisation
facile", et utiliser le module.
http://www.spip-contrib.net/La-mutualisation-facile
(pas besoin de voir d'autres pages, tout est dans celle-ci)

La réécriture d'URL est obligatoire.

Il faut compléter mes_options.php comme indiqué, chez moi, il est
dans /ecrire/

Il faut aussi modifier le .htaccess (celui donné par défaut dans
Spip est très bien)

Tu crées un dossier mutualisation (c'est indiqué dans la doc) tu y
places les fichiers indiqués

Tu crées un dossier sites

Dans ce dossier, tu en crées un autre, correspondant au nom de
domaine (ou alors, tu laisses le plugin s'en charger).

Ensuite, il te suffira juste d'y placer ton dossier IMG et celui de
config venant de ton site original.

Moi, j'ai fait des liens symboliques.

Le mot de passe par défaut est précisé dans le code que tu as ajouté
dans mes_options.php

A bientôt
Grégoire

Le 28 oct. 07 à 15:20, Grégoire a écrit :

dlatr a écrit :

Le 28 oct. 07 à 13:15, dlatr a écrit :

Le 28 oct. 07 à 12:40, Matthieu Marcillaud a écrit :

Bonjour

Il faut suivre la procédure sur la page de la "mutualisation
facile", et utiliser le module.
La mutualisation facile : modifications manuelles
(pas besoin de voir d'autres pages, tout est dans celle-ci)

ok, mais les exemples ne correspondent plus aux fichiers de la zone
si j'y arrive, je pourrais corriger mais c'est mal barré

La réécriture d'URL est obligatoire.

Il faut compléter mes_options.php comme indiqué, chez moi, il est
dans /ecrire/

c'est à dire que je mets ceci (sous MAMP en local) :

  define ('_INSTALL_SERVER_DB', 'mysql');
  define ('_INSTALL_HOST_DB', 'localhost');
  define ('_INSTALL_USER_DB', 'root');
  define ('_INSTALL_PASS_DB', 'root');
  define ('_INSTALL_NAME_DB', 'mu_'.prefixe_mutualisation($site));
  define ('_INSTALL_TABLE_PREFIX', 'spip');

  // 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 definir 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', '');

Il faut aussi modifier le .htaccess (celui donné par défaut dans
Spip est très bien)

c'est à dire que je le mets sans le modifier

Tu crées un dossier mutualisation (c'est indiqué dans la doc) tu y
places les fichiers indiqués

fait

Tu crées un dossier sites

fait

Dans ce dossier, tu en crées un autre, correspondant au nom de
domaine (ou alors, tu laisses le plugin s'en charger).

Ensuite, il te suffira juste d'y placer ton dossier IMG et celui de
config venant de ton site original.

Moi, j'ai fait des liens symboliques.

Le mot de passe par défaut est précisé dans le code que tu as ajouté
dans mes_options.php

oui mais, etc. :slight_smile:

sur cette page :
===Installation de votre site SPIP

logo-spip.gif

Veuillez entrer le code d'activation du site :

===
aucun code ne fonctionne.

Bon, la tu regardes dans mutualisation/mutualiser.php et tu vois la liste des options possibles, avec les valeurs par défaut :

  $options = array_merge(
    array(
      'creer_site' => false,
      'creer_base' => false,
      'creer_user_base' => false,
      'mail' => '',
      'code' => 'ecureuil', // code d'activation par defaut
      'table_prefix' => false,
      'cookie_prefix' => false,
      'repertoire' => 'sites',
      'utiliser_panel' => false
    ),
    $options
  );

Il existe l'option "code" avec pour valeur par défaut 'ecureuil'
Voilà.

MM.

Le 28 oct. 07 à 18:44, Matthieu Marcillaud a écrit :

Veuillez entrer le code d'activation du site :

===
aucun code ne fonctionne.

Bon, la tu regardes dans mutualisation/mutualiser.php et tu vois la
liste des options possibles, avec les valeurs par défaut :

  $options = array_merge(
    array(
      'creer_site' => false,
      'creer_base' => false,
      'creer_user_base' => false,
      'mail' => '',
      'code' => 'ecureuil', // code d'activation par defaut
      'table_prefix' => false,
      'cookie_prefix' => false,
      'repertoire' => 'sites',
      'utiliser_panel' => false
    ),
    $options
  );

Il existe l'option "code" avec pour valeur par défaut 'ecureuil'
Voilà.

MM.

ok,
maintenant, c'est presque tombé en marche, c'est un gros progrès :slight_smile:

===
Creation de la base de données du site (sites/localhost:8888/)
SPIP
erreur
Les données de connexion MySQL ne sont pas définies, impossible de créer automatiquement la base.

je suis sur la bonne voie

Claude

dlatr a écrit :

===
Creation de la base de données du site (sites/localhost:8888/)
SPIP
erreur
Les données de connexion MySQL ne sont pas définies, impossible de créer automatiquement la base.

Regarde sur spip.user, il y a une autre discussion qui pourra t'aider ([SPIP] mutualisation)

Sur la page de spip-contrib 'la mutualisation facile' c'est expliqué aussi.

MM.

Le 30 oct. 07 à 19:23, Matthieu Marcillaud a écrit :

dlatr a écrit :

===
Creation de la base de données du site (sites/localhost:8888/)
SPIP
erreur
Les données de connexion MySQL ne sont pas définies, impossible de créer automatiquement la base.

Regarde sur spip.user, il y a une autre discussion qui pourra t'aider ([SPIP] mutualisation)

Sur la page de spip-contrib 'la mutualisation facile' c'est expliqué aussi.

MM.

ça y est, il manquait le
RewriteBase /mutu/
que j'avais commenté dans .htaccess

par contre, il crée automatiquement une base et une seule. Il me demande bien de créer les répertoires du site et crée, dans /sites/ le répertoire "localhost/8888" (avec le slash dans le titre) et une base mu_localhost4a77 (toujours sous ce nom d'ailleurs)

le
#Mutualisation
RewriteRule ^(presse|ephemeria|placard)$ /mutu/$1/ [R,L]
RewriteRule ^(presse|ephemeria|placard)/(.*) /mutu/$2 [QSA,L]

ne produit rien à priori

Claude

dlatr a écrit :

Le 30 oct. 07 à 19:23, Matthieu Marcillaud a écrit :

dlatr a écrit :

===
Creation de la base de données du site (sites/localhost:8888/)
SPIP
erreur
Les données de connexion MySQL ne sont pas définies, impossible de créer automatiquement la base.

Regarde sur spip.user, il y a une autre discussion qui pourra t'aider ([SPIP] mutualisation)

Sur la page de spip-contrib 'la mutualisation facile' c'est expliqué aussi.

MM.

ça y est, il manquait le
RewriteBase /mutu/
que j'avais commenté dans .htaccess

par contre, il crée automatiquement une base et une seule. Il me demande bien de créer les répertoires du site et crée, dans /sites/ le répertoire "localhost/8888" (avec le slash dans le titre) et une base mu_localhost4a77 (toujours sous ce nom d'ailleurs)

Oui, c'est parce que tu mutualises le nom de domaine là, alors que tu souhaites mutualiser un répertoire si je comprends bien non ?

Tu veux qu'en allant sur http://localhost:8888/mutu/monsite1 il affiche le SPIP mutualisé ?

Si c'est cela, il ne te faut pas demarrer_site($_SERVER['http_host']) qui renverra toujours "localhost:8888"
mais quelque chose qui renvoie le nom du dossier à mutualiser, comme :

if (
        preg_match(',^/mutu/([\.a-zA-Z0-9_-]+)/,', $_SERVER['REQUEST_URI'], $r)
        AND !is_dir(_DIR_RACINE . $r[1])
) { ... demarrer_site($r[1], $options);
}

MM.

dlatr a écrit :

Le 30 oct. 07 à 19:23, Matthieu Marcillaud a écrit :
[...]

par contre, il crée automatiquement une base et une seule. Il me
demande bien de créer les répertoires du site et crée, dans /sites/

le début de ma mutualisation:

/* spécial plugin mutualisation */

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

Si tu veux qu'il utilise la même base, voici la fin de mon fichier
mes_options.php
(tu vois, le calcul des préfixe est même mis en commentaire)

Mon rewritebase est commenté, ça à beaucoup d'influence sur les
rewritesrules.

J'ai coupé ce qui définissait les pass et les accès mySQL
--------------------------------------------------------

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

  // 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 definir 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', '');

  demarrer_site($site,
    array(
    // 'creer_site' => false,
    // 'creer_base' => false,
    // 'creer_user_base' => false,
    // 'mail' => '',
      'code' => 'ecureuil', // code d'activation par defaut, à changer
    // 'table_prefix' => false,
    // 'cookie_prefix' => false,
    // 'repertoire' => 'sites',
    // 'utiliser_panel' => false

      'creer_site' => true,
      //'creer_base' => true,
      'table_prefix' => true,
      'cookie_prefix' => true,
      'mail' => 'gregoire@ x x x .com'
    )
  );

?>

-------------------

A bientôt
Grégoire

Le 30 oct. 07 à 21:41, Matthieu Marcillaud a écrit :

dlatr a écrit :

Le 30 oct. 07 à 19:23, Matthieu Marcillaud a écrit :

dlatr a écrit :

===
Creation de la base de données du site (sites/localhost:8888/)
SPIP
erreur
Les données de connexion MySQL ne sont pas définies, impossible de créer automatiquement la base.

Regarde sur spip.user, il y a une autre discussion qui pourra t'aider ([SPIP] mutualisation)

Sur la page de spip-contrib 'la mutualisation facile' c'est expliqué aussi.

MM.

ça y est, il manquait le
RewriteBase /mutu/
que j'avais commenté dans .htaccess

par contre, il crée automatiquement une base et une seule. Il me demande bien de créer les répertoires du site et crée, dans /sites/ le répertoire "localhost/8888" (avec le slash dans le titre) et une base mu_localhost4a77 (toujours sous ce nom d'ailleurs)

Oui, c'est parce que tu mutualises le nom de domaine là, alors que tu souhaites mutualiser un répertoire si je comprends bien non ?

Tu veux qu'en allant sur http://localhost:8888/mutu/monsite1 il affiche le SPIP mutualisé ?

Si c'est cela, il ne te faut pas demarrer_site($_SERVER['http_host']) qui renverra toujours "localhost:8888"
mais quelque chose qui renvoie le nom du dossier à mutualiser, comme :

if (
       preg_match(',^/mutu/([\.a-zA-Z0-9_-]+)/,', $_SERVER['REQUEST_URI'], $r)
       AND !is_dir(_DIR_RACINE . $r[1])
) { ... demarrer_site($r[1], $options);
}

MM.

ça régresse, spip s'installe à la racine (après avoir essayer dans /sites/ecrire et ça coince, évidemment).
mutu/ecrire/mes-options.php

<?php

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

// mutualise http://serveur/spip/le_site/
if (
    preg_match(',^/mutu/([\.a-zA-Z0-9_-]+)/,', $_SERVER['REQUEST_URI'], $r)
    AND !is_dir(_DIR_RACINE . $r[1])
) {
  // definir les prefixe des tables aussi lorsque ce n'est pas une installation.
  $GLOBALS['table_prefix'] = 'spip';
  
  // rep plugin (decocher pour qu'il soit dans /sites/le_site/plugins et non mutualises dans /plugins)
  #define('_DIR_PLUGINS', _DIR_RACINE . 'sites/' . $r[1] . '/plugins/');
  
  // rep Aide (aide commune aux sites ?)
  define('_DIR_AIDE', _DIR_RACINE . _NOM_TEMPORAIRES_INACCESSIBLES . "cache/aide/");

  // params installation
  define ('_INSTALL_HOST_DB', 'localhost');
  define ('_INSTALL_USER_DB', 'root');
  define ('_INSTALL_PASS_DB', 'root');
  define ('_INSTALL_NAME_DB', 'mutu_'.prefixe_mutualisation($r[1]));
  define ('_INSTALL_TABLE_PREFIX', 'spip');
  
  // demarrage mutu
  demarrer_site($r[1],
    array(
      'creer_site' => true,
      'creer_base' => true,
      'mail' => 'mail@mail.com'
    )
  );
}

?>

et dans .htaccess

...
RewriteBase /mutu/
#RewriteBase

# SPIP version 'php' - si vous avez d'anciennes adresses en '.php[3]',
# supprimez le '#' sur les lignes qui suivent pour rediriger les acces
# errones vers le .php correspondant

#RewriteCond %{REQUEST_FILENAME} -f
#RewriteRule ^(.+)\.php[3]$ $1.php [QSA,L]

# Fin version
###

################ REGLAGES PERSONNALISES ######################
# Inscrivez ci-dessous vos reglages supplementaires

#Mutualisation
RewriteRule ^(presse|ephemeria|placard)$ /mutu/$1/ [R,L]
RewriteRule ^(presse|ephemeria|placard)/(.*) /mutu/$2 [QSA,L]

...

Je sens que je reviendrais l'année prochaine

Claude