[spip-dev] ! La mutualisation facile

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

Comment ca marche, la mutualisation :

- on peut faire http://www.spip.net/fr_article3514.html

- on peut faire aussi, desormais, dans mes_options.php
<?php
include_spip('inc/mutualiser');
demarrer_site(['HTTP_HOST']);
?>

et meme, pour ne pas se fouler:
<?php
include_spip('inc/mutualiser');
demarrer_site(['HTTP_HOST'], array('creer_site' => true));
?>

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

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/

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

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

Merci,
C'est un peu technique tout ça pour le Suisse (et pour moi aussi ...) , non?
Si un webmestre veut manipuler tout ceci, il préferera peut-être le faire à main nue...
Pourquoi pas un plugin pour la mutualisation ?
Pat

Juste une toute petite idée comme ça en passant...
Pourquoi pas un plugin pour la mutualisation facile ?
Pat

Fil a écrit :

Patrice Vanneufville wrote:

Merci,
C'est un peu technique tout ça pour le Suisse (et pour moi aussi ...) , non?

Je vois pas ce que les suisses viendraient faire là
et encore moins pourquoi il y aurait une échelle de valeur liée à cette nationalité.

Merci de rester neutre.

Pat wrote:

Juste une toute petite idée comme ça en passant...
Pourquoi pas un plugin pour la mutualisation facile ?

Parce que personne l'a encore fait pour que tu puisse l'intégrer dans couteau_suisse qui est maintenant réputé pour tout faire sans que jamais on entende que tout est ailleurs mais seulement rassemblé par cette merveille de technologie ?

Primo : je suis désolé que ce message (privé à destination de Fil) ait été publié sur ce forum. Je n'ai pas fait attention aux destinataires, tant pis pour moi.

Secondo : 'le Suisse' était un diminutif de 'le Couteau Suisse'. Fil l'aurait très bien compris. Par extension, tout le monde l'aurait compris également, sauf toi apparemment.

Tercio : Il n'y a aucune espèce d'échelle de valeur lié à cette nationalité, à part dans ta tête.

Ah pardon, c'était de l'humour... J'avais pas capté !

Pat

bertrand Gugger a écrit :

bertrand Gugger a écrit :

Pat wrote:

Juste une toute petite idée comme ça en passant...
Pourquoi pas un plugin pour la mutualisation facile ?

Parce que personne l'a encore fait pour que tu puisse l'intégrer dans couteau_suisse qui est maintenant réputé pour tout faire sans que jamais on entende que tout est ailleurs mais seulement rassemblé par cette merveille de technologie ?

Ce message, en revanche, est bien destiné à tous. Il n'était pas destiné à attirer l'ironie et la moquerie. Monsieur bertrand Gugger, vous feriez mieux d'aller dormir à cette heure-ci au lieu de nous sortir de genre de phrases tarabiscotées et inutiles.

La mutualisation d'un site SPIP est une notion toute neuve pour moi car je ne l'utilise pas personnellement et il me semblait qu'un webmestre s'occupe de la mettre en place au moment de l'installation originelle du site. Il n'est pas (encore) évident (à mes yeux) que des modifications ultérieures soient nécessaires en cours de route, et que ces modifications puissent être simplifiées dans l'interface pour être accessibles par tous les webmestres, même débutants. Mais peut-être je me trompe !

Bref, je comptais en échanger deux mots là-dessus avec Fil qui a eu la gentillesse de me faire une copie privée de ses travaux sur la mutualisation facile.

Si la mutualisation devait devenir plus complexe et si ses réglages se multipliaient à l'avenir, je me suis demandé (en public !) si un plugin à part entière ne serait pas la meilleure solution, tout comme Autorité ou Accès Restreint. C'est une question sans doute assez bête à tes yeux, mais elle n'était pas du tout nominative. Demander l'utilité d'une chose n'a rien à voir avec demander la chose elle-même.

Comme beaucoup ici, je n'ai pas TOUT le code de SPIP en tête, même si je progresse doucement chaque jour. Demander de l'aide n'a jamais été honteux, bien au contraire.

