# Upgrade v10 -> v11 Mise à jour de l'instance typo3 de la 10.4.36 vers la 11.5.29 LTS Pour cette mise à jour, on reste en PHP 7.4.1 ## Analyse ### Mise à niveau des extensions Opentalent L'analyse des fichiers des extensions signale deux extensions "maison" comme incompatibles : ot_admin et ot_connect. Au total, ce sont trois méthodes qui sont concernées par les dépréciations. Un ticket est créé pour la mise à niveau : [V8-4761](https://assistance.opentalent.fr/browse/V8-4761) ### Mise à niveau des extensions tiers | Extension | Version actuelle | Dernière version | Compatibilité Typo3 11 | Compat. PHP | |---------------------------------|------------------|------------------|------------------------|-------------| | fluidtypo3/flux | 9.7.2 | 9.7.4 | ^11 | ^7.4.0 - ^8 | | fluidtypo3/vhs | 6.1.2 | 6.1.3 | ^11 | ^7.4.0 - ^8 | | georgringer/news | 9.0 | 11.1.2 | ^11.5.24 | 7.4 -> 8.3 | | helhum/typo3-console | 6.6 | 7.1.6 | ^11.5.26 | >=7.4.1 | | causal/image_autoresize | 2.1 | 2.2.0 | ^11 | ^7.4 - ^8 | | friendsoftypo3/frontend-editing | 2.0 | 3.1.1 | ^11.5 | ? | | sgalinski/lfeditor | 6.0 | 7.1.11 | ^11.5 | ? | | waldhacker/hcaptcha | 2.0 | 2.1.1 | ^11.5 | ^7.2 - ^8 | | guzzle/guzzle | 6.x | 7.7 | | ^7.2 - ^8 | | nimut/testing-framework | 5.2 | 6.0.1 | ^11.5.3 | ^7.2 - ^8.0 | A priori pas de blocage, la mise à jour des extensions sera à faire en même temps que celle de typo3 ### Réaliser l'upgrade 1. Faire un snapshot du serveur 2. Maj tous les packages Typo3 de la version ^10.4 à la version ^11.5 dans le composer.json 3. Maj les dépendances à leur dernière version compatible SAUF news, qui reste à la v9 (voir paragraphe précédent) 4. Aller à la page /setup de typo3, et faire passer les différentes opérations de mise à jour 5. Tester ### Notes upgrade en local * (réglé, voir: https://github.com/FluidTYPO3/vhs/issues/1869) J'ai dû modifier le type du param ... de la classe FluidTYPO3\Vhs\ViewHelpers\Resource\CollectionViewHelper qui générait une erreur (mettre Repository comme type à la place de RecordCollectionRepository débloque la situation...) * Il a fallu maj le fichier cli, le nouvel emplacement de la console est `/var/www/typo3/vendor/bin/typo3` * il faut mettre à jour le .htaccess (prendre celui ici: public/typo3/sysext/install/Resources/Private/FolderStructureTemplateFiles/root-htaccess ) et le copier dans public/, puis rajouter les lignes custom en début de fichier) * j'ai un bug avec `gzuncompress` au chargement du backend, on peut le corriger avec un `sh cli cache:flush` * comme suggéré dans la doc typo3, j'ai lancé un `sh cli referenceindex:update` ### Notes upgrade sur test * déploiement sur test5 cd /var/opentalent/git/ot_typo3 git fetch origin feature/v8-4762-upgrade_v11 git checkout feature/v8-4762-upgrade_v11 cd /var/www/typo3 * je copie colle le contenu du composer.json dans celui de test5 php7.4 composer.phar update * je met à jour le fichier `cli` avec le bon chemin d'accès : `/var/www/typo3/vendor/bin/typo3` mv public/.htaccess public/.htaccess.old cp public/typo3/sysext/install/Resources/Private/FolderStructureTemplateFiles/root-htaccess public/.htaccess * je rajoute les premières lignes custom du .htaccess touch public/typo3conf/ENABLE_INSTALL_TOOL * je me rends à l'adresse `https://sub.test5.opentalent.fr/typo3/install.php` * je lance la maj de la structure de la DB * je lance l'upgrade wizard, et j'exécute toutes les tâches * je reset les préférences du backend user * je maj les packs de langues * je flush le cache * j'ajoute la ligne suivante au fichier `nano /etc/php/7.4/cli/conf.d/20-apcu.ini` : `apc.enable_cli=on` sh cli cache:flush sh cli referenceindex:update * je retire le plugin frontend-editing qui ne fonctionne pas : php7.4 composer.phar remove friendsoftypo3/frontend-editing Up: Je renomme le fichier composer.json et je créé un symlink vers le nouveau composer.json versionné dans le repo ot_typo3 : mv composer.json composer.json.orig ln -s /var/opentalent/git/ot_typo3/composer.json ./composer.json php7.4 composer.phar install ## Mise en oeuvre Je me connecte en SSH à prod-front ssh exploitation@prod-front ### Mise en maintenance Je met à jour le message de maintenance : cd /var/www/typo3 nano public/maintenance.html J'active le mode maintenance : nano public/.htaccess Je décommente les lignes : #RewriteCond %{REMOTE_ADDR} !^10\.8\.0\. #RewriteCond %{REQUEST_URI} !/maintenance.html$ [NC] #RewriteRule .* /maintenance.html [R=302,L] Je vérifie depuis un appareil hors VPN que la maintenance est bien active. ### Snapshot Tony réalise un snapshot de prod-front ### Dump de la DB Je lance un dump de la DB : cd ~ ./dump_typo3.sh ### Upgrade cd /var/opentalent/git/ot_typo3 git fetch origin release/0.7 git checkout release/0.7 cd /var/www/typo3 Je renomme le fichier composer.json et je créé un symlink vers le nouveau composer.json versionné dans le repo ot_typo3 : mv composer.json composer.json.orig ln -s /var/opentalent/git/ot_typo3/composer.json ./composer.json rm composer.lock rm -r vendor/* php7.4 composer.phar install Je met à jour le fichier `cli` avec le bon chemin d'accès : nano cli On remplace `/var/www/typo3/vendor/bin/typo3cms` par `/var/www/typo3/vendor/bin/typo3` On va devoir remplacer le fichier .htaccess, sans désactiver le mode maintenance : cp public/typo3/sysext/install/Resources/Private/FolderStructureTemplateFiles/root-htaccess public/.htaccess.new nano public/.htaccess.new Ajouter les lignes suivantes : # <--- Opentalent rules #SetEnvIf Remote_Addr ^10\.8\.0\.[0-255] TYPO3_CONTEXT=Development # Enable / Disable the opentalent ot_optimizer middlewares SetEnv TYPO3_OPTIMIZE 1 RewriteCond %{REMOTE_ADDR} !^10\.8\.0\. RewriteCond %{REQUEST_URI} !/maintenance.html$ [NC] RewriteRule .* /maintenance.html [R=302,L] # Opentalent rules ---> Puis remplacer le .htaccess existant : mv public/.htaccess public/.htaccess.old mv public/.htaccess.new public/.htaccess Vérifier que le mode maintenance est toujours activé à l'extérieur J'active le mode install de typo3 : touch public/typo3conf/ENABLE_INSTALL_TOOL Je me rends à l'adresse `https://ohcluses.opentalent.fr/typo3/install.php` Je lance la maj de la structure de la DB Je lance l'upgrade wizard, et j'exécute toutes les tâches Je reset les préférences du backend user Je maj les packs de langues Je flush le cache J'ouvre en édition le fichier suivant : sudo nano /etc/php/7.4/cli/conf.d/20-apcu.ini Et j'ajoute la ligne : apc.enable_cli=on Puis je lance les dernières commandes : sh cli cache:flush sh cli referenceindex:update Je vérifie l'installation ### Désactivation du mode maintenance J'édite le fichier .htaccess cd /var/www/typo3 nano public/.htaccess Je commente les lignes : RewriteCond %{REMOTE_ADDR} !^10\.8\.0\. RewriteCond %{REQUEST_URI} !/maintenance.html$ [NC] RewriteRule .* /maintenance.html [R=302,L] ### Nettoyage après upgrade Si tout fonctionne bien, je retire les fichiers devenus inutiles : rm composer.json.orig rm public/.htaccess.old Supprimer les champs et tables en zzz_ depuis le BE typo3 ### Release Finaliser la release dans GitKraken Switcher sur master sur prod-front : cd /var/opentalent/git/ot_typo3 git checkout master git pull