Il y a 389 articles et 19 utilisateurs inscrits (ce bandeau est défini dans MediaWiki:Sitenotice)
Migration CND vers Drupal 10
Préparation de la migration vers D10
[modifier | modifier le wikicode]Cette migration ne peut pas être faites en une seule passe. Différentes raisons pour cela :
- Montées en version progressives de drush et de PHP, selon les versions de Drupal,
- Modules qui ne peuvent pas être mis à jour sans modification de leur 'core_version_requirement' (D9 -> D10),
De plus, avant de faire une mise à jour majeure, Drupal doit être mis à jour vers la dernière version mineure disponible.
Il y a 4 phases de mise à jour :
- D9.1.rc -> D9.5.1 : Dernière version mineure,
- D9.5.11 -> D10.0.0 : Préparation des modules et MAJ,
- D10.0.0 -> D10.2.0 : Montée en version de drush et PHP, et MAJ,
- D10.2.0 -> D10.3.2 : Montée en version de drush et MAJ,
PHP
[modifier | modifier le wikicode]Drupal 9.5.x, et les versions suivantes, nécessitent PHP 8.1 et PHP 8.3 à partir de la version D10.1.x
Voir : http://mw.ajlsm.com/wiki/Mont%C3%A9e_en_version_de_PHP
- Drupal 9.1.rc1 ne fonctionne qu'avec PHP 7.x
- La bascule vers PHP 8.1 doit être faites après la mise à jour vers D9.5.11, car, avant la mise à jour, certains modules ne sont pas compatibles.
Une commande permet de vérifier quels modules utilisent quelle version de PHP. À vérifier avant de mettre à jour vers PHP 8.1.0, par exemple :
composer why-not php 8.1.0
dompdf/dompdf v0.8.6 requires php (^7.1)
drupal/rename_admin_paths 2.0.0 requires php (^7.1)
drupal/viewsreference 1.6.0 requires php (^5.5|^7.0)
laminas/laminas-diactoros 2.5.0 requires php (^7.3 || ~8.0.0)
laminas/laminas-escaper 2.7.0 requires php (^7.3 || ~8.0.0)
laminas/laminas-feed 2.13.0 requires php (^7.3 || ~8.0.0)
league/container 2.4.1 requires php (^5.4.0 || ^7.0)
phpspec/prophecy 1.12.1 requires php (^7.2 || ~8.0, <8.1)
Sauvegardes
[modifier | modifier le wikicode]Avant chaque étape de mise à jour et de montée en version, faire une sauvegarde de Drupal et des bases de données.
CND a deux Drupal installés avec 1 ou 2 ou deux bases de données :
- preprod : /cnd_data/cnd/drupals/preprod/cnd/
- drupal_preprod
- prod : cd /cnd_data/cnd/drupals/prod/cnd/web/sites/inventaire.cnd.fr et cd /cnd_data/cnd/drupals/prod/cnd/web/sites/inventaire-intranet.cnd.fr
- drupal_internet
- drupal_slecture
Avec l'utilisateur SUDOER abdel, sauvegardes des Drupals :
sudo tar czvf backups/d10-0-0/preprod-d10-0-0.tar.gz preprod
sudo tar czvf backups/d10-0-0/prod-d10-0-0.tar.gz prod
Avec l'utilisateur root, sauvegardes des bases de données. Le MP pour le dump est celui d'ajlsm
mysqldump -u ajlsm -p drupal_preprod > backups/d10-0-0/dump-preprod-20240919.sql
mysqldump -u ajlsm -p drupal_slecture > ../backups/d10-0-0/dump-slecture-20240919.sql
mysqldump -u ajlsm -p drupal_internet > ../backups/d10-0-0/dump-internet-20240919.sql
Mise à jour D 9.1.rc vers 9.5.11
[modifier | modifier le wikicode]Avec php7.3
Modifier composer.json
[modifier | modifier le wikicode]Modifier preprod/cnd/composer.json et prod/cnd/composer.json en remplaçant :
"drupal/core": "9.0.1-rc1 as 8.9.10",
"drupal/core-composer-scaffold": "~8.8.1.0",
par :
"drupal/core": "9.5.11 as 8.9.10",
"drupal/core-composer-scaffold": "~9.2.0",
Puis mettre à jour dans les 3 environnements et vider les caches :
/cnd_data/cnd/drupals/preprod/cnd$ composer update -W
./vendor/bin/drush cr // Vider les caches
./vendor/bin/drush ws // Vérifier les logs Drupal
/cnd_data/cnd/drupals/prod/cnd$ composer update -W
/cnd_data/cnd/drupals/prod/cnd/web/sites/inventaire.cnd.fr$ ./../../../vendor/bin/drush cr
/cnd_data/cnd/drupals/prod/cnd/web/sites/inventaire-intranet.cnd.fr$ ./../../../vendor/bin/drush cr
Appliquer les MAJ dans Drupal
[modifier | modifier le wikicode]Dans chaque Drupal :
- Vider les caches
- .../update.php
Montée en version PHP
[modifier | modifier le wikicode]Avec l'utilisateur abdel
su abdel
sudo update-alternatives --config php
Sélection Chemin Priorité État
------------------------------------------------------------
* 0 /usr/bin/php8.1 81 mode automatique
1 /usr/bin/php7.3 73 mode manuel
2 /usr/bin/php7.4 74 mode manuel
3 /usr/bin/php8.1 81 mode manuel
sudo a2dismod php7.3
sudo a2dismod php7.4
sudo a2enmod php8.1
sudo a2enconf php8.1-fpm
sudo systemctl restart php8.1-fpm.service
sudo systemctl restart apache2.service
exit
Migration de D9.5.11 vers D10.0.0
[modifier | modifier le wikicode]La version de composer doit être mise à jour de composer 1 vers composer 2.
Mise à jour de composer
[modifier | modifier le wikicode]composer install
Vérification :
composer diagnose
Checking composer.json: Ok
Checking platform settings: OK
Checking git settings: OK git version 2.25.1
Checking http connectivity to packagist: OK
Checking https connectivity to packagist: OK
Checking github.com rate limit: OK
Checking disk free space: OK
Checking pubkeys: 'FAIL
Missing pubkey for tags verification
Missing pubkey for dev verification
Run composer self-update --update-keys to set them up'
Checking Composer version: OK
Checking Composer and its dependencies for vulnerabilities: OK
Composer version: 2.7.9
PHP version: 8.3.11
PHP binary path: /usr/bin/php8.3
OpenSSL version: OpenSSL 1.1.1f 31 Mar 2020
curl version: 7.68.0 libz 1.2.11 ssl OpenSSL/1.1.1f
zip: extension present, unzip present, 7-Zip present (7z)
Pour ajout des clés, lancer la commande suivante et renseigner les clés en allant à l'URL indiquée : https://composer.github.io/pubkeys.html et en copiant - collant les clés DEv / Snapshot, puis la clé Public à l'invite du prompt :
composer self-update --update-keys
Open https://composer.github.io/pubkeys.html to find the latest keys
Enter Dev / Snapshot Public Key (including lines with -----): -----BEGIN PUBLIC KEY-----
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAnBDHjZS6e0ZMoK3xTD7f
[...]
wSEuAuRm+pRqi8BRnQ/GKUcCAwEAAQ==
-----END PUBLIC KEY-----
Stored key with fingerprint: 4AC45767 E5EC2265 2F0C1167 CBBB8A2B 0C708369 153E328C AD90147D AFE50952
Enter Tags Public Key (including lines with -----): -----BEGIN PUBLIC KEY-----
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0Vi/2K6apCVj76nCnCl2
[...]
RGv89BPD+2DLnJysngsvVaUCAwEAAQ==
-----END PUBLIC KEY-----
Stored key with fingerprint: 57815BA2 7E54DC31 7ECC7CC5 573090D0 87719BA6 8F3BB723 4E5D42D0 84A14642
Public keys stored in /home/ajlsm/.composer
Mise à jour des modules et des thèmes
[modifier | modifier le wikicode]Au préalable, installer upgrade_status dans les 2 environnements et l'activer dans les Drupal :
composer require 'drupal/upgrade_status:^4.3’
Depuis l'administration, afficher Upgrade Status /admin/reports/upgrade-status.
Les points à traiter sont listés :
- Modules à supprimer,
- Correction à faire "à la main",
- Modules à mettre à jour,
- Modules prêts pour la MAJ
Activation du module CKeditor5
[modifier | modifier le wikicode]Dans Drupal :
- Activer le module CKeditor5 : /admin/modules
- Dans Formats de texte et éditeurs, remplacer l'éditeur de texte CKeditor4 par CKeditor5 pour chaque format qui l'utilise : /admin/config/content/formats
- Désinstaller le module CKeditor4 : /admin/modules
Modules à mettre à jour
[modifier | modifier le wikicode]Mise à jour des modules qui peuvent l’être en preprod, puis en prod (ne pas mettre à jour ceux qui nécessite la montée en version 10) pour la version 9.5.11
Exemple de commande require
composer require 'drupal/admin_toolbar:^3.5'
composer require 'drupal/back_to_top:^3.0'
[...]
composer require 'drupal/metatag:^2.0'
composer require 'drupal/viewsreference:^2.0@beta'
./vendor/bin/drush cr
Faire un .../update.php dans les Drupals.
Requirement à corriger
[modifier | modifier le wikicode]Recherche des versions supportées dans les modules :
grep -rnw '/cnd_data/cnd/drupals/preprod/cnd/web/modules/contrib/' -e 'core_version_requirement'
Renvoi la liste des requirements pour les modules à modifier dans les fichiers .info.yml. Ajout des requirements pour :
- modules:contrib:bbr
- module:custom:pleade
- theme:custom:pleade_cnd
core_version_requirement: ^9.4 || ^10 || ^11
Problèmes
[modifier | modifier le wikicode]composer update échoue en listant les problèmes rencontrés.
simple_sitemap
[modifier | modifier le wikicode]Le module simple_sitemap pose problème pour la montée en version D10.
Il n'est pas utilisé. Au pire, on peut le ré-installer une fois les MAJ terminée.
On le supprime.
Après désinstallation du module depuis Drupal
composer remove 'drupal/simple_sitemap
mailsystem
[modifier | modifier le wikicode]Modification du info.yml de mailsystem qui demande un requirement 10.1 alors que la MAJ est 10.0.0
core_version_requirement: ^9.4 || ^10 || ^11
MAJ drush
[modifier | modifier le wikicode]Après un composer update réussi, modifier le fichier composer.json pour monter drush en version de 10 à 11.
"drush/drush": "^11",
Mise à jour D10.0.0
[modifier | modifier le wikicode]Pour l'instant, certains modules demandent encore la rétro-compatibilité avec D9.5.11. On la conserve en renseignant la version exacte de la MAJ D10 et la version D9.
Modifier le fichier composer.json dans les 2 environnements preprod/cnd et prod/cnd :
"drupal/core": "10.0.0 as 9.5.11",
"drupal/core-composer-scaffold": "^10",
"drupal/core-recommended": "^10",
[...]
},
"require-dev": {
"drupal/core-dev": "^10"
},
Lancer composer update, vider les caches et, dans les Drupal, vider les caches et lancer un .../update.php
Problème de CSS
[modifier | modifier le wikicode]La mise à jour à activer de nouvelles classes dans color.css visibles pour certains blocs, couleur de lien, etc.
Corrigées dans la css.
Mise à jour de D10.0.0 vers D10.2.0
[modifier | modifier le wikicode]Le module upgrade_status n'est plus utile car on ne fait pas la MAJ vers D11.
On le désinstalle dans les Drupal et on le supprime.
composer remove 'drupal/drupal/upgrade_status'
Modification de composer.json
[modifier | modifier le wikicode]Les modules qui nécessité la rétro-compatibilité ne sont plus présents.
La version D10.2.0 nécessite drush 12 :
"drupal/core": "10.2.0",
[...]
"drush/drush": "^12",
Problèmes
[modifier | modifier le wikicode]Certains modules renvoient des erreurs de compatibilités lors d'une tentative d'update block_styles_bootstrap views_slideshow_cycle Ces modules ne sont pas utilisés.
Désactivation des modules dans Drupal puis :
composer remove 'drupal/block_styles_bootstrap'
composer remove 'drupal/views_slideshow_cycle'
Mise à jour de D10.2.0 vers la dernière version stable de Drupal 10
[modifier | modifier le wikicode]Mise à jour de drush
[modifier | modifier le wikicode]Nécessite la montée en version de drush :
"drush/drush": "^13",
Modification de composer.json
[modifier | modifier le wikicode] "drupal/core": "^10",
Mise à jour des modules
[modifier | modifier le wikicode]composer require 'drupal/rename_admin_paths:^3.0’
composer require 'drupal/ctools:^4.1'
Problème
[modifier | modifier le wikicode]composer update --dry-run
Loading composer repositories with package information
Updating dependencies
Your requirements could not be resolved to an installable set of packages.
Problem 1
- drupal/ctools_entity_mask[3.2.0, ..., 3.x-dev] require drupal/ctools ^3 -> found drupal/ctools[dev-3.x, 3.0.0-alpha17, ..., 3.x-dev (alias of dev-3.x)] but it conflicts with your root composer.json require (^4.1).
- Root composer.json requires drupal/ctools_entity_mask ^3.2 -> satisfiable by drupal/ctools_entity_mask[3.2.0, ..., 3.x-dev].
Use the option --with-all-dependencies (-W) to allow upgrades, downgrades and removals for packages currently locked to specific versions.
Suppression du module ctools_entity_mask directement dans le fichier composer.
Ré-installé une fois que la MAJ 10.3.5 a été terminée sans échec.