Il y a 389 articles et 19 utilisateurs inscrits (ce bandeau est défini dans MediaWiki:Sitenotice)
Migration Salamandre vers Drupal 9
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_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
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
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
- 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
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.