Synchronisation de sites web drupal développement - live
Le cycle de vie d'un projet impliquant Drupal ( ou tout projet en général ) inclut le plus souvent une étape de test durant laquelle la majorité des bugs pouvant influencer l'utilisateur final sont éliminés. Lorsque cette épuration est terminée, le projet peut passer à la phase suivante qui est communément la phase live. Dans le cas de mises à jours ou d'optimisations supplémentaires du site, le même processus se met en place à savoir l'apparition de l'étape de test sur un serveur inaccessible au public avant la release sur le serveur public. Le site live continuant à être visité et n'étant pas nécessairement coupé du réseau continuera à engranger du contenu. Dès lors se pose un problème étant donné que le serveur test ne subit pas les mêmes ajouts mais lors de sa mise en activité il ne doit pas y avoir de perte de données pour le client. Nous verrons donc si après les différentes méthodes existantes permettant de solutionner cette situation.
Passer d'une version développement à une version live avec un site web Drupal revient généralement à effectuer un migration complète du site web grâce notamment à des outils comme le module backup_migrate ou migrate. Mais force est de remarquer que cette méthode convient plus à la première mise en ligne du projet après sa période d'incubation qu'à une mise à jour des fonctionnalités du site après. En effet, afin d'utiliser cette méthode sur un site live il faudrait le mettre en maintenance et empêcher les utilisateurs d'ajouter du contenu sous peine de voir se dernier complètement écrasé par la mise à jour.
Afin de régler ce problème plusieurs solutions existent et son dépendantes du cas de figure rencontré.
Les modules dont nous allons vous faire part sont les modules Features, node_export et deploy. Chacun dispose de ses spécificités et excelle dans un domaine prédéterminé comme nous allons le voir tout de suite.
Le module Features que certains connaissent déjà est spécialisé dans l'exportation de configuration entre différents sites. En gros il vous sera aisé de créer un set de configuration sur un site de développement donné et les exporter sur autant de sites que vous voulez ensuite. Par configuration on doit comprendre tout ce qui a trait au fonctionnement modifiable via l'user interface telles les configurations des modules au views sans compter l'exportation possible des views ou des content types. Ces fichiers sont exportés sous la forme d'un module codé vous fournissant un package à distribuer là où vous en aurez le plus besoin. C'est aussi simple que ça.
Bien que le module features soit puissant, il se limite à cette exportation de configurations et ne permet pas de synchroniser les données contenues sur le site*. C'est à ce niveau qu'intervient le module node_export. Ce dernier comme son nom l'indique nous permet d'exporter et d'importer les nodes dans une installations drupal nous permettant d'harmoniser les contenu entre deux instances de site. Son interface est simple et vous demande juste quelle node exporter. Il y a une option qui vous permet en plus de mettre à jour les nodes que vous envoyer sur le site au lieu d'en créer de nouvelles à chaque fois.
Mention spéciale pour ce module qui a le mérite d'être extrêmement intéressant. Il est capable à l'instar de node_export d'exporter des nodes d'un site A vers un site B. Mais qu'à t-il de différents vous me direz ? Et bien la différence tient du fais que Deploy vous permet de faire vos modification juste à partir de l'UI et de synchroniser plusieurs sites sans vous casser la tête rien qu'en lui demandant de ''pusher'' les données en live. Le processus est simple, vous choississez les nodes à envoyer sur la version live, vous choississez un endpoint qui correspond à votre site live et selon la méthode configurée vous l'envoyer tout de suite ou au prochain cron. Seul bémol, le support des filefields lors de l'upload est quelque peu erratique mais espérons que tout cela changera dans le futur.
Nous venons de voir les différentes méthodes qui nous aiderons à synchroniser les versions de nos projets Drupal. Concrètement ce qu'il y a à retenir c'est que selon le cas de figure vous aurez à faire usage de Features afin d'exporter par exemple une nouvelle configuration qui sied plus à vos besoins et d'utiliser node_export pour mettre à jour vos données et nodes en tout genre. Nous ne recommanderons pas trop Deploy parce que en dépit de son aspect avant – guardiste l'instabilité de son fonctionnement n'est pas très rassurante et on lui préferera des méthodes qui ont déjà fait leurs preuves à maintes reprises. On pourra le réserver pour des projets ou on peut se permettre une marge d'erreur plutôt que pour d'autres projets sensibles.
* une extension du module node_export, node_export_features permet d'ajouter cette fonctionnalité au module features mais on ne peut ajouter les nodes que une à une.
Module |
Fonctionnalités |
Avantages / Inconvénients |
Features |
Exportation de configurations, Views, modules, nodes* |
Avantages : - Très simple d'utilisation, - Fonctionnalités aisées à installer après exportation - Permet d'exporter les views dans un package - Versionning des packages Inconvénients : Ne permet pas l'export massif de nodes et de contenu |
Node_Export |
Exportation de nodes avec les fichiers et les nodes en relations, |
Avantages : - Permet de mettre à jour rapidement du contenu - exportation massive de nodes possible, Inconvénients : - Ne génère pas le content types des nodes - L'exportation de masse est fonction de la mémoire php |