Spip mutualisé : Demande d'infos et de retour d'exper.

Bonjour à tous,

Je dois m'occuper d'un gros projet qui regroupe une 30taine de pays.
C'est un site d'information destiné à des users lambda.
Tout ceci est prévu en spip.
Je cherche donc des retour d'expérience de spip mutualisé, de site
massivement multilingue,...
Mon prédécesseur avait installé une 30taine de spip dans des
sous-domaine. Je cherche donc à optimiser ceci le plus possible.
J'avais penssé à un spip mutualisé, ou seul la base de donnée
changerais. ce qui serait commun serait :
ecrire/
squelettes/
dist/

et distinct :
config/
tmp/
img/
locale/
pour des adresses de type :
www.mainesite.eu/site1/
www.mainesite.eu/site2/
www.mainesite.eu/site3/
www.mainesite.eu/site4/
.

Pensez-vous que ca soit possible ou avez-vous d'autres idées ?
Ca se fera de toute façon en spip. Et si j'arrive à faire ce que je
veux (ou pas), il y aura un bel article sur le sujet dans spip-contrib
:smiley:

Merci à vous,
Seb

--
Denooz Sébastien. Crowfoot pour les intimes...
Jabber : crowfoot@jabber.fr
Web : http://www.licronux.org

Hacking For Freedom
Fellowship of F.S.F.E.
http://www.fsfe.org

Denooz Sébastien a écrit :

Bonjour à tous,

Je dois m'occuper d'un gros projet qui regroupe une 30taine de pays.
C'est un site d'information destiné à des users lambda.
Tout ceci est prévu en spip.
Je cherche donc des retour d'expérience de spip mutualisé, de site
massivement multilingue,...
Mon prédécesseur avait installé une 30taine de spip dans des
sous-domaine. Je cherche donc à optimiser ceci le plus possible.
J'avais penssé à un spip mutualisé, ou seul la base de donnée
changerais. ce qui serait commun serait :
ecrire/
squelettes/
dist/

regarde deaj de ce coté ci : Mutualisation du noyau SPIP - SPIP

--
Maïeul
http://maieul.ouvaton.org

Bonjour à tous,

Je dois m'occuper d'un gros projet qui regroupe une 30taine de pays.
C'est un site d'information destiné à des users lambda.
Tout ceci est prévu en spip.
Je cherche donc des retour d'expérience de spip mutualisé, de site
massivement multilingue,...
Mon prédécesseur avait installé une 30taine de spip dans des
sous-domaine. Je cherche donc à optimiser ceci le plus possible.
J'avais penssé à un spip mutualisé, ou seul la base de donnée
changerais. ce qui serait commun serait :
ecrire/
squelettes/
dist/

et distinct :
config/
tmp/
img/
locale/
pour des adresses de type :
www.mainesite.eu/site1/
www.mainesite.eu/site2/
www.mainesite.eu/site3/
www.mainesite.eu/site4/
.
.
.
.

Pensez-vous que ca soit possible ou avez-vous d'autres idées ?
Ca se fera de toute façon en spip. Et si j'arrive à faire ce que je
veux (ou pas), il y aura un bel article sur le sujet dans spip-contrib
:smiley:

Merci à vous,
Seb

Salut,
La mutualisation, ca marche super bien, et ca simplifie incroyablement la
vie !
L article sur la mutualisation est tres bien fait, et tres simple.

Par contre, pour ma part j ai du modifier quelques trucs dans le fichier
mes_options.php pour tenir compte des specificites de mon hebergement.
J ai plusieurs sites qui tournent en prod en mutualise depuis au moins 2
mois, et pour l instant, ils semblent parfaitement etanches et
operationnels.
Je n ai pas constate de perte de performance notable (mais bon j ai pour l
instant 5 ou 6 sites en mutualise avec un ou deux redacteurs dessus max).

triton

Le 8 mai 07, à 18:09, Maïeul Rouquette a écrit :

Denooz Sébastien a écrit :
Je dois m'occuper d'un gros projet qui regroupe une 30taine de pays.
C'est un site d'information destiné à des users lambda.
Tout ceci est prévu en spip.
Je cherche donc des retour d'expérience de spip mutualisé, de site
massivement multilingue,...
Mon prédécesseur avait installé une 30taine de spip dans des
sous-domaine. Je cherche donc à optimiser ceci le plus possible.
J'avais penssé à un spip mutualisé, ou seul la base de donnée
changerais. ce qui serait commun serait :
ecrire/
squelettes/
dist/

