Mardi 28 août 2007

Bénéficier de la mutualisation du code de SPIP

SPIP à partir de la version 1.9.2 (et encore mieux en 1.9.3 SVN) permet de mutualiser son code source entre plusieurs sites différents.

Cet article est une réflexion sur ce que la mutualisation du code source de SPIP impliquerait dans le cadre d’un hébergement mutualisé (cas le plus général).

Retour Sommaire

Théorie

Retour Sommaire

Documentation

  • une documentation : La mutualisation facile
  • une autre documentation : Service d’hébergement mutualisé : scripts complémentaire du côté de l’hébergeur avec mise en place automatique des bases mysql, des droits et des accès FTP
  • un bout de PHP pour faire tout le boulot : svn://zone.spip.org/spip-zone/_plugins_/_test_/mutualisation/
Retour Sommaire

Contraintes

  • Le dossier plugins/ de SPIP est commun à tous les SPIP mutualisés (mais tous les plugins n’ont pas à être activés sur chacun des sites)
  • Une mise à jour du code de SPIP implique de lancer la procédure de mise à jour des sites manuellement (si besoin) [1]
  • tous les noms de domaine des site mutualisés devraient pointer vers le même chemin physique, seul un sous dossier serait propre à chaque site
Retour Sommaire

Intérêt et avantages

  • les accès aux fichiers du code source sont mutualisés
    → moins d’accès disque
  • eAccelerator [2] a beaucoup moins de fichiers à maintenir dans son cache
  • les sauvegardes : il n’y a pas 20Mo par hébergé (hors plugins) à sauvegarder
  • on peut même en sachant que l’hébergé a un SPIP mutualisé ne pas sauvegarder les dossiers local et tmp de son site
Retour Sommaire

Inconvénient ?

  • pas de maîtrise pour chacun des sites de sa version de SPIP
  • pas de maîtrise des plugins pour chacun des sites (un hébergé qui voudrait tel plugin ne pourrait l’avoir)
    → il semblerait qu’une modification soir du bout de code php, soit de SPIP puisse permettre d’avoir 2 dossiers plugins/ : 1 mutualisé, et 1 par site hébergé
  • la sécurité inter-domaine doit être difficile à mettre en place
Retour Sommaire

Mise en œuvre pratique

Pour permettre des mises à jour centralisées aisées, il est essentiel de disposer d’un client SVN sur le serveur afin de disposer de la commande : svn up qui permet de mettre à jour le code source de SPIP et des plugins en les synchronisant avec le serveur de code source de SPIP.

SVN peut aussi être utilisé pour la récupération initiale du code source de SPIP et des plugins [3].

Retour Sommaire

Installation automatisée de SPIP

Exemple de fichier d’installation de SPIP et de quelques plugins :

#Installation de SPIP
svn checkout svn://trac.rezo.net/spip/spip/ ./

#Installation de Gribouille, le wiki façon SPIP
svn checkout svn://zone.spip.org/spip-zone/_squelettes_/gribouille

#Installation du pseudo plugin de mutulaisation
svn chekout svn://zone.spip.org/spip-zone/_plugins_/_test_/mutualisation

#Installation des plugins
mkdir plugins
cd plugins
svn checkout svn://zone.spip.org/spip-zone/_plugins_/_stable_/acces_restreint
svn checkout svn://zone.spip.org/spip-zone/_plugins_/_stable_/acronymes
svn checkout svn://zone.spip.org/spip-zone/_plugins_/_dev_/autorite
svn checkout svn://zone.spip.org/spip-zone/_plugins_/_stable_/balise_session
svn checkout svn://zone.spip.org/spip-zone/_plugins_/_stable_/barre_typo_generalisee
svn checkout svn://zone.spip.org/spip-zone/_plugins_/_stable_/barre_typo_v2
svn checkout svn://zone.spip.org/spip-zone/_plugins_/_stable_/boutonstexte
svn checkout svn://zone.spip.org/spip-zone/_plugins_/_test_/cfg
svn checkout svn://zone.spip.org/spip-zone/_plugins_/_dev_/compat193
svn checkout svn://zone.spip.org/spip-zone/_plugins_/_stable_/couteau_suisse
svn checkout svn://zone.spip.org/spip-zone/_plugins_/_stable_/forms/forms_et_tables_1_9_1
svn checkout svn://zone.spip.org/spip-zone/_plugins_/_stable_/enluminures_typographiques_v2
svn checkout svn://zone.spip.org/spip-zone/_plugins_/_stable_/recherche_etendue
svn checkout svn://zone.spip.org/spip-zone/_plugins_/_stable_/sitemap
svn checkout svn://zone.spip.org/spip-zone/_plugins_/_test_/sedna
svn checkout svn://zone.spip.org/spip-zone/_plugins_/_stable_/crayons

cd ..

#Creer le dossier squelettes au besoin
mkdir squelettes

#Creer le dossier de mutualisation
mkdir sites

#mettre les droits idoines pour les dossiers
chmod 770 config
chmod 770 IMG
chmod 770 local
chmod 770 tmp
chmod 770 sites

Une fois cela fait, il faut suivre les indication de la documentation pour mettre en place le mes_options.php qui va configurer la mutualisation et la mettre en œuvre.

Retour Sommaire

Mise à jour

La mise à jour se fait par la commande svn up.

Elle peut être automatisée à l’aide du script shell suivant :

echo "=============="
echo "<== SPIP"
svn up
cd mutualisation
svn up
cd ../gribouille
svn up
cd ..
echo "SPIP ==>"
cd plugins
for inode in $(ls)
do
if
        [ -d $inode ]
then
        echo $inode" ==>"
 cd $inode
 svn up
 cd ..       
fi
done
cd ..
chmod 770 . -R
chown www-data . -R
chgrp www-data . -R
Retour Sommaire

Gestion

Une fois qu’un domaine est installé en mutualisé, on dispose d’un outil de consultation des autres sites mutualisés que l’on obtient en visitant la page ecrire/?exec=mutualisation

Exemple de mutualisation du code source de SPIP
Exemple de mutualisation du code source de SPIP

Retour Sommaire

[1Un système pour automatiser les mises à jour est à l’étude.

[2Un accélérateur d’applications PHP basé sur la conservation en mémoire cache de la compilation du code source PHP afin de pouvoir l’exécuter immédiatement

[3Pour les plugins disponibles sur la zone.

Vos réactions

  • 4 août 2012 21:14

    Bonjour, Merci pour ce tuto bien clair. J’ai suivi tout à la lettre et tout semble bien se passer. Mon site maître est en place. Mais je ne comprends pas bien comment ajouter de nouveaux domaines. Si je crée undomaine.net dans le dossier site, ce n’est pas suffisant, il n’apparaît pas dans la liste avec la commande ecrire/ ?exec=mutualisation

    D’autre part j’ai lu sur d’autres tutos qu’il y avait un tableau de bord du plugin. Comment y accéder ? je ne vois rien concernant le plugin dans mon spip

    D’avance merci