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

[modifier | modifier le wikicode]

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

[modifier | modifier le wikicode]

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

[modifier | modifier le wikicode]
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

[modifier | modifier le wikicode]
./vendor/bin/drush cr

Mise à jour des modules à migrer

[modifier | modifier le wikicode]

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

[modifier | modifier le wikicode]
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

[modifier | modifier le wikicode]

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

[modifier | modifier le wikicode]

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

[modifier | modifier le wikicode]

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.

[modifier | modifier le wikicode]

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

[modifier | modifier le wikicode]

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

[modifier | modifier le wikicode]

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

[modifier | modifier le wikicode]

Migration vers D9

[modifier | modifier le wikicode]
  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

[modifier | modifier le wikicode]

Installation de la dernière version 8.1

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
a2enmod proxy_fcgi setenvif (si nécessaire) 
sudo a2enconf php8.1-fpm
sudo update-alternatives --config php

Désactivation des anciennes versions

[modifier | modifier le wikicode]

(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

[modifier | modifier le wikicode]
sudo a2enmod php8.1
sudo systemctl restart php8.1-fpm.service

Redémarrage service apache

[modifier | modifier le wikicode]
sudo systemctl restart apache2.service
php -v

Si problème, chercher l'erreur dans

tail -f /var/log/apache2/cdf.errors.log

Update de Drupal

[modifier | modifier le wikicode]

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

Check des erreurs

[modifier | modifier le wikicode]

Allez dans « tableau de bord administration »

Protection des fichiers à remettre
[modifier | modifier le wikicode]
chmod 755 web/sites/default
chmod 644 web/sites/default/*settings.php
chmod 644 web/sites/default/*services.yml
Database Isolation Level
[modifier | modifier le wikicode]

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

[modifier | modifier le wikicode]
composer require 'drupal/views_bulk_operations:^4.2'
Reste à faire après la migration en prod
[modifier | modifier le wikicode]

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

[modifier | modifier le wikicode]

Sauvegarde et dump avant migration.