« Migrer de Drupal 7 à Drupal 9 » : différence entre les versions

De wikilivois
Aller à la navigationAller à la recherche
 
Ligne 112 : Ligne 112 :
** book (core)
** book (core)
** forum (core)
** forum (core)
** https://www.drupal.org/project/photo_albums - pour créer une bibliothèque d'albums photos
** https://www.drupal.org/project/permissions_by_term - pour gérer les accès public/privé
** https://www.drupal.org/project/permissions_by_term - pour gérer les accès public/privé
** https://www.drupal.org/project/xbbcode - beaucoup de nouvelles contiennent du bbcode  
** https://www.drupal.org/project/xbbcode - beaucoup de nouvelles contiennent du bbcode  

Version actuelle datée du 18 mars 2023 à 14:51

Pourquoi migrer ? Démarrage ...

https://www.drupal.org/psa-2022-02-23

Le support de Drupal 7 doit s'arrêter en novembre 2023. Drupal 9 est sorti le 3 juin 2020. La migration devient nécessaire.

Quelques principes de Drupal 8 & 9

https://www.drupal.org/about/9/from-7

https://www.drupal.org/docs/upgrading-drupal/upgrading-from-drupal-6-or-drupal-7/learn-key-drupal-concepts-prior-to-upgrading

  • améliore l'ergonomie pour les mobiles
  • facilite la gestion de version des sites (développement / production)
  • utilisation du framework Symphony pour faciliter les mises à jour et la gestion des bibliothèques
    • drupal 8 & 9 utilisent le gestionnaire de version composer

Préparer la migration

Drupal 9 (ou version ultérieure) a considérablement modifié la manière dont le contenu et la configuration sont stockés dans la base de données. De ce fait, une mise à jour ne peut pas simplement être appliquée à un site Drupal 7 existant. Au lieu de cela, le contenu et les données de configuration du site Drupal 7 doivent être migrés vers un nouveau site Drupal 9 (ou version ultérieure). Cela se fait à l'aide des modules Migrate et Migrate Drupal fournis par Drupal core dans Drupal 8 et versions ultérieures, puis mise à niveau soit dans un navigateur Web, soit à l'aide de Drush.

Tous les modules contribués n'ont pas de chemins de mise à niveau automatiques. Cela peut nécessiter une migration manuelle ou personnalisée. Drupal 9 (ou version ultérieure) a considérablement modifié la structure des thèmes. Ces modifications ne peuvent pas être migrées. Au lieu de cela, un thème doit être reconstruit pour fonctionner dans Drupal 9 (ou version ultérieure).

Bien qu'il existe des outils automatisés disponibles, leur configuration peut toujours être un processus complexe. Si un site n'a pas beaucoup de contenu ou de configuration personnalisée, certains utilisateurs peuvent trouver plus facile/plus rapide de créer manuellement ces données dans le nouveau site. Cela devrait être déterminé au cas par cas.

Identifier les modules à mettre à jour

Installer le module upgrade status

#composer require 'drupal/upgrade_status:^2.0@alpha'

Choisir la "Target version of Drupal core" à 9.4

Lancer une recherche de mise à jour (onglet UPGRADE STATUS)

Les modules suivants ne sont pas compatibles avec drupal 9.4 (au 31.12.2022):

  • Advanced Forum
  • Bbcode
  • CSS Injector
  • Date / Date iCal
  • FileField Sources Plupload
  • Max Image Size
  • Media: YouTube
  • Menu target
  • Messaging - replaced by Courrier
  • Notifications - replaced by Courrier
  • Node Gallery
  • Forum notifications
  • Printer, email and PDF versions - Replaced by: Entity Print 8.x-2.2, Printer and PDF versions for Drupal 8+
  • Taxonomy Access Control

Il faudra donc :

  • revoir la gestion des albums photos & vidéos
  • trouver une solution pour le forum
  • trouver une solution pour les articles écrits en bbcode
  • revoir le contrôle d'accès

Créer un nouveau site

Créer un site de test pour comprendre le fonctionnement de Drupal 9 (cf la page Drupal 9). Ainsi, nous avons du:

  • choisir un thème
  • revoir la gestion des droits - nous choisissons la gestion par taxonomy (public/privé)
  • manipuler l'ajout et suppression de modules
  • identifier manipuler certains modules spécifiques. Dans notre cas:
    • target link est remplacé par menu_link_attributes
    • CSS injector est remplacé par asset injector
    • node_gallery est remplacé par photo_albums (le changement est majeur!)

