Mutualiser le noyau permet de faire tourner plusieurs sites avec une seule instance du noyau de spip, ce qui permet par exemple de n’avoir à faire qu’une seule et unique mise à jour pour mettre à jour l’ensemble des sites.
OVH propose différentes offres d’hébergement, en mutualisé comme en dédié.
Dans mon exemple, j’ai :
- un hébergement mutualisé chez OVH avec utilisation du multidomaine (http://www.ovh.com/fr/items/multidomain.xml) ,
- un serveur sql dédié, ce qui me permet de créer une base par site.
- Spip 3.0.11
Il existe plusieurs sources d”informations sur le net concernant la mutualisation du noyau spip, mais plusieurs datent de spip 2, ou ne parlent pas des spécificités d’un hébergemetn chez OVH.
ETAPE 1 : On installe Spip à la racine de l’hébergement
Installation normale, soit via le spip loader, soit en mettant les fichiers à la racine de votre hébergement.
Il faut choisir un nom de domaine “principal” et installer votre spip dessus.
Installer dans ce spip les plugins dont vous pourriez avoir besoin dans les spip mutualisés
ETAPE 2 : On le mutualise
Toutes les infos sont ici : http://contrib.spip.net/La-mutualisation-facile-modifications-manuelles et http://contrib.spip.net/Ferme-a-SPIP
1°) on met en place les fichiers pour la mutualisation
Récupérer le zip ici de mutualisation http://files.spip.org/spip-zone/mutualisation_v1.zip, dézipper le, vous obtiendrez un répertoire nommé “mutualisation_v1″. Renommez le en “mutualisation”, et uploader ce répertoire et son contenu à la racine de votre site web.
Même si ça vous démange, il ne s’agit pas à proprement parler d’un plugin, et donc il ne faut pas l’installer dans /plugins, ou dans /plugins/auto
2°) On prépare la future mutualisation :
A l’intérieur de votre répertoire “mutualisation”, il y a un fichier nommé “mes_options.php.txt” .
Ce fichier est primordial parce que c’est lui qui va stocker toutes les informations nécessaire à l’installation d’un nouveau site mutualisé. il faudra l’éditer pour chaque nouveau site mutualisé à rajouter.
Prenez donc le fichier ”mes_options.php.txt” et copier le dans le “config” de base de votre site spip, puis renommez le en “mes_options.php”. N’y touchez pas encore, on va l’éditer par la suite.
3°) Un répertoire pour stocker les sites spip mutualisés :
Créez un répertoire “sites” à la racine de votre hébergement ( là ou est installé votre spip). Il faut que le serveur ait les droits pour écrire dedans. Et un voilà donc avec un répertoire pour les stocker tous et dans le serveur les mutualiser. (nos amis hobbit apprécieront la rhétorique).
4°) On met en place le htaccess de Spip
Basé sur le htaccess de base d’ovh, et celui fourni par Pyrat.net, mettez à jour votre fichier htaccess avec le contenu de celui ci :
htaccess à remplacer
ETAPE 3 : (à répéter pour chaque nouveau site mutualisé)
1°) On configure le nom de domaine du site à mutualiser
On fait pointer le nom de domaine du site à mutualiser vers l’IP de votre serveur. Vous pouvez passer par OVH pour acheter vos noms de domaines, ou tout autre registrar (godaddy par exemple).
Dans mon exemple je suis passé par OVH pour acheter le nom de domaine, donc il pointe déjà vers l’hébergement.
Ensuite, il vous faut aller dans votre manager OVH, et aller dans votre nom de domaine “principal”, qui est celui où vous pouvez faire du multidomaine.
ensuite configurer un multidomaine pour que le nom de domaine de votre site à mutualiser pointe en multidomaine vers le /www de votre hébergement. En image ça donne ça :
![Mutualisation du noyau Spip 3 sur un mutualisé de chez OVH Mutualisation du noyau Spip 3 sur un mutualisé de chez OVH](http://media.paperblog.fr/i/672/6729449/mutualisation-noyau-spip-3-sur-mutualise-ovh-L-AyBJar.png)
configurer un multidomaine pour votre site à mutualiser (à partir de votre site principal)
Dans cette capture, nous sommes dans le gestionnaire de multidomaine du site principal. On créé donc un multidomaine pour notre nouveau site à mutualiser (champ “Multi domaine” donc, le premier en partant du haut sur la capture), et on laisse bien que le dossier cible est www/. Notre nom de domaine pour notre site mutualisé va donc pointer vers la racine de l’hébergement, là où on a installé à l’étape le noyau de spip. Spip va se charger ensuite d’utiliser les bons fichiers et les bons répertoires. Là vous êtes paumés ? oui je suppose, mais ce n’est pas grave, faites moi confiance et continuez !
![Mutualisation du noyau Spip 3 sur un mutualisé de chez OVH ;-)](http://media.paperblog.fr/i/672/6729449/mutualisation-noyau-spip-3-sur-mutualise-ovh-L-s4Ato3.jpeg)
Vous allez comprendre vous allez voir !
2°) On crée la base de données pour ce nouveau site mutualisé sur le sql privé :
allez dans votre manager OVH, puis votre sql privé pour pouvoir créer une base de donnée dédiée pour ce nouveau site mutualisé. donc vous créer une base, un user et son mot de passe.
3°) On configure les infos pour lancer la mutualisation
Là on va toucher au fichier le plus important pour mutualiser un site. Il se trouve dans le répertoire config, on en a parlé plus haut, c’est à dire le fichier mes_options.php qu’on a placé dans /config
On va éditer ce fichier et y définir les options propres au nouveau site que l’on souhaite mutualiser :
Tout d’abord avec les infos mysql de la base qu”on a créé pour ce nouveau site.
12345 define('_INSTALL_NAME_DB','mettez_ici_le_nom_de_votre_bdd');// nom de ma base mysql define('_INSTALL_SERVER_DB','mysql');define('_INSTALL_HOST_DB','adresse_serveur_de_bdd');// Mettez ici l'adresse ou est stocké votre server sql. dans mon cas il s'agit de l'adresse ip de mon serveur sql privédefine('_INSTALL_USER_DB','user_de_la_bdd'); define('_INSTALL_PASS_DB','mot_de_passe_de_votre_bdd');
ensuite, on configure la fonction “demarrer_site” avec les options qui convienne. Dans notre cas voici ce que cela donne :
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' => '[email protected]', // Adresse mail pour recevoir un mail lors d'une creation de site mutualise ('') 'code' => 'test', // 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' => true, // 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) // /!\ il faut qu'apache ait le droit d'ecrire dans les dossiers IMG/ et local/ a la racine du site ! // C'est la que la mutualisation va ecrire les regles de redirection automatiques pour les images de chaque site # 'utiliser_panel' => false, // Utiliser une table externe pour recuperer des identifiants ... (code, user, pass) permettant a un utilisateur d'installer le site (false) # 'annonce' => '<p>Un service proposé par <a href="http://www.spip.net/">la communauté SPIP</a></p>', // Texte a afficher en bas du formulaire d'activation de la mutualisation 'url_creer_base' => '' // Creer la base de donnees via une URL (methode AlternC) ) );123456789101112131415161718 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'=>'[email protected]', // Adresse mail pour recevoir un mail lors d'une creation de site mutualise ('') 'code'=>'test', // 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'=>true, // 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) // /!\ il faut qu'apache ait le droit d'ecrire dans les dossiers IMG/ et local/ a la racine du site ! // C'est la que la mutualisation va ecrire les regles de redirection automatiques pour les images de chaque site # 'utiliser_panel' => false, // Utiliser une table externe pour recuperer des identifiants ... (code, user, pass) permettant a un utilisateur d'installer le site (false) # 'annonce' => '<p>Un service proposé par <a href="http://www.spip.net/">la communauté SPIP</a></p>', // Texte a afficher en bas du formulaire d'activation de la mutualisation 'url_creer_base'=>'' // Creer la base de donnees via une URL (methode AlternC) ) );
Comme on crée une base par site, on a pas de souci de préfixes de tables.
Faites attention aussi à changer le code d’activation pour chaque installation, ça évite d’avoir de mauvaises surprises d’installation.
4°) On lance l’installation du site mutualisé :
Une fois le fichier “mes_options.php” situé dans /config est bien configuré avec les bonnes infos, on peut (enfin) lancer l’installation du site à mutualiser.
Pour se faire, aller sur le nom de domaine de votre site à mutualiser (comme défini plus haut dans la partie multidomaine).
Vous devriez arriver sur un affichage de ce type, qui va vous demander le fameux code d’activation :
![Mutualisation du noyau Spip 3 sur un mutualisé de chez OVH Capture d’écran 2013-09-22 à 17.35.24](http://media.paperblog.fr/i/672/6729449/mutualisation-noyau-spip-3-sur-mutualise-ovh-L-HVdXV8.png)
Tapez donc le code que vous avez défini dans mes_options.php, et validez. De là vous êtes guidé d’écran en écran, et spip va créer les différents répertoires dans /sites, créer les tables dans la base de données, etc.
Et voilà, vous avez votre nouveau site mutualisé qui fonctionne, a son propre cache, vous pouvez activer des plugins parmi ceux installé sur le site spip principal. Pour chaque nouveau site spip à rajouter, il faut refaire l’étape 3 en entier.
Remarque :
la mutualisation de spip ne gêne pas l’utilisation du multidomaine d’ovh histoire d’avoir d’autres sites qui ne sont pas des spip dans des sous répertoire de votre hébergement. En résumé, j’ai un noyau spip avec plusieurs sites mutualisés, et d’autres sites confifurés en multidomaines (wordpress et autre), chaque site dans son sous répertoire (comme epxliqué ici : http://www.ovh.com/fr/items/multidomain.xml) sans que cela gene.
RACINE du site
|—– fichiers de spip
|—– sites (qui stocke les sites mutualisés)
|—————- spipA.com
|—————- spipB.com
|—————- spip-ETC.com
|—– siteWP1
|—– siteWP2
|—– siteJoomla
Category : Dév & Code Tags : hébergement, mutualisation, ovh, plugins, Spip, spip 3