Comparatif entre le processus de migration TYPO3 et Drupal

Le processus de migration technique est une étape importante dans la vie d'un site internet fonctionnant sous un CMS, que ce soit sous Drupal ou TYPO3. La mise à jour peut être mineure ou majeure. Elle permet bien souvent de corriger des bogues, corrige des failles de sécurité... Dans une mise à jour plus importante, elle ajoute des fonctionnalités et peut changer l'interface et le comportement du CMS. Nous allons comparer ici la fluidité et la facilité de migration entre TYPO3 et Drupal.

Version actuelle de Drupal : 8.4.4
Version actuelle de TYPO3 : 8.7.10

Processus de mise à jour du Core (coeur applicatif)

TYPO3

Pour TYPO3 et de manière générale sans trop rentrer dans les détails techniques, on va charger sur le serveur les sources de la nouvelle version. Ensuite, on va supprimer le lien symbolique qui mène aux anciennes sources vers les nouvelles sources. Il existe une méthode alternative en passant par Composer, un gestionnaire de dépendances écrit en PHP.

Puis, l’administrateur va accéder au module de configuration de TYPO3 pour démarrer l’assistant de mise à jour du CMS. S’ensuit un parcours d’étapes pour mettre à jour la base de données et d’autres composants. Tout ceci se fait d’un clic de souris.

La mise à jour peut dans certains cas modifier l’apparence du front-office. Le développeur devra procéder à des ajustements pour rétablir le fonctionnement normal du site internet. Quelques extensions sont parfois qualifiées de dépréciées et sont remplacées par des extensions du Core. Il convient soit de conserver ces extensions, soit de les supprimer et de passer à une extension du Core. Ça été le cas par exemple avec l’éditeur de texte intégré (passage de rtehtmlarea à CKEditor avec la version 8 LTS).

D’autres extensions ne sont parfois pas disponibles sur une version ultérieure. Il faudra donc trouver une extension dotée des mêmes fonctionnalités mais saisir à nouveau les contenus et modifier les gabarits livrés par défaut avec l’extension.

La Core Team, l’équipe qui s’occupe des orientations du CMS, qu’il s’agisse de méthodes de développement, de composants techniques et de stratégie dans la diffusion et dans l’adoption de l’outil, s’est attachée depuis de nombreuses années à faciliter le processus de migration du CMS en fournissant aux développeurs des outils pour remonter des alertes qui indiquent des points de blocage pour le processus de migration.

Avec la version 9, prochaine version LTS, un nouvel outil à fait son apparition : « l’extension scanner » ou analyseur d’extensions qui va vérifier le code des extensions à migrer avec le coeur applicatif pour remonter d’éventuels points de blocage et proposer des solutions adéquates pour migrer ces extensions.

Drupal

On distingue la mise à jour mineure au sein d’une même version et la mise à jour majeure qui représente un changement important de version (v7 -> v8 par exemple).

Mise à jour mineure :

  • Sauvegarde fichiers et base de données (identique TYPO3)
  • Mettre le site en mode maintenance. Il n’est donc plus accessible
  • Supprimer tous les fichiers sauf le dossier « Sites » et les fichiers .htaccess et robots.txt
  • Reporter les éventuelles nouveautés dans le .htaccess
  • Démarrer le script « Update.php »
  • Si des erreurs s’affichent, utiliser un module supplémentaire (https://www.drupal.org/project/module_missing_message_fixer) pour résoudre les erreurs les unes après les autres.

Une mise à jour mineure à donc un impact sur le site car il n’est plus accessible un temps donné et des erreurs peuvent se produire. Le processus n’est pas transparent.

Mise à jour majeure :

Depuis le navigateur

Pour migrer de la version 6 ou 7 vers la dernière version, la 8, il faut installer une version de Drupal 8 comme s’il s’agissait d’un nouveau site.

Il s’agit dès lors de migrer :

  • La configuration du site (ex : les types de contenu et autres champs personnalisés)
  • Les contenus du site (ex : les nodes, termes de taxonomie et utilisateurs)

Avec Drupal, la migration est un processus qui ne produit pas forcément les résultats attendus. Il est parfois plus facile de migrer les contenus avec des copier-coller depuis l’ancien site ! Des modules tiers ne disposent pas forcément d’une mise à jour automatique.

Le processus de migration expliqué

Il faut vérifier que les modules suivants soient activés dans la nouvelle version de Drupal 8 :

  • Migrate
  • Migrate Drupal
  • Migrate Drupal UI

Migrate est un module qui fournit une API pour la migration de la configuration et des contenus.

Migrate Drupal fournit la capacité de migrer configuration et contenus.

Migrate Drupal UI est l’interface de migration.

Il faut ensuite se rendre depuis son navigateur à l’adresse www.mon-site-drupal.fr/upgrade

Depuis un assistant basique, on doit spécifier manuellement le numéro de version de l’instance Drupal à migrer.

On doit ensuite spécifier le type de base de données, les accès à l’ancienne version, si les tables ont un préfixe spécifique. Il faut également renseigner les répertoires publics et privés de l’instance.

L’assistance indique ensuite un nombre de modules pouvant être migrés et le nombre de ceux dont la migration est impossible. Chaque module est clairement désigné par son nom.
Il faut posséder de bonnes connaissances des modules pour savoir si un site peut fonctionner avec ou sans les modules qui posent problème. Si le module est nécessaire, il faut d’abord installer une version vierge du module et ensuite recommencer le processus de migration.

On lance ensuite le processus de migration qui peut durer plusieurs heures si le site contient un nombre très important de données.

Le résultat de la migration est affiché ensuite. La journalisation des erreurs utilise l’API Drupal. Il faut donc filtrer les messages de résultat de migration en sélectionnant correctement l’option « migrate_upgrade ».

Voici la liste des modules nécessaires à activer pour migrer vers la dernière version de Drupal en ligne de commande. Cet outil permet de faire un rollback, un retour en arrière en cas de problème.

  • Migrate Upgrade
  • Migrate Plus
  • Migrate Tool

La commande ‘drush migrate-status’ ne produira rien.

Pour lancer la migration, il faut lancer au préalable la création de migrations individuelles en indiquant les paramètres pour accéder à la base de données.

$ drush migrate-upgrade --legacy-db-url=mysql://user:password@server/db --legacy-root=http://example.com --configure-only

Pour voir la liste des migrations qui seront appelées :

$ drush migrate-status

Pour lance toutes les migrations :

$ drush migrate-import –all

Pour consulter la liste complète des commandes de migration : https://www.drupal.org/docs/8/upgrade/upgrade-using-drush

La migration d’une instance Drupal vers la dernière version depuis la ligne de commande permet de suffisamment contrôler le processus de migration et s’intègre davantage dans des processus d’automatisation.

Une migration Drupal semble prendre beaucoup plus de temps qu’une migration TYPO3 et offre moins de garantie de succès, sauf si elle s’accompagne d’un peu de travail du développeur pour migrer les modules non compatibles. Même si sous TYPO3, il convient de migrer des extensions, le processus semble plus fluide sur ce dernier.

Sources :

https://typo3.org/news/article/typo3-v900-launched/
https://usetypo3.com/ckeditor.html
https://www.drupal.org/updating-and-upgrading-drupal-core
https://www.drupal.org/docs/8/upgrade
https://www.drupal.org/docs/8/upgrade/upgrade-using-web-browser
https://www.drupal.org/docs/8/upgrade/upgrade-using-drush