Migrer vers drupal 8
Vers "migration drupal" de 6 à 7, migration de module ou thème, de drupal7-dev en prod... Cette page parle de la migration de drupal 7 vers drupal 8 et la liste des outils et modules de migration.
https://www.drupal.org/node/2350603
La migration du core n'écrase pas le site en cours, mais écrase une conf drupal 8.
1. Préparation et prérequis
- avoir un Drupal 8 vierge (profil minimal) installé avec le module du core Migrate Drupal (qui a accès a la source) et Migrate
- pour migrer i18n il faut Migrate Drupal i18n Module (migrate_drupal_i18n) installé sur Drupal 8
-
activer sur le d8 le module migrate_upgrade et les modules v8 utilisés (par core book pour garder arborescence des livres...)
attention: un module v7 ne map pas excatement sa version v8 - par ex le core bloc v7 a été séparé en 2 modules v8: Block et Custom Block. - drush 8 (ou 9) si on veux utiliser drush pour migrer + 3 modules (migrate_tools, migrate_upgrade et migrate_plus)
- Accès aux 2 bases, pour récupérer les fichiers privés drupal 7, configurer avant (dru8) le chemin file_private_path avant de lancer l'upgrade + copier les fichiers dans le dossier files (d8).
- Vérifier qu'on a bien activé les modules contrib voulus sur le drupal 8, vierge de contenu (voir conflit d'ID)
Toujours d'actualité ? Si le format de texte "PHP code filter" était utilisé, n'existe pas dans dupal 8. Il sera rempacé par "filter_null" (utiliser project/php non recommandé) - voir plutot par là...
https://www.drupal.org/docs/8/upgrade/drupal-8-migrate-modules
2. Migrer
On a le choix entre : UI (moins puissant, pas de rollback) ou avec Drush
Ne faire aucune conf (du site Drupal 8) avant la fin du processus de mise à niveau (migrate-upgrade)
de nov 2016, Upgrade using Drush : https://www.drupal.org/node/2350651
Si on veux migrer via drush, avoir la dernière version 8 (https://github.com/drush-ops/drush) + activer Migrate Upgrade et Migrate Plus - migrate_tools est utile si on a plusieurs upgrades à faire (https://www.drupal.org/project/migrate_tools) sur la v8
Avant de lancer cette commande migrate-upgrade
, vérifier
- qu'on a bien installé (ou non) tous les modules drupal 8 voulus : Custom Block... (va effacer la db)
-
et lu (note commentaire, profil d'install, ref vers terme à reconfigurer à la mano...) L'erreur filter_null (modifier le input format et voir si soucis token), pas de migration des vues (leurs chemins ?),
+ un chp (v7, le traitement du texte est au niveau de l'instance du field) apparaissant dans divers node_bundle, peux être en Plain text ici et en Filtered text là : on peux avoir à faire des modifs sur le drupal 7 (tous les bundles qui utilisent ce chp texte doivent avoir la meme conf de traitement du texte). Drupal 8 fonctionne autrement, au niveau field... et ne peux modifier par bundle : Text (plain), Text (formatted), Text (plain, long) et Text (formatted, long).
+ i18n ? cf https://www.drupal.org/docs/8/upgrade/upgrading-multilingual-drupal-7-to...
drush migrate-upgrade --legacy-db-url=mysql://user:pass@server/d6db --legacy-root=http://myd6site.com --configure-only
lancer l'upgrade (la 1ere, en test)
2 facons d'upgrader : avec drush (+ migrate_tools requis) ou via UI (cf https://www.drupal.org/node/2257723), les 2 ont besoin de project/migrate_upgrade.
avec drush + Migrate Tools + migrate_upgrade
Migrate Tools ajoute 2 commandes : drush ms
(pour migrate-status) et drush mi
(pour migrate-import), mais aussi migrate-rollback, migrate-stop, migrate-reset-status, migrate-messages, migrate-fields-source
migrate_upgrade ajoute drush migrate-upgrade
qui fait 2 choses:
-
en utilisant les modèles de migration de drupal et la conf du site source, il génère les upgrades d'un site.
Ex: la migration d7_book n'est crée que si le module est actif sur la v7 et la v8. -
il lance chaque migration crée, dans l'ordre des dépendances.
Ex: les users doivent etre migrés avant la migration des nodes.
Commencer au début par les 1ers pas du process de la migration (composées de diverses migrations) avec l'option --configure-only,
puis voir les migrations possibles :
drush migrate-upgrade --legacy-db-url=mysql://user:password@server/db --legacy-root=http://mydrupal7site.com --configure-only
drush ms
Voir et executer les migrations
-
Pour ne lancer qu'une partie :
drush migrate-import {migration name}
-
lancer toute la liste :
drush migrate-import --all
S'il manque des champs à l'édition du contenu, vérifier pour chaque type de contenu l'onglet "Manage Form Display" s'ils ne sont pas simplement cachés. Si c'est à l'affichage, vérifier "Manage Display".
A la fin
Note : Nulle part n'est mentionné que faire à la fin... Désinstaller les modules de migrations ?
Migrate-manifest
Pour grouper des migrations, via un fichier de conf YAML nommé manifest.yml (à la racine drupal 8)
, à l'aide du module https://www.drupal.org/project/migrate_manifest
drush config-list|grep migrate
versions hébergeurs
gandi
PHP Version 5.4.45-0+deb7u1. Devrait bientot passer en 5.6.
MySQL version 5.5
sous Apache/2.4.16
plus sur le web
Utiles : https://www.mtech-llc.com/blog/luke-pekrul/guide-estimating-upgrade-drup... et https://www.mtech-llc.com/blog/edys-meza/categorizing-migrations-accordi...
non lus: https://assos.centrale-marseille.fr/ftorregrosa/blog/migration-de-drupal...
Aout 2016 : préparer upgrade https://www.drupal.org/node/2350603
Nov 2016 : upgrade avec drush https://www.drupal.org/node/2350651