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
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 | === 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> | ||
=== 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 | 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 ==== | |||
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é. | ||
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> | ||
==== 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 : <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. | ||
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(); | |||
// } | |||
//}</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 | (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 ==== | |||
Lancer le {{path|update.php}} dans Drupal pour terminer la migration. | |||
==== Check des erreurs ==== | |||
Allez dans « tableau de bord administration » | |||
===== 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 ===== | |||
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> | ||
=== Mise à jour modules restant === | |||
<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 :
- http://mw.ajlsm.com/wiki/Basculer_Drupal_8_vers_Drupal_9
- http://mw.ajlsm.com/wiki/Migration_Pandor_vers_Drupal_9
- http://mw.ajlsm.com/wiki/Migration_CND_vers_Drupal_9
- Commencer par faire une mise à jour vers la version D8 la plus haute : 8.9.20
- Lancer pour voir si la mise à jour est possible. Corriger les erreurs si nécessaire.
composer update --dry-run
Installation de Upgrade Status et réalisation des tâches suivantes
[modifier | modifier le wikicode]Voir :
- http://mw.ajlsm.com/wiki/Migration_Pandor_vers_Drupal_9#Installation_de_upgrade_status
- 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]- http://mw.ajlsm.com/wiki/Migration_Pandor_vers_Drupal_9
- https://www.drupal.org/docs/upgrading-drupal/drupal-8-and-higher
- Sauvegardez composer.json et web/.htaccess
- Changement des droits d’écritures sur les fichiers setting
- 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
- Dans composer.json, modifier la version du drupal/core : , remplacé par
"drupal/core": "^8.7.0"
"drupal/core": "^9"
- Lancez
composer update —dry-run
- Si ok, lancer :
composer update - Mettez à jour la base de données :
drush updatedb
Montée en version vers PHP 8.1
[modifier | modifier le wikicode]Installation de la dernière version 8.1
Installation
[modifier | modifier le wikicode]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
[modifier | modifier le wikicode]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
Vérification
[modifier | modifier le wikicode]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.