source: spip-zone/_plugins_/migrateur/dev-by-http/paquet.xml @ 88450

Last change on this file since 88450 was 88450, checked in by marcimat@…, 5 years ago

Création d'une branche expérimentale afin de gérer différemment les migrations entre serveurs.

La configuration à réaliser pour migrer les données (sql, IMG) d'un serveur à l'autre est
actuellement assez complexe, et nécessite la création de clés ssh, la présence de certains
outils sur les serveurs, pas toujours évidents à mettre en place ; d'autant que c'est apache qui
exécute ici les commandes (et non pas l'utilisateur qui se connecte au site par ssh, comme c'est
le cas si on utilise php en ligne de commandes).

On cherche à simplifier tout cela dans cette branche en utilisant des transferts par HTTP,
comme le fait le plugin "Migration" d'ailleurs, mais d'une manière quelque peu différente.

Cela nécessite l'installation de notre plugin "Migrateur" sur les 2 sites, et de le configurer
d'un côté comme source ; de l'autre comme destination. La configuration du serveur source
crée automatiquement des clés, l'une pour l'authentification (qui se périme au bout de 12h), l'autre
qui sert à crypter les données transmises (cryptage aes qui utilise https://github.com/defuse/php-encryption).

La communication s'effectue en json, avec un message en 2 partie : 'key' est la clé d'authentification (en clair) et
'message' est le contenu du message crypté aes, qui contient l'action demandée au serveur ou sa réponse. Le message
décodé est par défaut un tableau [action: xxx, data: yyy] où xxx est une chaîne et yyy est une donnée libre.

Le cas d'une demande de récupérer un fichier est légèrement différent et créera une communication en stream où
chaque morceau est également transmis crypté de la même façon ; et décrypté de la même façon sur le
serveur destination. On utilise pour ça toujours la librairie php-encryption ainsi qu'un filtre sur
les stream php pour les encoder ou décoder à la volée. Lorsque le fichier est entièrement reçu,
on vérifie que le fichier est identique (sha256) à ce qui était attendu.

Avec ce dépot, les actions de création et téléchargement du dump sql semble fonctionner (en local du moins).
On s'appuie sur un appel à mysqldump si cette librairie est présente, sinon on utilise une librairie PHP équivalente
(https://github.com/ifsnop/mysqldump-php) pour créer le dump SQL.

Il reste à gérer une approximation d'un rsync du répertoire IMG pour que les fonctionnalités soient à peu près équivalentes
à ce qu'on avait avant. Je suppose que la première migration sera beaucoup plus longue par HTTP que par la commande rsync+ssh
équivalente. On n'a rien sans rien

Il manque donc encore quelques dépots et tests avant que ça puisse servir correctement.

Note: désolé de ce gros commit ; j'ai en partie utilisé GIT en local, mais pas assez tôt pour utiliser git-svn.
Bref, c'est un peu beaucoup d'un coup.

File size: 489 bytes
Line 
1<paquet
2        prefix="migrateur"
3        categorie="outil"
4        version="3.0.0"
5        etat="dev"
6        compatibilite="[3.0.5;3.1.*]"
7        logo="prive/themes/spip/images/migrateur-64.png"
8        documentation="http://contrib.spip.net/4477"
9>
10
11        <nom>Migrateur</nom>
12
13        <auteur>Cyril Marion</auteur>
14        <auteur>Matthieu Marcillaud</auteur>
15
16        <licence>GNU/GPL</licence>
17
18        <menu nom="migrateur"
19                titre="migrateur:migrateur_titre"
20                parent="menu_administration"
21                icone="images/migrateur-16.png" />
22
23</paquet>
Note: See TracBrowser for help on using the repository browser.