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

Migration CND vers Drupal 10

De AJLSM
Aller à la navigation Aller à la recherche

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,
Important :
À faire avec l'utilisateur ajlsm.

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)

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/
  1. 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
  1. drupal_internet
  2. 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
Important :
Désactiver et supprimer les thèmes : seven et batik et les modules : color, quick édit et RDF, dépréciés AVANT de passer à D10 ! .

Activation du module CKeditor5

[modifier | modifier le wikicode]
Important :
Avant le passage à D10 : Le module CKeditor4 est déprécié et doit être remplacer par le module CKeditor5 qui vient avec le core de D10..

Dans Drupal :

  1. Activer le module CKeditor5 : /admin/modules
  2. Dans Formats de texte et éditeurs, remplacer l'éditeur de texte CKeditor4 par CKeditor5 pour chaque format qui l'utilise : /admin/config/content/formats
  3. 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

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

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

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",

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'
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.