regarde deaj de ce coté ci : Mutualisation du noyau SPIP - SPIP

voir aussi pour le multiliguisme
- "http://www.spip-contrib.net/-Le-multilinguisme-"
- "http://www.spip-contrib.net/-Alternatives-"

Pour l'aspect multisite (sur un meme spip)
- "http://www.spip-contrib.net/-Tutoriaux-Multisites-" bien que manifestement, à lire la liste spipdev, le sujet soit encore en phase de défrichement

@+ NicolasR

La mutualisation, ca marche super bien, et ca simplifie incroyablement la
vie !
Par contre, pour ma part j ai du modifier quelques trucs dans le fichier
mes_options.php pour tenir compte des specificites de mon hebergement.

Peux-tu nous dire quoi ?

Je n ai pas constate de perte de performance notable (mais bon j ai pour l
instant 5 ou 6 sites en mutualise avec un ou deux redacteurs dessus max).

Normalement si tu constates quelque chose en matière de performances,
ce sera un *gain*, puisque les fichiers sollicités seront plus souvent
présents en mémoire vive (voir déjà compilés si ton hébergement
utilise un accélérateur) s'ils sont moins nombreux.

-- Fil

> La mutualisation, ca marche super bien, et ca simplifie
incroyablement la
> vie !
> Par contre, pour ma part j ai du modifier quelques trucs dans le fichier
> mes_options.php pour tenir compte des specificites de mon hebergement.

Peux-tu nous dire quoi ?

