SPIP-Clône : Gestion de sites en quantité

Ceci est une ARCHIVE, peut-être périmée. Vérifiez bien les compatibilités !

Spip-Clône est un outil pour simplifier l’installation, la configuration et la mise à jour de sites SPIP en grandes quantités sur un serveur aux ressources modestes.

Spip-Clône est un outil pour simplifier l’installation, la configuration et la mise à jour de sites Spip en grandes quantités sur un serveur aux ressources modestes (techniques et humaines).

-  Public : Administrateurs de nombreux sites sous Spip sur un même serveur (faut l’admettre, c’est d’un usage plutôt précis !).

Pour le moment, c’est encore au stade plutôt expérimental, mais c’est utilisé en « production » depuis quelques mois. En plus de permettre les mises à jour rapides, chaque site Spip utilise que 2-3 mo pour l’antémémoire (cache) et environs 1 mo pour la base de données (économisant ainsi environs 10 mo de code php et d’images).

L’outil utilise le terme « clône » car une copie centrale (non-utilisée) de Spip est installée et chaque site n’est qu’un clône des fichiers, grâce à des liens symboliques (unix/linux/macosx : commande ln -s).

Écran principal
Écran affiché suite à l’authentification de l’administrateur par Spip.

Nous vous invitons à tester/commenter l’outil en téléchargeant le code suivant. L’installation a été largement simplifée, mais l’outil exige quand même quelques connaissances techniques, telles que la manipulation de chemin d’accès Unix et une certaine compréhension entre le chemin d’accès sur disque d’un site web et son adresse web.

Création d’un nouveau site

Fonctionalités disponibles

-  Création d’un site à partir d’une copie centrale de Spip
-  Propagation de mots-clés (et groupes) à partir d’un site de référence
-  Modification par le web à mes_fonctions.php3 et mes_options.php3

L’outil vise à offrir un plus haut niveau d’automatisation, mais pour le moment, c’est où nous en sommes.

Installation

-  Décompacter SPIP dans un répertoire quelconque (idéalement dans un répertoire qui n’est pas accessible par le web et dont les fichiers sont en lecture seules). On peut donc imaginer la hiérarchie de fichiers qui suit :

(...)/public_html/
(...)/spip_core/
(...)/spip_core/ecrire/
... etc ...

où « public_html » est le répertoire qui héberge votre site web.

-  Télécharger le code (ci-dessous) vers le serveur.
-  Décompresser si nécessaire ($ tar zxfv spip_clone-0.x.x.tar.gz) afin que le répertoire spip_clone soit dans le répertoire du Spip (i.e. au même niveau que le répertoire « écrire »). On obtient donc le résultat suivant :

(...)/public_html/
(...)/public_html/admin/spip_clone/
(...)/public_html/admin/spip_clone/spip_clone.php (etc.)
(...)/spip_core/
(...)/spip_core/ecrire/
... etc ...

On peut se passer du site « admin », mais en installant un SPIP admin, spip-clône pourra propager des mots-clés entre sites et gérer l’accès à l’interface. Sans SPIP admin, il faudra créer un .htaccess dans le répertoire spip-clône pour restreindre l’accès.

-  À l’aide d’un navigateur web, visiter spip_clone.php (www.votre-site.net/spip_clone/spip_clone.php) pour démarrer sa configuration.

  • Ce script demandera où est situé le SPIP « source ». Dans l’exemple de cet article, la source est "../spip_core/« ou »/chemin/complet/vers/admin/spip_core/" (préférable).
  • Quant au répertoire de squelettes, il s’agit de créer un répertoire parallèle à spip_core où chaque sous-répertoire est un choix de squelette. Par exemple :

(...)/public_html/
(...)/public_html/admin/spip_clone/
(...)/spip_core/
(...)/spip_squels/
(...)/spip_squels/1er_squelette/
(...)/spip_squels/2e_squelette/
(...)/spip_squels/ ... etc ...

