Bonjour,
Je n'ai pas trouvé comment mutualiser un spip beta afin que j'obtienne
un site maitre : www.mon_site.net
puis de sites : www.mon_site.net/autre_site
et
www.mon_site.net/autre_site2.
Merci pour m'éclaircir
Rainer
Bonjour,
Je n'ai pas trouvé comment mutualiser un spip beta afin que j'obtienne
un site maitre : www.mon_site.net
puis de sites : www.mon_site.net/autre_site
et
www.mon_site.net/autre_site2.
Merci pour m'éclaircir
Rainer
Rainer Müller a écrit :
Bonjour,
Je n'ai pas trouvé comment mutualiser un spip beta afin que j'obtienne
un site maitre : www.mon_site.net
puis de sites : www.mon_site.net/autre_site
Ok, tu souhaites donc mutualiser des répertoires pour qu'ils deviennent des sites autonomes et en plus avoir un site sur la racine.
Je dirai que c'est le plus dur de tous à réaliser, mais ça reste simple.
(Si tu veux compléter la doc avec ce que tu comprendras de mes explications, n'hésite pas !)
On va partir (pour faire plus simple) d'un SPIP neuf, non installé (seuls les fichiers de SPIP sont présents, mais l'installation n'est pas encore faite).
- utiliser le plugin "mutualisation facile" et copier ses fichiers dans un répertoire /mutualisation par exemple.
- créer un répertoire /sites qui recevra les sites (dont le site à la racine de SPIP) avec des droits d'écriture pour apache dessus (chmod 777 par exemple)
- créer un fichier /config/mes_options.php et introduire un morceau de code qui permet de détecter si l'url est un répertoire à mutualiser ou non et de lancer une mutualisation dessus. (le code collé après)
- comme indique dans ce code, mon exemple est base sur création automatique de base de donnée et d'utilisateurs SQL. Il faut donc avoir un compte mysql qui le permette (un utilisateur ayant des droits d'administration, comme root)
- copier le htaccess.txt en .htaccess et editer le pour ajouter dans "parametres personnalises" les lignes (choisir) :
# code generique
RewriteCond %{REQUEST_URI} !^/(config|dist|ecrire|IMG|prive|plugins|sites|squelettes|tests|tmp|lib|local|mutualisation)/(.*)
RewriteRule ^[^/]+/(.*) /$1 [QSA,L]
# OU code specifique
#RewriteRule ^(premier_site|second_site)$ /$1/ [R,L]
#RewriteRule ^(premier_site|second_site)/(.*) /$2 [QSA,L]
------
Vous n'avez plus qu'a installer les différents sites
----
Code de config/mes_options.php
<?php
$mutualisation = true;
if ($mutualisation){
// mutualisation
if (!defined("_ECRIRE_INC_VERSION")) return;
// charger la librairie de mutualisation
require _DIR_RACINE . 'mutualisation/mutualiser.php';
// tester si c'est une repertoire non SPIP
if (
(
preg_match(',^/([\.a-zA-Z0-9_-]+)/,', $_SERVER['REQUEST_URI'], $r) // un repertoire est demande
AND ($_SERVER['HTTP_HOST'] == 'tipi.magraine.net') // qui appartient au domaine mutualise
AND !is_dir(_DIR_RACINE . $r[1]) // qui n'est pas un dossier existant
)
) {
// si c'est un repertoire, le site prend le nom de celui-ci
$site = $r[1];
} else {
// sinon on prend le nom du domaine ou sous-domaine+domaine
$site = $_SERVER['HTTP_HOST'];
}
// je considere un SPIP = une base de donnee distincte
// le prefixe des tables peut donc etre toujours 'spip'
$GLOBALS['table_prefix'] = 'spip';
// parametres de base de donnee
// avec creation user automatique
// pour chaque site
// tous du mysql
// (mais on pourrait tester $site pour mettre certains sur d'autres serveurs de donnees)
define ('_INSTALL_SERVER_DB', 'mysql');
define('_INSTALL_HOST_DB', 'localhost'); // adresse de la bdd
define('_INSTALL_USER_DB_ROOT', 'marcimat'); // utilisateur eyant des droits de creation de bdd
define('_INSTALL_PASS_DB_ROOT', '********'); // mot de passe de l'utilisateur
define('_INSTALL_TABLE_PREFIX', 'spip'); // idem a $GLOBALS['table_prefix']
define('_INSTALL_NAME_DB', 'mu_'.prefixe_mutualisation($site)); // nom unique de la bdd creee
demarrer_site($site,
array(
'cookie_prefix' => true, // cookies differents pour chaque sites
'table_prefix' => false, // deja defini, pas besoin de le calculer
'creer_site' => true, // on force la creation du site s'il n'existe pas
'creer_base' => true, // on force la creation de la bdd
'creer_user_base' => true, // on force la creation d'un utilisateur pour cette bdd
'mail' => 'marcimat@...', // un mail sera envoye ici lors d'une creation
'code' => 'codesecret', // code qui sera demande pour autoriser une creation de site
//'url_img_courtes' => true // ne fonctionne pas avec une mutualisation de repertoire
)
);
}
?>
Bonne découverte !
--
MM.
Merci pour cette réponse rapide et très bien expliquée.
Voilá mon retour d’expérience
Installation
Avec la configuration que tu as proposé l’installation finissait toujours avec un échec de connections.
J’ai donc modifier les paramètres de mes_options afin que l’installation de la bdd ne soit pas forcé (voir ci-bas)
Ensuite, j’ai bien réussi à installer tant le site maitre comme le site secondaire.
L’installation était normale, sauf que à partir de moment ou les répertoire sont installé et quand spip procède à l’installation de la base de donnée a chaque étape apparait un erreur 302 avec le lien Si votre navigateur n’est pas redirigé, cliquez ici pour continuer.
Cela n’empêche cependant pas de terminer l’isntallation.
Le site publique s’affiche, mais il y a quand même un -
Problème
Je ne peux pas m’identifier et donc pas acceder à l’espace interne. (ni pour le site maitre ni pour l’autre dans Firefox).
Firefox: Avec le login public je me retrouve avec une page "Vous êtes enregistré… par ici… " et quand je click sur le lien je retourne sur la page initiale sans être connecté et si je mets /ecrire/ je retourne toujours sur le même formulaire (j’ai vidé le chache du browser et éliminé les cookies)
.
Opera: J’arrive à me connecter dans l’interface du site maitre, mais le site secondaire me renvoie également au formulaire login
Détails d’installation:
Essai en local
SPIP 12947 installe dans le dossier spip2
Mutualisation 23017
site maitre:
monsite
site secondaire
monsite/premier_site
.htacces:
RewriteBase /spip2/
RewriteCond %{REQUEST_URI} !^/(config|dist|ecrire|IMG|prive|plugins|sites|squelettes|tests|tmp|lib|local|mutualisation)/(.)
RewriteRule ^[^/]+/(.) /$1 [QSA,L] (j’ai essyé sans et avec rewriteBase - meme réultat)
mes_options.php
<?php $mutualisation = true; if ($mutualisation){ // mutualisation if (!defined("_ECRIRE_INC_VERSION")) return; // charger la librairie de mutualisation require _DIR_RACINE . 'mutualisation/mutualiser.php'; // tester si c'est une repertoire non SPIP if ( ( preg_match(',^/([\.a-zA-Z0-9_-]+)/,', $_SERVER['REQUEST_URI'], $r) // un repertoire est demande AND ($_SERVER['HTTP_HOST'] == 'monsite') // qui appartient au domaine mutualise AND !is_dir(_DIR_RACINE . $r[1]) // qui n'est pas un dossier existant ) ) { // si c'est un repertoire, le site prend le nom de celui-ci $site = $r[1]; } else { // sinon on prend le nom du domaine ou sous-domaine+domaine $site = $_SERVER['HTTP_HOST']; } // je considere un SPIP = une base de donnee distincte // le prefixe des tables peut donc etre toujours 'spip' # $GLOBALS['table_prefix'] = 'spip'; // parametres de base de donnee // avec creation user automatique // pour chaque site // tous du mysql // (mais on pourrait tester $site pour mettre certains sur d'autres serveurs de donnees) define ('_INSTALL_SERVER_DB', 'mysql'); define('_INSTALL_HOST_DB', ''); // adresse de la bdd define('_INSTALL_USER_DB_ROOT', ''); // utilisateur eyant des droits de creation de bdd define('_INSTALL_PASS_DB_ROOT', ''); // mot de passe de l'utilisateur # define('_INSTALL_TABLE_PREFIX', 'spip'); // idem a $GLOBALS['table_prefix'] # define('_INSTALL_NAME_DB', 'mu_'.prefixe_mutualisation($site)); // nom unique de la bdd creee demarrer_site($site, array( 'cookie_prefix' => true, // cookies differents pour chaque sites 'table_prefix' => true, // deja defini, pas besoin de le calculer 'creer_site' => true, // on force la creation du site s'il n'existe pas 'creer_base' => false, // on force la creation de la bdd 'creer_user_base' => false, // on force la creation d'un utilisateur pour cette bdd 'mail' => '', // un mail sera envoye ici lors d'une creation 'code' => 'moncode', // code qui sera demande pour autoriser une creation de site //'url_img_courtes' => true // ne fonctionne pas avec une mutualisation de repertoire ) ); } ?>Une idée de ce qui cloche
Merci
Rainer