Il y a 389 articles et 19 utilisateurs inscrits (ce bandeau est défini dans MediaWiki:Sitenotice)

Migration Salamandre vers Drupal 9

De AJLSM
Version datée du 8 mars 2023 à 12:33 par Jlarvers (discussion | contributions) (Page créée avec « == Préparation pour la montée en version D8 -> D9 == Voir : * http://mw.ajlsm.com/wiki/Basculer_Drupal_8_vers_Drupal_9 * http://mw.ajlsm.com/wiki/Migration_Pandor_vers_... »)
(diff) ← Version précédente | Version actuelle (diff) | Version suivante → (diff)
Aller à la navigation Aller à la recherche

Préparation pour la montée en version D8 -> D9

Voir :

  1. Commencer par faire une mise à jour vers la version D8 la plus haute : 8.9.20
  2. Lancer
    composer update --dry-run
    
    pour voir si la mise à jour est possible. Corriger les erreurs si nécessaire.

Installation de Upgrade Status et réalisation des tâches suivantes

Voir :

  1. http://mw.ajlsm.com/wiki/Migration_Pandor_vers_Drupal_9#Installation_de_upgrade_status
  2. http://mw.ajlsm.com/wiki/Migration_Pandor_vers_Drupal_9#Travailler_avec_Upgrade_Status

Suppression des modules problématiques non utilisés

composer remove drupal/bbr drupal/field_group drupal/sitemap drupal/views_accordion drupal/views_taxonomy_term_name_depth drupal/views_simple_math_field

Vider tâches Drupal

./vendor/bin/drush cr

Mise à jour des modules à migrer

Ces modules nécessitent une mise à jour, avant de pouvoir être migrés.

Faire un

url/update.php

module par module (pour éviter d’avoir un problème avec un module sans pouvoir l’identifier facilement)

composer require 'drupal/upgrade_rector:^1.0@alpha'
composer require 'drupal/admin_toolbar:^3.0'
composer require 'drupal/backup_migrate:^5.0@RC'
composer require 'drupal/crop:^2.0'
composer require 'drupal/role_delegation:^1.1'
composer require 'drupal/role_delegation:^1.2'
composer require 'drupal/social_media:^1.9@RC'
composer require 'drupal/bg_image_formatter:^1.15'
composer require 'drupal/cache_clear_shortcut:^2.0'
composer require 'drupal/devel:^4.1'
composer require 'drupal/bootstrap_barrio:^4.33’

Suppression des modules non installés qui peuvent être migrés

composer remove drupal/addtoany drupal/blazy drupal/block_content_permissions drupal/block_permissions drupal/bootstrap_paragraphs drupal/ckwordcount drupal/colorbox drupal/colorbox_inline drupal/csv_serialization drupal/easy_breadcrumb drupal/entity_print drupal/link_attributes drupal/link_class drupal/menu_breadcrumb drupal/menu_per_role drupal/views_conditional drupal/views_data_export drupal/views_fieldsets drupal/views_infinite_scroll

E - Analyse des problèmes trouvés dans chaque modules : sélection du ou des modules puis, en bas dopage : Scanner

L'option "scan" bas de page de Upgrade Status permet de lister la plupart des problèmes lors des montées en version.

Le plus fréquent : Ajout de "core_version_requirement: ^8 || ^9.4 || 10 » dans les fichiers des modules …info.yml

Après la mise en compatibilité des modules, reste un certain nombre de problèmes de type :

1 - Drupal\Tests\...::$defaultTheme is required

Cela concerne les méthodes de test utilisant un thème qui est maintenant déprécié.

Cela se corrige avec le patch suivant :

  public static $modules = ['path', 'token', 'token_module_test'];

+ /** + * {@inheritdoc} + */ + protected $defaultTheme = 'stark'; + + protected $defaultTheme = 'stark'; + + 2 - The "entity.manager" service is deprecated. You should use the 'entity_type.manager' service instead. + le fichier et le n° de ligne concerné

Il faut appliquer la correction.

3 - The 'captcha_test/TestCacheable' library is not defined because the defining extension is not installed. Cannot decide if it is deprecated or not.

Il manque une library. On va faire la mise à jour avec ça car cela n’empêche pas la migration. F - Problème récurrent d’affichage de Pleade dans Drupal avec page blanche et erreur : Error : Call to a member function bundle() on string dans bootstrap_barrio_theme_suggestions_page_alter() Se corrige en commentantdans le fichier .theme de barrio, la section suivante en entier : /**

* Implements hook_theme_suggestions_HOOK_alter() for page template.

G - US ne renvoie plus de problème est confirme la migration possible. Drupal est à jour 8.9.20 est prêt à migrer vers D9.

H - Dump de la base de données et archive de cette version.

I - Migration vers D9 : http://mw.ajlsm.com/wiki/Migration_Pandor_vers_Drupal_9 et https://www.drupal.org/docs/upgrading-drupal/drupal-8-and-higher

I - 1 : On sauvegarde composer.json et web/.htaccess

I - 2 : Après changement des droits d’écritures sur les fichiers setting,

composer require 'drupal/core-recommended:^9' 'drupal/core-composer-scaffold:^9' 'drupal/core-project-message:^9' --update-with-dependencies --no-update

I - 3 : Dans composer.json, modifier la version du drupal/core :

"drupal/core": "^8.7.0", remplacé par "drupal/core": "^9",

I - 4 : Lancer composer update —dry-run

I - 5 : Si ok, lancer  : composer update

I - 6 : Ensuite : drush updatedb

/!\ Il faut passer à PHP 8, mais on lance l’update : Une erreur avec les plugins Ckeditor non installés.

> [error] The following plugins are missing: link, fakeobjects.
To install the CKEditor plugins run drupal ckeditor_media_embed:install if you have <a href="https://drupalconsole.com/" target="_blank">Drupal Console</a> installed. Otherwise, please see the <a href="https://www.drupal.org/project/ckeditor_media_embed#ckeditor-media-embed--install" target="_blank">installation instructions</a> on the page for additional install methods.

I - 7 : Passage à PHP 8.1 : Installation de la dernière version 8.1

Installation : sudo apt install software-properties-common sudo add-apt-repository ppa:ondrej/php sudo apt update sudo apt install php8.1 sudo apt install php8.1-common php8.1-fpm php8.1-mysql php8.1-gmp php8.1-xml php8.1-xmlrpc php8.1-curl php8.1-mbstring php8.1-gd php8.1-dev php8.1-imap php8.1-opcache php8.1-readline php8.1-soap php8.1-zip php8.1-intl php8.1-cli libapache2-mod-php8.1

Configuration :

a2enmod proxy_fcgi setenvif (si nécessaire) sudo a2enconf php8.1-fpm sudo update-alternatives --config php

Désactivation des anciennes versions (si présente après vérification avec : dpkg -l | grep php) sudo a2dismod php7.2 sudo a2dismod php7.3 sudo a2dismod php7.4 sudo a2dismod php8.0

Activation de la version php sudo a2enmod php8.1 sudo systemctl restart php8.1-fpm.service

Redémarrage service apache : sudo systemctl restart apache2.service

Vérification : php -v

Si problème, chercher l'erreur dans tail -f /var/log/apache2/cdf.errors.log

I - 8 : Lancer le update.php dans Drupal pour terminer la migration.

I - 9 : Check des erreurs dans « tableau de bord administration »

I - 9 - a : Protection des fichiers à remettre :

chmod 755 web/sites/default chmod 644 web/sites/default/*settings.php chmod 644 web/sites/default/*services.yml

I - 9 - b : Database Isolation Level

Dans setting.php, ajouter les lignes suivantes à la fin de :

$databases['default']['default'] = array (
[…]
  'init_commands' => [
    'isolation_level' => 'SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED',
  ],

I - 9 - c : Une fois la migration vers le serveur de production terminée, il restera à corriger le PATH vers le répertoire //private (private-drupal)

J - Mise à jour 8 vers 9.5.4 terminée : sauvegarde et dump avant migration.

composer require 'drupal/views_bulk_operations:^4.2'