Avertissement
Ce tutoriel n’a pas vocation à inciter les utilisateurs de SPIP à migrer leurs sites vers Gandi Simple Hosting (il ne s’agit pas de publicité). Il présente simplement une méthode de mutualisation du noyau SPIP sur cette plateforme pour les personnes ayant ce besoin.
Ce tutoriel s’appuie principalement sur le plugin mutualisation et sa documentation provisoire.
Pré-requis et cahier des charges
On suppose que le lecteur de ces lignes dispose d’une instance de type « Gandi Simple Hosting ».
Pour information, l’instance qui a servi de modèle pour ce tutoriel est de taille L, basée à Paris avec PHP 5.6 et MySQL 5.6 (Percona).
Tous les sites considérés ci-après utilisent SPIP (version 3.1).
Afin qu’un maximum de personnes puissent tirer parti de ce tutoriel, on essaiera de détailler les procédures suivantes :
- Mise en place de la mutualisation. On explique comment préparer la mutualisation sur un site « maître ».
- Mutualisation d’un autre site situé sur la même instance. On présente les modifications nécessaires permettant d’ajouter (à la mutualisation) un site indépendant situé sur la même instance.
- Mutualisation d’un site développé en local. On propose une procédure pas à pas pour ajouter à la mutualisation un site développé en local.
Mise en place de la mutualisation
On dispose d’un site (à l’adresse www.domaine1.tld
) hébergé sur une instance Simple Hosting et on souhaite qu’il soit utilisé pour stocker la mutualisation.
Cela signifie que ce site va héberger le moteur de la mutualisation ainsi que tous les fichiers de tous les sites mutualisés. On peut toutefois noter que cela ne sera pas visible par le visiteur et que ce site fonctionnera comme tous les autres sites mutualisés avec sa propre base de données, ses propres plugins et tous ses fichiers de personnalisation (répertoires « tmp », « IMG », « local », « config », « squelettes »).
Configuration du plugin Mutualisation
On télécharge le plugin « Mutualisation » compatible avec SPIP 3.0/3.1/3.2, on dézippe le répertoire puis on le renomme éventuellement « mutualisation » (au moment de l’écriture de cet article, le répertoire s’appelle « mutualisation_v1 », ce qui pose un problème lors de l’appel mutualisation/mutualiser.php du futur fichier « mes_options.php » livré avec le plugin).
Dans le répertoire « mutualisation », on trouve un fichier « mes_options.php.txt » qu’on copie en dehors du répertoire puis renomme « mes_options.php ».
On réalise alors les modifications suivantes :
-
define ('_SITES_ADMIN_MUTUALISATION', 'domaine1.tld');
-
/* placer dans ce tableau les sites ou l'on ne veut pas la redirection canonique */ $www = array('domaine1.tld');
- Astuce de Matthieu Marcillaud permettant d’avoir le site
www.domaine1.tld
accessible : lien vers le forum. )
En tête de fichier, juste après< ?php
:$mutualisation = ($_SERVER['HTTP_HOST'] == 'domaine1.tld') ? false : true ; if ($mutualisation) {
Puis tout en fin de fichier, ou juste avant
?>
si c’est présent :}
Préparation des répertoires sur le serveur
Attention : l’opération suivante va rendre l’adresse www.domaine1.tld
temporairement inaccessible.
On se connecte maintenant à l’instance par SFTP et on ouvre le répertoire vhosts/www.domaine1.tld/htdocs
.
On déplace les cinq répertoires « config », « tmp », « local », « IMG » et « squelettes » dans un répertoire temporaire (par exemple celui correspondant au vhost de test de forme c123456789.url-de-test.ws fourni avec l’instance) puis on recrée ces répertoires (vides) dans le répertoire htdocs. Ne pas oublier de modifier les droits de ces répertoires conformément aux directives de SPIP (chmod 777 pour « config », « tmp », « local » et « IMG »).
Transfert du plugin Mutualisation puis redémarrage de l’instance
On transfère :
- le répertoire « mutualisation » dans le répertoire htdocs.
- le fichier édité « mes_options.php » dans le répertoire « config » précédemment créé.
On crée ensuite le dossier « sites » dans le répertoire htdocs.
Enfin, on redémarre l’instance Simple Hosting (lien sur la page de l’instance) puis on se connecte à l’interface d’administration de l’instance et on vide le cache Varnish.
On tape www.domaine1.tld
dans le navigateur. Le formulaire d’activation de la mutualisation apparaît :
Le code d’activation demandé est ecureuil
(modifiable dans le fichier « mes_options.php » ci-avant). On laisse le système créer les répertoires « config », « tmp », « local » et « IMG » dans vhosts/www.domaine1.tld/htdocs/sites/domaine1.tld/
mais on ne poursuit pas l’installation de SPIP (les fichiers de connexion existent déjà).
On déplace les contenus des répertoires « config », « tmp », « local », « IMG » et « squelettes » du répertoire de test vers les contenus des répertoires « config », « tmp », « local », « IMG » et « squelettes » (à créer à la main) du répertoire vhosts/www.domaine1.tld/htdocs/sites/domaine1.tld/
.
On réactualise la page www.domaine1.tld
dans son navigateur et on se connecte à l’espace privé. On vide le cache et on se rend sur la page d’administration des plugins (et on les réactive le cas échéant).
Le site est fonctionnel et la base de mutualisation est établie.
Mutualisation d’un autre site situé sur la même instance
On dispose d’un autre site (à l’adresse www.domaine2.tld
) hébergé sur la même instance Simple Hosting et on souhaite lui faire bénéficier de la mutualisation.
Redirection vers le site de mutualisation
Attention : l’opération suivante va temporairement rendre l’adresse www.domaine2.tld
inaccessible.
On se rend sur l’interface d’administration de son instance et on clique sur « multi-address management » puis on relie www.domaine2.tld
à www.domaine1.tld
.
Les fichiers et répertoires du site sont temporairement stockés dans le répertoire vhosts/www.domaine2.tld/htdocs_old
. On en aura besoin plus tard.
Configuration de la mutualisation et installation du site
On récupère le fichier « mes_options.php » situé dans le répertoire vhosts/www.domaine1.tld/htdocs/config/
puis on effectue la modification suivante :
/* placer dans ce tableau les sites ou l'on ne veut pas la redirection canonique */
$www = array('domaine1.tld','domaine2.tld');
On transfère ensuite ce fichier modifié à son emplacement d’origine puis on tape www.domaine2.tld
dans le navigateur.
Le formulaire d’activation de la mutualisation apparaît et on reprend la procédure de la partie précédente (Ré-installation du site) en déplaçant les contenus des répertoires « config », « tmp », « local », « IMG » et « squelettes » de vhosts/www.domaine2.tld/htdocs_old/
vers vhosts/www.domaine1.tld/htdocs/sites/domaine2.tld/
. (On pensera également à déplacer les plugins vers vhosts/www.domaine1.tld/htdocs/plugins/
).
On réactualise la page www.domaine2.tld
dans le navigateur et on se connecte à l’espace privé. On vide le cache et on se rend sur la page d’administration des plugins (et on les réactive le cas échéant).
On efface enfin les fichiers restants contenus dans vhosts/www.domaine2.tld/htdocs_old
afin d’économiser de l’espace disque.
Le deuxième site est mutualisé.
Mutualisation d’un site développé en local
On dispose d’un autre site développé en local qu’on souhaite lier à l’adresse domaine3.tld
et joindre à la mutualisation.
Redirection permanente
Tout d’abord, on décide de faire pointer domaine3.tld
vers www.domaine3.tld
à l’aide d’une redirection permanente. Pour cela, on se rend sur la page de gestion de son nom de domaine et on crée la redirection.
Modification du fichier de zone
Toujours sur la page de gestion du nom de domaine, on change le fichier de zone pour que domaine3.tld
pointe vers l’instance Simple Hosting.
Création du vhost
On ajoute alors le vhost www.domaine3.tld
à l’instance Simple Hosting via la page de l’instance en décochant la modification automatique des DNS.
Redirection vers le site de mutualisation
On se rend sur l’interface d’administration de l’instance et via le « multi-address management », on relie www.domaine3.tld
à www.domaine1.tld
comme illustré précédemment (Redirection vers le site de mutualisation).
Base de donnée
On crée la base de données depuis l’interface d’administration de l’instance.
On exporte ensuite la base de données locale puis on l’importe via PhpMyadmin depuis l’onglet SQL de sa base de données.
Configuration de la mutualisation et installation du site
On récupère le fichier « mes_options.php » situé dans le répertoire vhosts/www.domaine1.tld/htdocs/config/
puis on effectue la modification suivante :
/* placer dans ce tableau les sites ou l'on ne veut pas la redirection canonique */
$www = array('domaine1.tld','domaine2.tld','domaine3.tld');
En attendant la propagation DNS liée à la modification du fichier de zone, on transfère les plugins nécessaires vers www.domaine1.tld/htdocs/plugins/
.
On transfère également les répertoires « config », « tmp », « local », « IMG » et « squelettes » vers le vhost de test (Préparation des répertoires sur le serveur). Attention à modifier préalablement le fichier « connect.php » du répertoire « config » afin que la connexion à la base de données puisse se faire convenablement.
Au bout d’un certain temps (entre quelques minutes et quelques heures), la propagation DNS est terminée et l’adresse www.domaine3.tld
tapée dans le navigateur renvoie bien le formulaire d’activation de la mutualisation. On reprend la procédure indiquée Ré-installation du site (sans oublier de déplacer les plugins vers vhosts/www.domaine1.tld/htdocs/plugins/
).
Une fois connecté à l’espace privé, on n’oublie pas de :
- changer l’URL du site public (dans l’onglet « configuration » puis « identité du site ») qui est certainement une URL liée à l’installation locale.
- vider le cache.
- se rendre sur la page de gestion des plugins pour les activer (éventuellement) et recréer le cache des pipelines.
Le troisième site est mutualisé.
Discussions par date d’activité
3 discussions
Bonjour à tous,
Si j’ai bien compris que chmod 777 est conseillé pour « config », « tmp », « local » et « IMG », qu’en est-il des autres dossiers et des fichiers ?
Je ne vois rien dans la doc Gandi.
Merci !
Répondre à ce message
Bonjour Sébastien,
As-tu un conseil pour monter de version SPIP ? Suffit-il d’écraser le site maître par la nouvelle version SPIP ?
Patrick
Bonsoir PaN,
Pour le passage de la 3.0 à la 3.1, je me suis contenté d’écraser l’ancienne version sur le site maître, comme tu l’indiques. Et ça a bien marché.
Toutefois, j’avais vérifié au préalable que cette mise à jour fonctionnait bien sur ma mutualisation en local. Mon conseil est donc de tester en local d’abord :-)
Sébastien
Répondre à ce message
Sébastien,
Ce que j’imaginais implémenter depuis des années. Beau cadeau de Noël !
Merci,
PaN
De rien PaN :-)
N’hésite pas à poster un message en cas de difficulté lors de l’installation ou bien d’erreur/imprécision dans l’article.
Sébastien
3 sites mutualisés ! Documentation impeccable. Je n’ai rencontré aucune difficulté.
Merci,
PaN
Répondre à ce message
Ajouter un commentaire
Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :
Merci d’avance pour les personnes qui vous aideront !
Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.
Suivre les commentaires : |