a la place de :
if ( preg_match(',/([a-zA-Z0-9_-]+)/?,',$_SERVER['REQUEST_URI'],$r)) {
   if (is_dir($e = _DIR_RACINE . 'sites/' . $r[1]. '/')) {
       $cookie_prefix = $table_prefix = $r[1];

j ai :

if ( preg_match(',www\.([a-zA-Z0-9_-]+)\.,',$_SERVER['HTTP_HOST'],$r)) {
   if (is_dir($e = _DIR_RACINE . 'sites/' . $r[1]. '/')) {
       $cookie_prefix = $table_prefix = str_replace ( "-", "_", substr($r[1], 0, 14));

Alors la question maintennat, c est pourquoi j ai fait ca....
(ca date un peu et ma demarche est tres pragmatique, je manque complet de recul sur ce genre de chose) mais en gros grace a mon preg_match perso, je n ai plus besoin de faire de re ecriture dans le htaccess, il suffit qu un dossier soit nomme comme la valeur du HTTP_HOST dans le repertoire racine pour que la redirection se fasse.

et ca :
$cookie_prefix = $table_prefix = str_replace ( "-", "_", substr($r[1], 0, 14));
parceque lorsqu un nom de domaine, et donc un prefixe de table contient un - ca couine chez mon hebergeur (je sais pas si c est une constante mysql) et ca : substr($r[1], 0, 14) c est pareil, je peux me retrouver avec des table_prefix super long et donc pas compatibles...

Pour creer un nouveau site, il me suffit de creer un repertoire portant le nom du domaine (enfin le $r[1] juste) qui va pointer dessus, et de creer dedans les repertoires
config
IMG
local
tmp

ensuite je me connecte sur : adresse/ecrire/ et j installe mon spip tout a fait normalement
(j ai meme tente de faire un fichier d install qui cree ces repertoires en chmod 777 mais je me heurte a un probleme de droits user qui me depasse, spip n ayant pas le droit d ecrire dans mes dossiers crees ainsi, mais bon, ca doit pas etre grand chose a faire je suppose)...

Je peux acceder a mes sites mutualises soit en utilisant diretement leurs noms de domaines, mais je peux aussi installer des sites en sous domaines...

Voila, c est vraiment super pratique, je suis en train de finaliser tout ca, et j en profite pour remercier chaleureusement les gars qui ont bosse la dessus ( c est pour moi une avancee majeure de spip)

cordialement
triton - qui reste dispo pour plus de renseignements sur le sujet -

if ( preg_match(',www\.([a-zA-Z0-9_-]+)\.,',$_SERVER['HTTP_HOST'],$r)) {
   if (is_dir($e = _DIR_RACINE . 'sites/' . $r[1]. '/')) {
       $cookie_prefix = $table_prefix = str_replace ( "-", "_", substr($r[1], 0, 14));

Au fond ce qu'il manque, désormais, c'est un truc standard qui
contienne ces quelques lignes de code. Et qu'on appelerait avec une
seule variable.

-- Fil

> if ( preg_match(',www\.([a-zA-Z0-9_-]+)\.,',$_SERVER['HTTP_HOST'],$r)) {
> if (is_dir($e = _DIR_RACINE . 'sites/' . $r[1]. '/')) {
> $cookie_prefix = $table_prefix = str_replace ( "-", "_",
substr($r[1], 0, 14));

Au fond ce qu'il manque, désormais, c'est un truc standard qui
contienne ces quelques lignes de code. Et qu'on appelerait avec une
seule variable.

-- Fil

Je crois aussi qu on est tres proches d une creation/installation completement automatisee d un site spip mutualise et autonome. Il suffirait de traiter au niveau du fichier mes_options la creation ou non d un nouveau site si le repertoire demande n existe pas encore. Un petit script comme celui ci dessous, si seulement j arrivai a creer des repertoires proprement en safe-mode.
Le script est sense creer un user une bdd et aussi les repertoires necessaires pour l installation. Seulement, les repertoires crees avec les mkdir en safe mode ne sont pas utilisable par spip (pb de UID).

///
<?php
// VARIABLE A INITIALISER
// creer une bdd et un user
$nomDB="nomDeLaBase";

//Creer les sous dossiers spip a l interieur du dossier site
$racine=getcwd();
mkdir ($racine.'/'.'config', 0777);
mkdir ($racine.'/'.'IMG', 0777);
mkdir ($racine.'/'.'local', 0777);
mkdir ($racine.'/'.'tmp', 0777);

//connexion local
$link = mysql_connect('serveur', 'nomUser', 'password')
or die("Impossible de se connecter : " . mysql_error());
echo "Connexion réussie"."<br>";

$nomUserDB="User_".$nomDB;
$nomUserDB=substr($nomUserDB, 0, 14);

$query = "GRANT ALL PRIVILEGES ON {$nomDB}.* TO '{$nomUserDB}'@'seveur' IDENTIFIED BY 'motDePasse'";
if (!mysql_query($query)) die(mysql_error());
echo "Creation de la base = ".$nomDB."<br>";

// Creation de la bdd
if (!mysql_query("CREATE DATABASE $nomDB")) die(mysql_error());
echo "Creation de la base ".$nomDB."<br>";

mysql_close($link);
?>

triton-pointcentral a écrit :

a la place de :
if ( preg_match(',/([a-zA-Z0-9_-]+)/?,',$_SERVER['REQUEST_URI'],$r)) {
   if (is_dir($e = _DIR_RACINE . 'sites/' . $r[1]. '/')) {
       $cookie_prefix = $table_prefix = $r[1];

j ai :

if ( preg_match(',www\.([a-zA-Z0-9_-]+)\.,',$_SERVER['HTTP_HOST'],$r)) {
   if (is_dir($e = _DIR_RACINE . 'sites/' . $r[1]. '/')) {
       $cookie_prefix = $table_prefix = str_replace ( "-", "_", substr($r[1], 0, 14));

Alors la question maintennat, c est pourquoi j ai fait ca.... (ca date un peu et ma demarche est tres pragmatique, je manque complet de recul sur ce genre de chose) mais en gros grace a mon preg_match perso, je n ai plus besoin de faire de re ecriture dans le htaccess, il suffit qu un dossier soit nomme comme la valeur du HTTP_HOST dans le repertoire racine pour que la redirection se fasse.

En fait, pour la réécriture du .htaccess, ce n'est nécessaire que lorsque tu veux mutualiser des dossiers http://monsite.tld/spip1/ . Dans ton cas, tu passes par le nom de domaine, donc tu n'as pas besoin de toucher le .htaccess effectivement.

Je me demande par contre, quelle est la différence entre $_SERVER['SERVER_NAME'] que j'utilise pour ça et $_SERVER['HTTP_HOST'] que tu utilises. Ca me donne le même résultat.

Matthieu.

Je dois m'occuper d'un gros projet qui regroupe une 30taine de pays.
C'est un site d'information destiné à des users lambda.
Tout ceci est prévu en spip.
Je cherche donc des retour d'expérience de spip mutualisé, de site
massivement multilingue,...

Nous sommes évidemment très intéressés par un tel projet.
    http://www.stages.alternatives.ca/article125.html

Nous hébergeons présentement une centaine de projets dont une cinquantaine
en SPIP, quelques uns en sous-domaine, mais la plupart en domaine exclusif.

Nous gérons notre propre hébergement sous AlternC et sommes en mesure de
l'adapter à un tel projet.

Nous songeons depuis quelque temps à mutualiser bon nombre de sites
partenaires. Nous croyons maintenant que les conditions sont mûres pour
tenter l'expérience et sommes prêts à participer au retour d'expérience.

Nous comptons évidemment utiliser le jeu de squelettes ALTERNATIVES comme
base du projet dont nous sommes à préparer une nouvelle mouture plus
facilement configurable et personnalisable.

André Vincent

> Au fond ce qu'il manque, désormais, c'est un truc standard qui
> contienne ces quelques lignes de code. Et qu'on appelerait avec une
> seule variable.

A partir de cette discussion j'ai mis le code de la doc dans un
fichier ecrire/inc/mutualiser.php, avec quelques ajouts, notamment
pour permettre de créer à la volée les répertoires s'ils sont absents.

Pour l'utiliser voyez la proto-documentation sur
http://thread.gmane.org/gmane.comp.web.spip.devel/41162

En gros c'est deux lignes, dans le mes_options.php pricinpal du site :

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

Le second argument, optionnel, est un tableau d'options (créer le
site, donner un prefix des tables par defaut).

Ce script ne dispense pas de connaitre le mot de passe de la base sur
laquelle on veut créer le site ; ça pourrait être une option
supplémentaire (patches bienvenus).

-- Fil

> > Au fond ce qu'il manque, désormais, c'est un truc standard qui
> > contienne ces quelques lignes de code. Et qu'on appelerait avec une
> > seule variable.

A partir de cette discussion j'ai mis le code de la doc dans un
fichier ecrire/inc/mutualiser.php, avec quelques ajouts, notamment
pour permettre de créer à la volée les répertoires s'ils sont absents.

Pour l'utiliser voyez la proto-documentation sur
http://thread.gmane.org/gmane.comp.web.spip.devel/41162

En gros c'est deux lignes, dans le mes_options.php pricinpal du site :

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

Le second argument, optionnel, est un tableau d'options (créer le
site, donner un prefix des tables par defaut).

Ce script ne dispense pas de connaitre le mot de passe de la base sur
laquelle on veut créer le site ; ça pourrait être une option
supplémentaire (patches bienvenus).

-- Fil

Bonjour et remerciements !
la belle chose que voila en ce jour tout gris...
J arrive pas a voir en lisant le fichier mutualiser.php ce qui se passe si
des sites mutualises sont deja present, a savoir si j appelle dans l url
www.nawak.fr et qu un dosier nawak est present dans "sites" mais que ce site
est deja installe, avec son prefix de table, de cookie tout ca (mais prefix
differents de ceux produits par ce nouveau code ... ?)

Parceque je me souviens que lorsque je faisais des tests de mutualisation, a
chaque fois que je modifiais le preg_replace de $prefix je me retrouvais
avec un nouveau jeu de tables spip, un nouveau cookie... Ce qui semble
normal, et ce qui doit se produire aussi la je suppose.
Dois je remettre ma ligne :
$cookie_prefix = $table_prefix = str_replace ( "-", "_", substr($r[1], 0,
14));
a la place du traitement propose ?
(Par contre, me semble vraiment que le tiret haut - pose des problemes d
installation niveau bdd, et je vois pas si il est traite dans le code
fourni)...

Je ne peux pas me permettre de tester ca pour l instant, ni en local ni en
prod, trop peur de tout casser, mais je le fais des que reponse a cette
question de prefix....

ps : cette conversattion doit avoir lieu par mail ici ou sur :
http://thread.gmane.org/gmane.comp.web.spip.devel/41162
triton

Merci à tous pour ce développement !!!
De mon coté je commence les test milieu de semaine prochaine.
Je vous dirais quoi à ce moment là !

Encore merci !!!

Le 17/05/07, triton-pointcentral<triton@pointcentral.net> a écrit :

> > > Au fond ce qu'il manque, désormais, c'est un truc standard qui
> > > contienne ces quelques lignes de code. Et qu'on appelerait avec une
> > > seule variable.
>
> A partir de cette discussion j'ai mis le code de la doc dans un
> fichier ecrire/inc/mutualiser.php, avec quelques ajouts, notamment
> pour permettre de créer à la volée les répertoires s'ils sont absents.
>
> Pour l'utiliser voyez la proto-documentation sur
> http://thread.gmane.org/gmane.comp.web.spip.devel/41162
>
> En gros c'est deux lignes, dans le mes_options.php pricinpal du site :
>
> <?php
> include_spip('inc/mutualiser');
> demarrer_site($_SERVER['HTTP_HOST'], array('creer_site' => true));
> ?>
>
> Le second argument, optionnel, est un tableau d'options (créer le
> site, donner un prefix des tables par defaut).
>
> Ce script ne dispense pas de connaitre le mot de passe de la base sur
> laquelle on veut créer le site ; ça pourrait être une option
> supplémentaire (patches bienvenus).
>
> -- Fil
Bonjour et remerciements !
la belle chose que voila en ce jour tout gris...
J arrive pas a voir en lisant le fichier mutualiser.php ce qui se passe si
des sites mutualises sont deja present, a savoir si j appelle dans l url
www.nawak.fr et qu un dosier nawak est present dans "sites" mais que ce site
est deja installe, avec son prefix de table, de cookie tout ca (mais prefix
differents de ceux produits par ce nouveau code ... ?)

Parceque je me souviens que lorsque je faisais des tests de mutualisation, a
chaque fois que je modifiais le preg_replace de $prefix je me retrouvais
avec un nouveau jeu de tables spip, un nouveau cookie... Ce qui semble
normal, et ce qui doit se produire aussi la je suppose.
Dois je remettre ma ligne :
$cookie_prefix = $table_prefix = str_replace ( "-", "_", substr($r[1], 0,
14));
a la place du traitement propose ?
(Par contre, me semble vraiment que le tiret haut - pose des problemes d
installation niveau bdd, et je vois pas si il est traite dans le code
fourni)...

Je ne peux pas me permettre de tester ca pour l instant, ni en local ni en
prod, trop peur de tout casser, mais je le fais des que reponse a cette
question de prefix....

ps : cette conversattion doit avoir lieu par mail ici ou sur :
http://thread.gmane.org/gmane.comp.web.spip.devel/41162
triton

_______________________________________________
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
FAQ : http://www.spip-contrib.net/spikini/FaQ

--
Denooz Sébastien. Crowfoot pour les intimes...
Jabber : crowfoot@jabber.fr
Web : http://www.licronux.org

Hacking For Freedom
Fellowship of F.S.F.E.

> > Au fond ce qu'il manque, désormais, c'est un truc standard qui
> > contienne ces quelques lignes de code. Et qu'on appelerait avec une
> > seule variable.

A partir de cette discussion j'ai mis le code de la doc dans un
fichier ecrire/inc/mutualiser.php, avec quelques ajouts, notamment
pour permettre de créer à la volée les répertoires s'ils sont absents.

Pour l'utiliser voyez la proto-documentation sur
http://thread.gmane.org/gmane.comp.web.spip.devel/41162

En gros c'est deux lignes, dans le mes_options.php pricinpal du site :

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

Le second argument, optionnel, est un tableau d'options (créer le
site, donner un prefix des tables par defaut).

Ce script ne dispense pas de connaitre le mot de passe de la base sur
laquelle on veut créer le site ; ça pourrait être une option
supplémentaire (patches bienvenus).

-- Fil

et puis, tant que j y pense, cette ligne :
preg_replace(',^www\.|[^a-z0-9],', '', strtolower($site));
si je la lis bien, c est pour les url qui commence par www, mais en regle
generale, me semble que la plupart des sites doivent fonctionner avec ou
sans le sous domaine www, se trouve que mon serveur est configure pour
ajouter automatiquement les www s ils manquent, mais je ne pense pas que ce
soit un comportement par defaut.

triton

preg_replace(',^www\.|[^a-z0-9],', '', strtolower($site));
si je la lis bien, c est pour les url qui commence par www, mais en regle
generale, me semble que la plupart des sites doivent fonctionner avec ou
sans le sous domaine www, se trouve que mon serveur est configure pour
ajouter automatiquement les www s ils manquent, mais je ne pense pas que ce
soit un comportement par defaut.

C'est exclusivement pour déterminer un "préfixe" (optionnel) ; j'ai
fait l'hypothèse que dans le cas où l'on crée deux sites www.xxx.tld
et xxx.tld, c'est que l'erreur est ailleurs. Mais ça mérite
discussion.

-- Fil