Bonjour à tous,
Utilisant DRUPAL pour un de mes projets (CRX-RADIO-CLOUD), j’ai été déjà amené à faire des mises à jour. Pour ce faire j’ai toujours utilisé COMPOSER, un outil que j’aime bien, cependant je dois dire que là j’en ai « bavé » à chercher des solutions à différentes erreurs/bugs et versions de librairies, je partage ici mes notes de cette mise à jour « massive ».
A savoir que DRUPAL utilise différentes version de PHP suivant la version ici 8, 9 puis 10, J’ai donc du suivre aussi la mise à jour de PHP (7.4,8.0,8.1). Heureusement j’avais à disposition toutes les versions et modules APACHE donc pas de soucis ici pour le prérequis PHP du serveur utilisé pour faire la mise à jour :
Voici mon « upgrade path » ici :
8.9.17 à 9.0
9.0 à 9.1.0
9.1.0 à 9.2.21
9.2.1 à 9.2.4
9.2.4 à 9.4.15
9.4.15 à 9.5.0
9.5.0 à 10.2.3
10.2.3 à 10.2.4
=> A savoir que mettre à jour DRUPAL via COMPOSER prend énormément de mémoire, je dois donc ajouter une SWAP sur mon serveur pour absorber la charge mémoire : ( >=4G )
Tableau des commandes COMPOSER ‘utiles’ ici :
Mise à jour DRUPAL 8.9.17 à 9.0 :
Pour commencer, je suis donc parti d’un PHP7.3 que j’ai du passé en 7.4 (partie CLI), puis une bascule du module PHP/APACHE.
Après un DUMP complet de la base et un SNAPSHOT des données, je peux démarrer cette mise à jour :
Lancement de la mise à jour :
A la suite d’une erreur PHP ‘fatal error: require(): failed opening required vendor/composer/../symfony/polyfill-intl-normalizer/bootstrap.php’
=> je renomme le dossier vendor en vendor_, pour forcer sa mise à jour complète en réinstallant toutes les librairies :
Je peux alors lancer la mise à jour, l’option ‘no-update‘ permet de préparer le fichier composer.json,
avec l’ajout des versions de libs qui va être utilisé par le gestionnaire de paquets COMPOSER :
Une fois exécuté, je passe au lancement du script en HTTPS : /update.php qui permet le passage des mises à jour sur la base de données.
Ce script est très important car il remonte aussi les soucis de d’extensions ou thèmes non compatibles, c’est aussi pour ca que je préfère ne pas utiliser DRUSH qui lui gère cela automatiquement.
Mise à jour DRUPAL de 9.0 à 9.1.0 :
Je viens modifier la version de 9.0 à 9.1.0 dans le composer.json :
+ rm -f composer.lock
Ensuite je passe le COMPOSER de la version 1 à 2 puis le PHP CLI de la version 7.4 à 8.0 + du module APACHE :
Mise à jour DRUPAL de 9.1.0 à 9.2.21 :
Rien de particulier si ce n’est que j’installe en + drupal/upgrade_status qui va me permettre de récupérer un status de la mise à jour sous forme de rapport :
Je lance ensuite cette commande très pratique qui va m’afficher ce qui reste à mettre à jour :
Mise à jour DRUPAL de 9.2.1 à 9.2.4 :
Mise à jour DRUPAL de 9.2.4 à 9.5.0 (en passant par la 9.4.15) :
=> Au final je dois rollback en 9.2.4, je décide alors de passer par la 9.4.15 (intermédiaire ici avance la 9.5) :
Mise à jour DRUPAL 9.4.15 à 9.5.0 :
Mise à jour DRUPAL 9.5.0 à 10.2.3 puis 10.2.4 :
Surement l’étape la plus difficile ici car le changement de version majeure implique l’obsolescence de pas mal de lib/thèmes côté DRUPAL :
Notes :
=> (à moi même) C’est mal de lancer COMPOSER en root ( ajout d’un shell temporaire sur le www-data c’est mieux ) 🙂
=> j’ai du désinstaller des thèmes/modules qui n’étaient plus valables en v10, pour le reste, j’ai du ajouter ce tag (sur les fichiers info.yml) :
‘ core_version_requirement: ^8 || ^9 ‘
=> j’ai aussi du réinstaller certaines >LIB en V10 pour ensuite les désactivées depuis l’interface d’administration : ( messages remontés via update.php ) :
Bon courage à vous pour vos mises à jour DRUPAL !
Voir aussi : https://bastien.barbe.pw/mise-a-jour-drupal-8-5-5-vers-8-5-6/