A noter que Drupal 9 demande une version 5.7.8 de mysql.

Une fois que l'on a suffisamment compris le fonctionnement de Drupal 9, refaire une installation "propre".

Créer un site "propre" et un site de test

Nous allons créer dev.livois.com, en nous restreignant à Drupal 9 car notre version de PHP n'est pas compatible avec Drupal 10.

#cd /srv/data/web/vhosts/dev/htdocs
#composer create-project drupal/recommended-project:^9 live

Créer la base de données via phpmyadmin:

  • ajouter un compte utilisateur (par exemple drupal_live)avec le compte root et noter le mot de passe.
  • choisir localhost si la base de données est locale. Cela limite les risques.
  • choisir "Créer une base portant son nom et donner à cet utilisateur tous les privilèges sur cette base."
  • dans opérations, choisir l'interclassement utf8mb4_unicode_ci
  • Installer le site en allant à la page d'installation <drupal>/live/web/
  • Paramétrer les hôtes de confiance

https://www.drupal.org/docs/installing-drupal/trusted-host-settings

<licode file=site/default/settings.php>

$settings['trusted_host_patterns'] = [
   '^livois\.com$',
   '^.+\.livois\.com$',
];

</licode>



On peut reproduire l'installation avec le site de test: <drupal>/test/web/

Réaliser la migration avec Drush

https://www.drupal.org/docs/upgrading-drupal/upgrading-from-drupal-6-or-drupal-7/upgrade-using-drush

  • Installer Drush
#composer require drush/drush

Par la suite <drush> correspond à la commande ./vendor/bin/drush.

  • Installer les modules de migration
 #composer require drupal/migrate_upgrade drupal/migrate_plus
 #<drush> install migrate migrate_drupal migrate_upgrade migrate_plus
  • Indiquer l'accès à la base de données à migrer dans settings.php

<licode file=site/default/settings.php> $databases['migrate']['default'] = array (

 'database' => 'drupal7',
 'username' => '<username>',
 'password' => '<password>',
 'prefix' => ,
 'host' => 'localhost',
 'port' => '3306',
 'namespace' => 'Drupal\\mysql\\Driver\\Database\\mysql',
 'driver' => 'mysql',
 'autoload' => 'core/modules/mysql/src/Driver/Database/mysql/',

); </licode>

  • Lancer la commande migrate:upgrade pour identifier les migrations possibles
#<drush> migrate:upgrade --legacy-db-key=migrate --configure-only 
#<drush> migrate:status --tag='Drupal 7'
  • Lancer les migrations désirées avec la commande de migration:
#<drush> migrate:import <migration>
  • migration des utilisateurs
upgrade_d7_user_role
upgrade_d7_user_mail
upgrade_d7_user 
  • migration des termes de taxonomy, les formats et langues
upgrade_d7_taxonomy_vocabulary
upgrade_d7_filter_format
upgrade_d7_node_type
upgrade_language
  • migration des nouvelles (article)
upgrade_d7_taxonomy_term_nouvelles
upgrade_d7_node_complete_article
  • migration des articles (book) avec l'option --force pour le dernier
upgrade_d7_taxonomy_term_articles
upgrade_book_settings
upgrade_d6_book_settings
upgrade_d7_node_complete_book
upgrade_d7_book --force
  • migration des posts du forum
upgrade_d7_taxonomy_term_forums
upgrade_d7_forum_settings
upgrade_d7_node_complete_forum
  • migrer les commentaires (avec l'option --force pour le dernier car nous n'avons pas migré les albums photos, ni les vidéos)
upgrade_d7_comment_type
upgrade_d7_comment_field
upgrade_d7_comment_field_instance
upgrade_d7_comment_entity_display
upgrade_d7_comment 

Copyright

© 2022-2023 Christophe de Livois

Tête de GNU Vous avez l'autorisation de copier, distribuer et/ou modifier ce document suivant les termes de la GNU Free Documentation License, Version 1.2 ou n'importe quelle version ultérieure publiée par la Free Software Foundation; sans section invariante, sans page de garde, sans entête et sans page finale. Pour plus d'informations consulter le site de l'APRIL.