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

« Migration Salamandre vers Drupal 9 » : différence entre les versions

De AJLSM
Aller à la navigation Aller à la recherche
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_... »
 
 
(4 versions intermédiaires par le même utilisateur non affichées)
Ligne 6 : Ligne 6 :
# Commencer par faire une mise à jour vers la version D8 la plus haute : 8.9.20
# Commencer par faire une mise à jour vers la version D8 la plus haute : 8.9.20
# Lancer <syntaxhighlight lang="bash">composer update --dry-run</syntaxhighlight> pour voir si la mise à jour est possible. Corriger les erreurs si nécessaire.
# Lancer <syntaxhighlight lang="bash">composer update --dry-run</syntaxhighlight> pour voir si la mise à jour est possible. Corriger les erreurs si nécessaire.
{{important|Vérifier si la montée en version peut-être faite en une seule fois : http://mw.ajlsm.com/wiki/Synchronisation_Drupal_:_site_dev_avec_site_prod#Cas_de_la_mont.C3.A9e_en_version_de_d8_.3C_8.9.20_vers_D9.5.x}}
== Installation de Upgrade Status et réalisation des tâches suivantes ==
== Installation de Upgrade Status et réalisation des tâches suivantes ==
Voir :  
Voir :  
Ligne 12 : Ligne 14 :
=== Suppression des modules problématiques non utilisés ===
=== Suppression des modules problématiques non utilisés ===
<syntaxhighlight lang="bash">composer remove drupal/bbr drupal/field_group drupal/sitemap drupal/views_accordion drupal/views_taxonomy_term_name_depth drupal/views_simple_math_field</syntaxhighlight>
<syntaxhighlight lang="bash">composer remove drupal/bbr drupal/field_group drupal/sitemap drupal/views_accordion drupal/views_taxonomy_term_name_depth drupal/views_simple_math_field</syntaxhighlight>
=== Vider tâches Drupal ===  
=== Vider caches Drupal ===  
<syntaxhighlight lang="bash">./vendor/bin/drush cr</syntaxhighlight>
<syntaxhighlight lang="bash">./vendor/bin/drush cr</syntaxhighlight>
=== Mise à jour des modules à migrer ===
=== Mise à jour des modules à migrer ===
Ces modules nécessitent une mise à jour, avant de pouvoir être migrés.
Ces modules nécessitent une mise à jour, avant de pouvoir être migrés.
Ligne 31 : Ligne 34 :
=== Suppression des modules non installés qui peuvent être migrés ===
=== 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
<syntaxhighlight lang="bash">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</syntaxhighlight>


E - Analyse des problèmes trouvés dans chaque modules : sélection du ou des modules puis, en bas dopage : Scanner
=== 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.
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
Le plus fréquent : Ajout de <syntaxhighlight lang="bash">core_version_requirement: ^8 || ^9.4 || 10</syntaxhighlight> dans les fichiers des modules …info.yml


Après la mise en compatibilité des modules, reste un certain nombre de problèmes de type :
Après la mise en compatibilité des modules, reste un certain nombre de problèmes de type :
 
==== Drupal\Tests\...::$defaultTheme is required ====
1 - Drupal\Tests\...::$defaultTheme is required
 
Cela concerne les méthodes de test utilisant un thème qui est maintenant déprécié.
Cela concerne les méthodes de test utilisant un thème qui est maintenant déprécié.


Cela se corrige avec le patch suivant :
Corrigez avec le patch suivant :
 
   <syntaxhighlight lang="bash">public static $modules = ['path', 'token', 'token_module_test'];
   public static $modules = ['path', 'token', 'token_module_test'];
   
   
+  /**
+  /**
Ligne 56 : Ligne 57 :
+  protected $defaultTheme = 'stark';
+  protected $defaultTheme = 'stark';
+
+
+
+</syntaxhighlight>
2 - The "entity.manager" service is deprecated. You should use the 'entity_type.manager' service instead. + le fichier et le n° de ligne concerné
==== The "entity.manager" service is deprecated. You should use the 'entity_type.manager' service instead ====
Plus le fichier et le n° de ligne concerné.


Il faut appliquer la correction.
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. ====


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.  


Il manque une library. On va faire la mise à jour avec ça car cela n’empêche pas la migration.
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()
==== Problème récurrent d’affichage de Pleade dans Drupal ====
Se corrige en commentantdans le fichier .theme de barrio, la section suivante en entier :
Une page blanche et erreur : <syntaxhighlight lang="bash">Error : Call to a member function bundle() on string dans bootstrap_barrio_theme_suggestions_page_alter()</syntaxhighlight>
/**
Corrigez en commentant, dans le fichier .theme de barrio, la section suivante en entier :
<syntaxhighlight lang="bash">/**
  * Implements hook_theme_suggestions_HOOK_alter() for page template.
  * 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.
function bootstrap_barrio_theme_suggestions_page_alter(array &$suggestions, array $variables) {
 
  // Add a template suggestions for node type.
H - Dump de la base de données et archive de cette version.
  /** @var \Drupal\node\NodeInterface $node
 
  //if ($node = \Drupal::routeMatch()->getParameter('node')) {
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
  //  if (is_numeric($node)) {
 
  //   $node = Node::load($node);
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. <br /> To install the CKEditor plugins run <strong><code>drupal ckeditor_media_embed:install</code></strong> 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
  //  $suggestions[] = 'page__node__' . $node->bundle();
//  }
//}</syntaxhighlight>
==== 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 ==
* http://mw.ajlsm.com/wiki/Migration_Pandor_vers_Drupal_9
* https://www.drupal.org/docs/upgrading-drupal/drupal-8-and-higher


Installation :
# Sauvegardez composer.json et web/.htaccess
sudo apt install software-properties-common
# Changement des droits d’écritures sur les fichiers setting
# Mise à jour du core vers D9 <syntaxhighlight lang="bash">composer require 'drupal/core-recommended:^9' 'drupal/core-composer-scaffold:^9' 'drupal/core-project-message:^9' --update-with-dependencies --no-update</syntaxhighlight>
# Dans {{path|composer.json}}, modifier la version du drupal/core : <syntaxhighlight lang="bash">"drupal/core": "^8.7.0"</syntaxhighlight>, remplacé par <syntaxhighlight lang="bash">"drupal/core": "^9"
</syntaxhighlight>
# Lancez <syntaxhighlight lang="bash">composer update —dry-run</syntaxhighlight>
# Si ok, lancer  : <syntaxhighlight lang="bash">composer update</syntaxhighlight>
# Mettez à jour la base de données : <syntaxhighlight lang="bash">drush updatedb</syntaxhighlight>
{{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 ====
<syntaxhighlight lang="bash">sudo apt install software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt update
sudo apt install php8.1
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
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</syntaxhighlight>
 
==== Configuration ====
Configuration :
<syntaxhighlight lang="bash">a2enmod proxy_fcgi setenvif (si nécessaire)  
 
a2enmod proxy_fcgi setenvif (si nécessaire)  
sudo a2enconf php8.1-fpm
sudo a2enconf php8.1-fpm
sudo update-alternatives --config php
sudo update-alternatives --config php</syntaxhighlight>
 
==== Désactivation des anciennes versions ====
Désactivation des anciennes versions (si présente après vérification avec : dpkg -l | grep php)
(si présentes après vérification avec : <syntaxhighlight lang="bash">dpkg -l | grep php</syntaxhighlight>)
sudo a2dismod php7.2
<syntaxhighlight lang="bash">sudo a2dismod php7.2
sudo a2dismod php7.3
sudo a2dismod php7.3
sudo a2dismod php7.4
sudo a2dismod php7.4
sudo a2dismod php8.0
sudo a2dismod php8.0</syntaxhighlight>
 
==== Activation de la version php ====
Activation de la version php
<syntaxhighlight lang="bash">sudo a2enmod php8.1
sudo a2enmod php8.1
sudo systemctl restart php8.1-fpm.service</syntaxhighlight>
sudo systemctl restart php8.1-fpm.service
==== Redémarrage service apache ====
 
<syntaxhighlight lang="bash">sudo systemctl restart apache2.service</syntaxhighlight>
Redémarrage service apache :
==== Vérification ====
sudo systemctl restart apache2.service
<syntaxhighlight lang="bash">php -v</syntaxhighlight>
 
Vérification :
php -v


Si problème, chercher l'erreur dans  
Si problème, chercher l'erreur dans  
tail -f /var/log/apache2/cdf.errors.log
<syntaxhighlight lang="bash">tail -f /var/log/apache2/cdf.errors.log</syntaxhighlight>
 
==== Update de Drupal ====
I - 8 : Lancer le update.php dans Drupal pour terminer la migration.
Lancer le {{path|update.php}} dans Drupal pour terminer la migration.
 
==== Check des erreurs ====
I - 9 : Check des erreurs dans « tableau de bord administration »  
Allez dans « tableau de bord administration »  
 
===== Protection des fichiers à remettre =====
I - 9 - a : Protection des fichiers à remettre :
<syntaxhighlight lang="bash">chmod 755 web/sites/default
 
chmod 755 web/sites/default
chmod 644 web/sites/default/*settings.php
chmod 644 web/sites/default/*settings.php
chmod 644 web/sites/default/*services.yml
chmod 644 web/sites/default/*services.yml</syntaxhighlight>
 
===== Database Isolation Level =====
I - 9 - b : Database Isolation Level
Dans {{path|setting.php}}, ajouter les lignes suivantes à la fin de :  
 
Dans setting.php, ajouter les lignes suivantes à la fin de :  
<syntaxhighlight lang="bash">$databases['default']['default'] = array (
<syntaxhighlight lang="bash">$databases['default']['default'] = array (
[…]
[…]
Ligne 147 : Ligne 143 :
     'isolation_level' => 'SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED',
     'isolation_level' => 'SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED',
   ],</syntaxhighlight>
   ],</syntaxhighlight>
I - 9 - c : Une fois la migration vers le serveur de production terminée, il restera à corriger le PATH vers le répertoire {{path|//private}} (private-drupal)
=== Mise à jour modules restant ===
 
J - Mise à jour 8 vers 9.5.4 terminée : sauvegarde et dump avant migration.
 
<syntaxhighlight lang="bash">composer require 'drupal/views_bulk_operations:^4.2'</syntaxhighlight>
<syntaxhighlight lang="bash">composer require 'drupal/views_bulk_operations:^4.2'</syntaxhighlight>
===== 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 {{path|//private}} (private-drupal)
=== Mise à jour 8 vers 9.5.4 terminée ===
Sauvegarde et dump avant migration.

Dernière version du 9 mars 2023 à 13:48

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.