Voilà, c’est prêt. Maintenant, l’étape recommandée est de créer pour premier clône le SPIP administratif, c’est à dire, de créer un clône dans le répertoire (...)/public_html/admin/. Quand c’est prêt, configurer le site via ecrire comme avec n’importe quel site SPIP, et une fois prêt, les administrateurs de ce site seront les seuls qui pourront créer de nouveaux clônes.

C’est aussi la raison pour laquelle il est recommandé de créer un site « admin » et non d’utiliser un site actif pour référence, à moins que ce site ait un seul administrateur.

Développements futurs

Consulter le Spikini de Spip-Contrib :
-  http://www.spip-contrib.net/spikini...

Code source

-  Licence : GPL
-  Auteur : Mathieu Lutfy (www.bidon.ca)
-  Système d’exploitation : Unix, Linux, MacOSX

Discussion

3 discussions

  • 4

    L’idée est très séduisante, mais les explications relatives à l’installation ne sont pas claires et ne semblent pas cohérentes.

    Comment est-il possible que « le répertoire spip_clone soit dans le répertoire du Spip » alors que spip_clone doit être accessible sur le web, tandis que spip_core est « idéalement dans un répertoire qui n’est pas accessible par le web ».

    En tous cas, malgré de nombreux essais, je n’obtiens aucun résultat.

    J’en arrive à me demander si l’auteur n’a pas amélioré son code en oubliant d’adapter les explications (ou bien le contraire) ...

    D’avance merci, si quelqu’un a pu utiliser ce sytème et peut donner des explications un peu plus claires et plus précises.
    Jac

    • Mathieu Lutfy

      En effet, il y a un léger problème d’oeuf et la poule avec cette contrib.. voici ce que je conseille :

      1. Installer un Spip sur un site quelconque accessible par le Web, disons : /admin/.
      2. Décompacter Spip-Clône dans le répertoire de ce site. Il sera donc accessible par /admin/spip_clone/.
      3. Décompacter, mais ne pas installer, un Spip sur un répertoire quelconque. Ce dernier doit être sous l’arborescence de « admin » uniquement si PHP roule en « safe-mode » (mais dans ce cas, je pense que le script aura quelques problèmes..). Chez moi, c’est /home/mathieu/scripts/spip_core/.
      4. Optionnellement, créer un répertoire de squelettes qui peuvent être fournis par défaut. Par exemple, /home/mathieu/scripts/spip_squels/. Chaque entrée dans ce répertoire est un répertoire de squelettes. On peut donc avoir spip_squels/10_premier, spip_squels/15_second et ainsi de suite..
      5. Lancer la configuration de spip-clône : accéder à http://.../admin/spip_clone/spip_clone.php
        1. L’authentification à spip-clône utilise celui du Spip « admin ».
        2. Dans la conf, la « source Spip » et le « core » mentionné ci-haut. C’est le Spip qui servira de référence aux autres sites Spip, et c’est pourquoi ce spip ne devrait pas être utilisé. De plus, pour le moment je conseille d’installer avec l’option « un seul utilisateur pour tous les sites ».

      Du côté de l’admin du serveur Web, je conseille que soit :
      -  les clônes soient tous dans un sous-répertoire d’un site, tel que foo.net/site1, foo.net/site2, etc.
      -  ou les clônes soient dans une arborescense utilisant une configuration semblable à :

      <VirtualHost .......> 
         <Directory /var/www/vhosts>
           Options Indexes Includes FollowSymLinks
           AllowOverride All
         </Directory>
       
         UseCanonicalName        Off
         VirtualDocumentRoot     /var/www/vhosts/%-2.1/%0
      </VirtualHost>

      Pour en revenir au problème d’oeuf et de la poule, c’est que l’on peut re-installer le site « admin » avec spip-clône, pour éviter toute redondance.

      mathieu

    • Merci Mathieu,
      Ces explications un peu plus précises m’ont permis de réussir mes premiers clones, que tu peux trouver ici :

      -  le début d’un sous-site d’un site de centre culturel ;

      -  un sous-site de support technique du même site.

      Dans ce dernier, j’ai repris, dans deux articles, la méthode que j’ai appliquée pour l’installation de spip-clone et la création des premiers clones. J’y mentionne un petit bug que j’ai dû corriger.

      Au moment de créer du contenu, je remarque qu’il me manque les icônes des raccourcis typographiques. Sans doute ai-je oublié de mettre ecrire/IMG en 777.

      J’aurai sans doute encore des questions. Pour commencer :

      1. en attendant que tu ajoutes la fonctionnalité de suppression d’un clone, comment puis-je en supprimer manuellement ? Je n’y réussis pas avec mon client ftp.
      2. j’ai commencé par essayer de créer des clones de spip-agora, sans y parvenir. Serait-ce une simple fausse manoeuvre de ma part ou bien y vois-tu une autre raison.

      En tous cas, bravo et merci pour ton excellent travail. Avec un bon tutoriel, je suis certain qu’il fera beaucoup d’heureux.

      Jac

    • Génial la doc, merci.

      -  J’ai ajouté la suppression des clônes dans la contrib (version 0.3.2). Par précaution, puisque c’est une opération récursive (i.e. qui s’applique sur tous les sous-répertoires), le script supprime uniquement les fichiers qui sont des liens symboliques et les répertoires vides.

      Par conséquent, les documents joints aux articles d’un site ne sont pas supprimés, de même que les fichiers de configuration. Par contre, les permissions sont modifiées de façon à ce que l’on puisse plus facilement les supprimer/télécharger par FTP.

      -  Au sujet de Spip-Agora : je ne suis pas très familier. Si quelqu’un réussit à modifier Spip-Clône pour que ça fonctionne, je peux toujours inclure les modifications si l’on m’envoie un diff.

      mathieu

    • Ah, j’oubliais : pour faire la mise à jour de la contrib, il suffit d’écraser les anciens fichires. Le script détectera qu’il a été mis à jour et demandera de confirmer la configuration.

      Entre la version 0.3.1 et 0.3.2 il n’y a pas eu modification au système de configuration, il faut seulement cliquer sur le bouton valider.

      mathieu

    Répondre à ce message

  • 2

    Bonjour a vous ...........

    je cherche a installer votre contrib pour des test perso.......

    ceux ci est un pas a pas pour vous aider a améliorer votre contrib , voir lever des bugs ou dire simplement superbe ça marche.


    Allez on y va :

    -  hebergeur free :

    -  Création des repertoires

    Spip-Clone ; celui ci reçoit la contrib.

    a l’interieur :
    admin
    installer un Spip sur un site quelconque accessible par le Web, disons : /admin/.

    spip_clone
    écompacter Spip-Clône dans le répertoire de ce site. Il sera donc accessible par /admin/spip_clone/.

    spip_core
    Décompacter, mais ne pas installer, un Spip sur un répertoire quelconque.

    spip_squels
    Optionnellement, créer un répertoire de squelettes qui peuvent être fournis par défaut. Par exemple,

    Ensuite lancement de :
    http://bachant.free.fr/Spip-Clone/
    puis
    http://bachant.free.fr/Spip-Clone/admin/
    puis
    http://bachant.free.fr/Spip-Clone/admin/spip_clone/
    puis
    http://bachant.free.fr/Spip-Clone/admin/spip_clone/spip_clone.php

    Tout d’abord :
    j’ai les erreurs suivantes :
    Notice : Undefined index : conf_spipcore in /var/www/free.fr/8/7/bachant/Spip-Clone/admin/spip_clone/inc/inc_clones.php on line 42

    Notice : Undefined index : conf_spipsquels in /var/www/free.fr/8/7/bachant/Spip-Clone/admin/spip_clone/inc/inc_clones.php on line 43

    Notice : Undefined index : conf_mes_fonctions in /var/www/free.fr/8/7/bachant/Spip-Clone/admin/spip_clone/inc/inc_clones.php on line 44

    Notice : Undefined index : conf_mes_options in /var/www/free.fr/8/7/bachant/Spip-Clone/admin/spip_clone/inc/inc_clones.php on line 45

    Notice : Undefined index : conf_vhostsbase in /var/www/free.fr/8/7/bachant/Spip-Clone/admin/spip_clone/inc/inc_clones.php on line 46


    puis lorsque Créer un nouveau site sous SPIP

    celles-ci :

    arning : opendir(../spip_squels/) : failed to open dir : No such file or directory in /var/www/free.fr/8/7/bachant/Spip-Clone/admin/spip_clone/inc/inc_bazar.php on line 54

    Warning : readdir() : supplied argument is not a valid Directory resource in /var/www/free.fr/8/7/bachant/Spip-Clone/admin/spip_clone/inc/inc_bazar.php on line 55

    Warning : closedir() : supplied argument is not a valid Directory resource in /var/www/free.fr/8/7/bachant/Spip-Clone/admin/spip_clone/inc/inc_bazar.php on line 66


    et je me retrouve la :

    Notice : Undefined index : select_squelettes in /var/www/free.fr/8/7/bachant/Spip-Clone/admin/spip_clone/spip_clone.php on line 181
    Spip-Clone / Création d’un nouveau clône, étape 2

    Warning : file_exists() : Unable to access / in /var/www/free.fr/8/7/bachant/Spip-Clone/admin/spip_clone/inc/inc_clones.php on line 623

    Warning : mkdir() : Unable to access / in /var/www/free.fr/8/7/bachant/Spip-Clone/admin/spip_clone/inc/inc_clones.php on line 624

    Erreur : Le répertoire cible n’existe pas et je n’ai pas le droit de le créer.


    EN BREF / AU SECOURS..............

    • Salut, les avertissement se produisent parce que le répertoire « spip_squels », i.e. là où tu peux entreposer tes squelettes, n’est pas créé (ou le chemin d’accès dans la conf de spip-clône est invalide).

      Mais la création du clône comme tel devrait fonctionner.

      Je rajouterai dans la prochaine version une option pour ne pas clôner les ficheirs de squelettes.

      Bonne chance,
      mathieu

      p.s. je suis très surchargé en ce moment, je ne peux pas aller plus en détail.

    • ok je cherche ...........

      bon vous pouvez toujours regarder la .........

      http ://bachant.free.fr/Spip-Clone/

    Répondre à ce message

  • Problèmes d’installation 0.3.2 sur le serveur mutualisé de ClaraNet.
    Je suis un utilisateur Windows qui connais très peu sur Linux.
    Mon phpinfo me dit que safe_mode est on (je ne sais pas ce que ça induit).

    Organisation :

    • /LeCheminPerso/public/ Mon espace perso
      • tice Un de mes sites publics (source du clone)
        • spip_clone Installation de spip_clone
      • clone Un de mes sites publics (cible du clone)

    En lançant l’install, j’ai les messages :

    - Warning: Unable to access ecrire/inc_connect.php3 in /web/Xt/Xe/Xa/team-santonum.com/public/tice/spip_clone/spip_clone.php on line 54
    - Notice: Undefined index: conf_spipcore in /web/Xt/Xe/Xa/team-santonum.com/public/tice/spip_clone/inc/inc_clones.php on line 42
    - .. in conf_spipsquels, in conf_mes_fonctions, in conf_mes_options
    - Notice: Undefined index: conf_vhostsbase in /web/Xt/Xe/Xa/team-santonum.com/public/tice/spip_clone/inc/inc_clones.php on line 46

    Je lance quand même le paramétrage.
    Même Warning en ligne 54, mais Configuration enregistrée.

    Dans l’administration, je crée le clone dans /public/clone/spip/. Ca a l’air OK. Dans FileZilla, je vois tous les fichiers “liens” de 1k.

    Mais à l’exécution du nouveau SPIP, impossible d’accèder aux scripts php. Toute url du style clone.mondomaine.com/spip/article.php?id_article=1 donne :

    Forbidden
    You don't have permission to access /spip/article.php on this server.

    Aucun .htaccess dans le dossier.

    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 :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

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.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom