Carnet Wiki

Plugin SiloSPIP

Version 4 — Mai 2009 dani

Plugin en développement, pas encore opérationnel : http://zone.spip.org/trac/spip-zone...

L’idée : des sites SPIP « grand public »

Des sites SPIP en libre-service, aussi facile qu’un blog-bigbrother.com, mais qui ne séquestrent ni le contenu du site, ni l’accès à la techno qu’il y a en dessous.

La motivation : les premiers barreaux de l’échelle qui manquent

Lors de la SPIP design party à Nantes en 2007, Tétue illustrait la situation de SPIP comme une échelle qui va très très haut, mais à laquelle il manque les premiers barreaux. Pour ceux qui peuvent arriver par d’autres moyens jusqu’à l’echelle c’est super, mais pas tout le monde peut y arriver.

Du coup, plein de gens — y compris beaucoup qui pourraient tenir aux principe du manifeste du web indépendant — vont vers des services commerciaux (ou publi-gratuits) de réalisation de blogs ou de sites, plutôt que de choisir une solution et une infrastructure qui leur permettrait de préserver leur liberté.

Dans l’esprit des solutions de mutualisation de SPIP, ce plugin SiloSPIP (pas de spéciale préférence pour ce nom), tente les idées ci-dessus, en particulier celle d’ouvrir l’accès aux technos en dessous : on peut créer un site SPIP « en libre service web », choisir des squelettes, activer ou non des plugin, etc. mais par la suite, si on veut, on peut avoir accès, « en dessous », aux squelettes SPIP, au PHP MySQL, etc.

La vision de solution : Plugin d’inscription, couplage à une mutualisation ewt à un panel AlternC

  1. On s’inscrit comme visiteur — ou par le mécanisme Inscription2 que l’on veut — dans un site SiloSPIP
  2. De là on peut créer un ou des sites SPIP. on choisit :
    1. un nom et éventuellement un domaine,
    2. un titre de site,
    3. une description,
    4. un jeu de squelettes et un habillage.
  3. L’utilisateur ne le sait pas forcément, mais un compte AlternC est automatiquement créé, et y sont configurés :
    1. le sous domaine mutualisé de l’utilisateur : login.domainemutualise.org
    2. la base de données du site SPIP et un user mysql,
    3. les répertoires de contenu du site.
  4. Éventuellement les sites créés sont syndiqués dans le site silo.
    -# En accès authentifé au site Silo, le visiteur.
    -# En accès authentifé au site Silo , le visiteur  :
    -## voit la liste d ses sites SPIP :
    1. peut les gérer, les supprimer,
    2. dans un coin « expert » il accède à son compte AlternC,
  5. AlternC n’ayant pas de mécanisme de récupération de mot de passe oublié, une synchronisation du mot de passe du site Silo avec celui d’AlternC permettrait d’y pallier.

L’embryon de développement

L’install et les dépendances

Est ajoutée une table spip_silosites et sa boucle . On pourrait imaginer de coupler cette table à la table spip_sites des syndications dans un site, de même que le plugin [Inscription2->-Inscription -] Inscription2 crée une table auteurs_elargis , qui simplement étend la notion d’auteur . crée une table auteurs_elargis, qui simplement étend la notion d’auteur, avec une cle partagee sur les deux tables.

Le plugin comprend un panneau de config CFG, dans lequel on donne l’adresse du panel AlternC auquel le service est couplé, avec un nom d’administrateur AlternC et son mot de passe. On y définit aussi le domaine, ou la liste de domaines en sous-domaine desquels on peut créer des sites du silo.

les balises et boucles

Une balise #FORMULAIRE_SILO_CREER_SITE qui permet à un utilisateur authentifié authentifier de créer un site dans le silo. , à appeler ainsi  :
<
code >
<div class=« ajax  »>
#FORMULAIRE_SILO_CREER_SITE#SESSIONid_auteur
</
div >
</code > On l’appelle appeler ainsi :

   <div class="ajax">
        #FORMULAIRE_SILO_CREER_SITE{#SESSION{id_auteur}}
   </div>

Une balise #FORMULAIRE_SILO_SITES, à appeler de même, qui permet de lister les sites créés.

Aucune fonctionnalités n’est encore finie. La création d’un site l’inscrit dans la base, et tente quelques appels à l’interface du panneau AlternC pour la créer l’utilisateur AlternC, la base MySQL pour le site, le user mysql et ses droits.

Le mode d’organisation de la mutualisation de sites

On installe un AlternC.

Dans un répertoire, a priori hors d’un compte AlternC, on installe un code SPIP avec le plugin de mutualisation. Par exemple dans /usr/share/spip/

On crée un alias Apache de ce répertoire valable dans tout VirtualHost. Par exemple, on crée un fichier /etc/apache2/conf.d/spip.conf avec le contenu suivant :

Alias /spip_mut /usr/share/spip


<Directory /usr/share/php/spip>
        Options Indexes FollowSymLinks
        DirectoryIndex index.php


AddType application/x-httpd-php .php
                php_flag magic_quotes_gpc Off
                php_flag track_vars On
                php_flag register_globals Off
                php_value include_path .
        </IfModule>
</Directory>

La mutualisation pourra être faite de la manière suivante :
-  la création de la base de données dans le user AlternC correspondant
-  la déclaration du sous domaine comme « domaine par défaut » login.domaine_mutu.org, proposé par AlternC lors de la création d’un utilisateur,
-  la configuration de ce domaine vers un répertoire de l’utilisateur, où une règle de réécriture (RewriteRule Apache dans le fichier .htaccess) le renvoie vers l’alias du SPIP mutualisé : http//login.domaine_mutu.org/spip_mut/
-  dans le dossier ’sites’ du SPIP mutualisé, au lieu d’un dossier par site, on trouver un lien symbolique vers le un dossier dans le compte AlternC de l’utilisateur : /usr/share/spip/sites/login.domaine_mutu.org -> /var/alternc/html/l/login/login.domaine_mutu.org qui, comme pour le plugin mutualisation, contient les dossiers de contenus : /tmp/, /IMG/, etc.