Op deze pagina ga ik mijn upgrade ervaring weergeven van Drupal 8 naar Drupal 9 voor deze site.
Ik maak gebruik van het theme Mayo. Hier is echter geen D9 versie van. Ik heb de huidige versie dusdanig aangepast dat deze onder D9 en ^8.8 werkt. Hierover heb ik iets geplaatst onder de issues van Mayo. Upgraden geeft echter problemen maar dat wordt verderop uitgelegd
Allereerst gaan we een backup maken van de site en de database.
Vervolgens gaan we deze site importeren op een lokale webserver. Hierbij enige aanpassing in de .htaccess (https uitzetten) en settings.php.
(hierin wordt de trusted_host_patterns voorzien van een #)
Vervolgens wordt de site lokaal opgestart. Het werkt!
Als eerste gaan we update_status installeren. DIT MOET MET COMPOSER vanwege afhankelijkheden.
Op cmd-niveau gaan we naar de docroot directory (de plaats waar composer.json staat van de website. Hier voer ik de volgende commando's uit
$ sudo composer install --dev
$ sudo composer require 'drupal/upgrade_status:^3.0'
Ik vergat nog even deze " chown -R www-data:www-data op de lokale site"
.
De upgrade_status module is nu geinstalleerd en dient via de lokale site te worden gestart. Zodra deze is gestart kan hij o[p de gebruikelijke wijze worden geupdate naar de nieuwste versie.
Via reports en upgrade_status zie je een overzicht van alle modules e.d. en of deze geschikt zijn voor D9.
Ik zit nu op 79%.
Sommige modules moet je handmatig updaten zoals bv honeypot en webform naar versie 6.0.0. Vergeet niet na elke handmatige vervanging van de code van een module update.php te draaien.
Scan nu in upgrade_status nogmaals de modules/themes die nog niet juist zijn en als deze op fix manually staan kijk dan bij de problems wat nog mis is en los de problemen op.
Scan nogmaals of de problemen juist zijn opgelost.
Bij mij staat het nu op 100 %.
Er kunnen nog wel problemen staan, maar er staat niets. Ik begreep dat deze genegeerd kunnen worden.
Bij eerdere pogingen is mij gebleken dat nog een aantal acties plaats moeten vinden.
1) bij theme MAYO gaat het niet goed ivm base theme: deze heb ik op false gezet in mayo.info.yml. Zorg ook dat andere zelfgemaakte themes voorzien zijn van base theme: false ook al zijn ze niet de default.
2) na de upgrade heeft update.php een sync-dir nodig die gedefinieerd moet worden in settings.php. DIT IS AFWIJKEND IN D9 nl. $settings['config_sync_directory'] = '/var/www/syncdir'; en maak deze syncdir aan, het beste buiten de docroot en maak www-data de owner hiervan.
3) uninstall de module upgrade en verwijder de module ook uit de /modules EN /modules/contrib. Doe dit NIET via composer, want dan worden afhankelijkheden verwijderd waar ik geen zicht nog op heb. Dit is niet van belang voor de testupgrade.
Nu de upgrade.
Allereerst moeten een aantal rechten worden gezet
sudo chmod 777 sites/default
sudo find sites/default -name "*settings.php" -exec chmod 777 {} \;
sudo find sites/default -name "*services.yml" -exec chmod 777 {} \;
en dan nu de update zelf (ik moest wel alles met sudo doen)
sudo composer require drupal/core-recommended:^9.0.0 drupal/core-composer-scaffold:^9.0.0 drupal/core-project-message:^9.0.0 --update-with-dependencies --no-update
en als laatste
sudo composer update
start nu update.php op (of doe dit via drush updatedb). Mocht je een error krijgen dan is de kans groot dat 1 van de zelfgemaakte themes niet de base theme: false bevat.
Dit verliep nu probleemloos
Nu nog even de rechten weer terugzetten
sudo chmod 755 sites/default
sudo find sites/default -name "*settings.php" -exec chmod 644 {} \;
sudo find sites/default -name "*services.yml" -exec chmod 644 {} \;
Tot zover de eerste proefupgrade.
2e proefupgrade
Op de productieomgeving heb ik alle updates en aanpassingen die volgens de proefupgrade nodig waren gedaan. Wederom een backup gemaakt en op de lokale server gezet en weer gaan testen. Hieruit bleek dat een module (scheduler) niet actief stond (ook niet in productie). Deze opgestart en geupdate naar een versie die wel compatible is. (Ook in productie)
Het hele proces vervolgens doorlopen. De upgrade verliep zonder problemen. Ik ga nogmaals het proces doorlopen, nu zonder het upgrade_status verhaal.
3e proefupgrade.
De upgrade verliep zonder problemen.
binnenkort gaat de productieomgeving. Hier kan ik het niet met composer doen maar via softaculous.
De update van productie.
Allereerst de backup maken van de site en database. Dan de rechten op de 3 bestanden in sites/default en default zelf open zetten. Nu met softaculous de update starten. Gaat zonder problemen. Vanuit softaculous update.php starten.
Het werkt, de productiesite draait onder Drupal 9.
Via Status report blijkt nog 1 aanpassing nodig te zijn om een $settings te verwijderen die niet meer nodig is in D9.
Nu nog 3 sites die omgezet moeten worden, waarvan 1 in het verleden is omgezet van d7 naar d8.
-----------------
Alle sites zijn zonder problemen omgezet naar Drupal 9.