Préparer un atelier SPIP

Un article de Wiki de Rhizomes.

L'objectif est de proposer une recette pour mettre en un rien de temps un SPIP de test en ligne rapidement.

Sur un serveur on disposera (liste de dépendances loin d'être exhaustive) des services suivants :

  • un serveur web pour SPIP, ce qui implique :
    • un interpréteur PHP, avec module mysql,
    • un serveur MySQL.
  • un serveur ftp pour mettre à jour les squelettes

Sur ce serveur, apache tourne dans cette recette avec les droits utilisateurs www-data, groupe www-data.

Sommaire

Prérequis logiciels

Le tutorial est (en l'état) fait/testé avec :

  • proftpd
  • MySQL
  • apache2
  • SPIP
  • net2ftp

Répertoires de travail

Notre apache a pour racine /var/www

SPIP sera installé dans /var/www/SpipRhizomes

Configuration des services

proftpd

Nous souhaitons ajouter un utilisateur anonyme (pas de mot de passe requis) "ftpRhizomes" à notre serveur ftp afin de pouvoir mettre à jour les squelettes SPIP. Nous mettons ici un utilisateur anonyme par facilité. Pour un accès authentifié, il me semble nécessaire soit de disposer d'un utilisateur ayant un compte, soit de jouer avec les .ftpaccess (peu documentés).

Nous ajoutons donc à la configuration de notre proftpd :

### Ajout pour Rhizomes ###
<Anonymous /var/www/SpipRhizomes/>
 User				www-data
 Group				www-data
 # We want clients to be able to login with "ftpRhizomes"
 UserAlias			ftpRhizomes www-data

 RequireValidShell		off

 # Limit the maximum number of anonymous logins
 MaxClients			10

 # We want 'welcome.msg' displayed at login, and '.message' displayed
 # in each newly chdired directory.
 DisplayLogin			welcome.msg
 DisplayFirstChdir		.message

 <Limit ALL>
    DenyAll
 </Limit>

 <Limit DIRS STOR CWD MKD STOR READ RMD DELE>
     AllowAll
 </Limit>
</Anonymous> 

MySQL

Il nous faut ajouter un utilisateur pour SPIP, et lui créer une base de donnée. On pourrait également réimporter les tables d'un atelier précédent.

En partant de 0, on ajoute un utilisateur, on crée la base associée, et on lui ajoute les droits avec ces requètes SQL :

USE mysql;

INSERT INTO user (Host, User, Password, Select_priv, Insert_priv,  Update_priv, Delete_priv, Create_priv, Drop_priv, Reload_priv)
VALUES  ("localhost", "tempSpipRhizomes", old_password("tempSpipRhizomes"), "Y", "Y", "Y",  "Y", "Y", "Y", "Y");

DROP DATABASE IF EXISTS tempSpipRhizomes;

CREATE DATABASE tempSpipRhizomes;

GRANT ALL PRIVILEGES ON tempSpipRhizomes TO 'tempSpipRhizomes'@'localhost';

Note. J'utilise ici la fonction old_password et non password parce que je n'ai pas migré tout mes mots de passe. Sur un mysql vierge, on doit pouvoir sans soucis utiliser password, tout simplement.

Une fois que l'on aura fini de travailler, on pourra récupérer tout le contenu de la base comme ceci :

mysqldump -u root -p tempSpipRhizomes > tempSpipRhizomes.sql

Pour le réinjecter dans un autre serveur (une fois l'utilisateur et la base créée) comme ça :

mysql -u root -p tempSpipRhizomes < tempSpipRhizomes.sql

apache

Il n'y a rien à faire sur le serveur apache, mis à part s'assurer que l'on a installé SPIP, et éventuellement net2ftp.

SPIP

On récupère la dernière version de SPIP, on la décompacte dans /var/www/SpipRhizomes.

On suit /var/www/SpipRhizomes/ecrire pour faire la configuration initiale.

Alternativement, on peut reprendre une archive d'un atelier passé, et réinjecter la base de donnée.

net2ftp

Si par hasard, une configuration réseau interdisait un accès direct à notre ftp, on peut penser à installer un client ftp fonctionnant via HTTP. De ce que j'ai testé (ou pas) :

  • WebHTTP (j'arrive à lister les fichiers sur proftpd, mais pas à les télécharger, peut-être un soucis de RFC ?),
  • egroupware-ftp (qui dépend de egroupware-core, et de pleins de choses, ça me semble vraiment comme prendre une enclume pour écraser une mouche pour ce qu'on souhaite faire),
  • net2ftp a fonctionné sans soucis.

Quelle que soit l'option choisie, il suffit de mettre l'un de ces services en route sur notre apache (par exemple dans /var/www/net2ftp dans le cas de la dernière proposition).