Au passage, sur la trentaine de lames du Couteau Suisse et presque autant de variables, une majeure partie du code est de moi, sans que j'aie mis mon nom dessus pour autant. Ce n'est pas moi ici qui cherche la gloire, c'est le dernier de mes soucis.
Rappel : le Couteau Suisse est censé regrouper des fonctionnalités simples et peu coûteuses en code.
La programmation de ce plugin m'a fourni de nombreuses satisfactions dans les découvertes successives que j'ai pu faire et une compréhension de SPIP sans cesse améliorée. C'est suffisant pour moi.

Arf... Voila encore une provocation de toggg le magnifique, et moi je marche.
Pat, quand vas-tu mûrir un peu et laisser divaguer seuls les méchants trolls de cette liste !?

Pat

Juste une toute petite idée comme ça en passant...
Pourquoi pas un plugin pour la mutualisation facile ?

Les plugins sont chargés par définition *après* le choix du site
(chaque site peut activer les plugins qu'il veut).

-- Fil

* Fil tapotait, le 17/05/2007 11:20:

Juste une toute petite idée comme ça en passant...
Pourquoi pas un plugin pour la mutualisation facile ?

Les plugins sont chargés par définition *après* le choix du site
(chaque site peut activer les plugins qu'il veut).

Question subsidiaire : est-ce qu'il serait envisageable d'avoir :
- un dossier de plugins communs à tous les sites
- un dossier de plugins propre à chaque site

?

Question subsidiaire : est-ce qu'il serait envisageable d'avoir :
- un dossier de plugins communs à tous les sites
- un dossier de plugins propre à chaque site

Dans exec=admin_plugins, quand on construit la liste des pluins
disponibles, on pourrait peut-être chercher "tous les dossiers plugins
du path" au lieu de simplement "le dossier plugins". Essaie et propose
un patch :slight_smile:

-- Fil

Fil a écrit :

Juste une toute petite idée comme ça en passant...
Pourquoi pas un plugin pour la mutualisation facile ?

Les plugins sont chargés par définition *après* le choix du site
(chaque site peut activer les plugins qu'il veut).

-- Fil

Donc, une fois la mutualisation construite, quel rôle pourrait bien jouer ce plugin potentiel ?

Pat

Fil a écrit :

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

Je teste un peu cette nouvelle merveille et...

- c'est fort ! La création automatique est une merveille...
Plus besoin de s'embêter à créer à la main les répertoires...
Mais je me demande si ça va être utilisé et par qui ?

- le choix du site s'appuie uniquement sur le nom de domaine (et sous domaine), mais il n'est pas possible de cette manière d'utiliser les noms des répertoires dans l'url (http://domaine.tld/premier_site/ )
(mais cela impose aussi de modifier le .htaccess, donc c'est moins évident pour que l'ensemble fonctionne).

MM.

Mais je me demande si ça va être utilisé et par qui ?

Houlà, je n'en doute pas une seconde :slight_smile:

- le choix du site s'appuie uniquement sur le nom de domaine (et sous
domaine), mais il n'est pas possible de cette manière d'utiliser les
noms des répertoires dans l'url (http://domaine.tld/premier_site/ )
(mais cela impose aussi de modifier le .htaccess, donc c'est moins
évident pour que l'ensemble fonctionne).

Précisément, la fonction demarrer_site() ne prejuge pas de ce qui
définit un site.

Dans l'exemple j'ai mis
demarrer_site($_SERVER['HTTP_HOST'])

Mais tu peux imaginer des choses comme :

if (tester le repertoire)
$site = 'truc';
else
$site = 'machin';
if ($site) demarrer_site($site)

-- Fil

Fil a écrit :

Mais je me demande si ça va être utilisé et par qui ?

Houlà, je n'en doute pas une seconde :slight_smile:

- le choix du site s'appuie uniquement sur le nom de domaine (et sous
domaine), mais il n'est pas possible de cette manière d'utiliser les
noms des répertoires dans l'url (http://domaine.tld/premier_site/ )
(mais cela impose aussi de modifier le .htaccess, donc c'est moins
évident pour que l'ensemble fonctionne).

Précisément, la fonction demarrer_site() ne prejuge pas de ce qui
définit un site.

Oui, j'ai parlé trop vite, j'ai compris après !

J'ai reproduit le comportement que je souhaitais (sous répertoires dans le dossier /spip) par ces lignes dans mes_options :

include_spip('inc/mutualiser');

if ( preg_match(',/spip/([a-zA-Z0-9_-]+)/?,',$_SERVER['REQUEST_URI'],$r)) {
  $GLOBALS['cookie_prefix'] = $r[1];
  $GLOBALS['table_prefix'] = 'spip';
  
  demarrer_site($r[1], array('cookie_prefix' => false, 'table_prefix' => false) );
}

Donc, là, moi, je suis heureux :wink:
Merci grandement !

MM.

* Fil tapotait, le 17/05/2007 11:44:

Question subsidiaire : est-ce qu'il serait envisageable d'avoir :
- un dossier de plugins communs à tous les sites
- un dossier de plugins propre à chaque site

Dans exec=admin_plugins, quand on construit la liste des pluins
disponibles, on pourrait peut-être chercher "tous les dossiers plugins
du path" au lieu de simplement "le dossier plugins". Essaie et propose
un patch :slight_smile:

Je viens d'aller voir.
La constante _DIR_PLUGINS est utilisées dans 5 fichiers.
Elle sert à construire des chemins de manière explicite.
Le patch est au delà de mes capacités :frowning:

Pour info pour ceux qui se poseraient la question, le dossier plugins pris en compte est à la racine du spip mutualisé.

Autre info : il faut avoir créé le dossier sites/ pour que la création fonctionne (sinon, le mkdir indique une erreur).

Et dans la conf d'apache, les virtual host peuvent être sous cette forme :
<VirtualHost *>
     ServerAdmin webmaster@domaine.net
     DocumentRoot "D:\wwwrootDev\_mutualisation\spipsvn"
     ServerName domaine.net
</VirtualHost>

Au passage, une idée à expérimenter : dans le vhost, le premier host est le host par défaut si aucun n'est reconnu.
==> Il est donc peut-être envisageable (si le $_SERVER['HTTP_HOST'] est transmis correctement à php) de créer autant de site que l'on veut simplement avec le nom de domaine, sans toucher au vhost d'apache, juste au DNS ou au fichier hosts :wink:

Autre info : il faut avoir créé le dossier sites/ pour que la création
fonctionne (sinon, le mkdir indique une erreur).

ouip

==> Il est donc peut-être envisageable (si le $_SERVER['HTTP_HOST'] est
transmis correctement à php) de créer autant de site que l'on veut
simplement avec le nom de domaine, sans toucher au vhost d'apache, juste
au DNS ou au fichier hosts :wink:

Ben oui, c'est bien ça l'idée !
Autre type d'usage : l'installer dans un compte AlternC, faire
"héberger un domaine", et c'est tout

Il faut quand même à chaque fois retrouver le mot de passe MySQL, ce
qui n'est pas encore tout à fait people-ready.

-- Fil

Secondo : 'le Suisse' était un diminutif de 'le Couteau
Suisse'. Fil l'aurait très bien compris. Par extension, tout
le monde l'aurait compris également, sauf toi apparemment.

Non non. D'une part, je ne suis pas une extention de Fil, d'autre par, je me
suis demandé qui était ce suisse qui avait intégré le core.

Olivier G. a écrit :

Secondo : 'le Suisse' était un diminutif de 'le Couteau Suisse'. Fil l'aurait très bien compris. Par extension, tout le monde l'aurait compris également, sauf toi apparemment.

Non non. D'une part, je ne suis pas une extention de Fil, d'autre par, je me
suis demandé qui était ce suisse qui avait intégré le core.

<troll>ben les gardes suisses au vatican, c'est bien un core d'armée ?</troll>

ci je comprends bien, demarrer_site() demande deux choses : le nom du site (1 er argument) et un tableau d'options. Mais je n'ai pas suivi, si ce tableau d'options ne contient pas "creer_site", comment defini t-on le repertoire dans lequelle il se situe?

par ailleur, les squelettes sont-ils mutualisés ?

ci je comprends bien, demarrer_site() demande deux choses : le nom du
site (1 er argument) et un tableau d'options. Mais je n'ai pas suivi, si
ce tableau d'options ne contient pas "creer_site", comment defini t-on
le repertoire dans lequelle il se situe?

C'est le nom du site (1er argument) : sites/$site/

par ailleur, les squelettes sont-ils mutualisés ?

Ils devraient l'être, par les plugins de squelettes ou les var_skel ou
les $dossier_squelettes = 'xx' mis dans
sites/xxx/config/mes_options.php

-- Fil