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

Migration Salamandre vers Drupal 9

De AJLSM
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 caches 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

Analyse des problèmes trouvés dans chaque modules

Sélection du ou des modules puis, en bas de page : 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 :

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

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

Corrigez avec le patch suivant :

public static $modules = ['path', 'token', 'token_module_test'];
 
+  /**
+   * {@inheritdoc}
+   */
+  protected $defaultTheme = 'stark';
+
+  protected $defaultTheme = 'stark';
+
+

The "entity.manager" service is deprecated. You should use the 'entity_type.manager' service instead

Plus le fichier et le n° de ligne concerné.

Appliquez la correction proposée.

The '...' 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.

Problème récurrent d’affichage de Pleade dans Drupal

Une page blanche et erreur :

Error : Call to a member function bundle() on string dans bootstrap_barrio_theme_suggestions_page_alter()

Corrigez en commentant, dans le fichier .theme de barrio, la section suivante en entier :

/**
 * Implements hook_theme_suggestions_HOOK_alter() for page template.

function bootstrap_barrio_theme_suggestions_page_alter(array &$suggestions, array $variables) {
  // Add a template suggestions for node type.
  /** @var \Drupal\node\NodeInterface $node
  //if ($node = \Drupal::routeMatch()->getParameter('node')) {
  //  if (is_numeric($node)) {
  //    $node = Node::load($node);
  //  }

  //  $suggestions[] = 'page__node__' . $node->bundle();
//  }
//}

Upgrade Status ne renvoie plus de problème

La migration est possible. Drupal est à jour 8.9.20 est prêt à migrer vers D9.

Dump de la base de données et archive de cette version

Migration vers D9

  1. Sauvegardez composer.json et web/.htaccess
  2. Changement des droits d’écritures sur les fichiers setting
  3. Mise à jour du core vers D9
    composer require 'drupal/core-recommended:^9' 'drupal/core-composer-scaffold:^9' 'drupal/core-project-message:^9' --update-with-dependencies --no-update
    
  4. Dans composer.json, modifier la version du drupal/core :
    "drupal/core": "^8.7.0"
    
    , remplacé par
    "drupal/core": "^9"
    
  5. Lancez
    composer update —dry-run
    
  6. Si ok, lancer  :
    composer update
    
  7. Mettez à jour la base de données :
    drush updatedb
    
Notice :
Il faut passer à PHP 8, mais on lance l’update : Une erreur avec les plugins Ckeditor non installés..

Montée en version vers 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ésentes 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

Update de Drupal

Lancer le update.php dans Drupal pour terminer la migration.

Check des erreurs

Allez dans « tableau de bord administration »

Protection des fichiers à remettre
chmod 755 web/sites/default
chmod 644 web/sites/default/*settings.php
chmod 644 web/sites/default/*services.yml
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',
  ],

Mise à jour modules restant

composer require 'drupal/views_bulk_operations:^4.2'
Reste à faire après la migration en prod

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

Mise à jour 8 vers 9.5.4 terminée

Sauvegarde et dump avant migration.