Aktualizácia Drupalu 8 na Drupal 9: Skúsenosti zo skutočného sveta
Teória jednoduchej aktualizácie z Drupalu 8 na Drupal 9 bez komplikácií znie skvele. Poďme zistiť, ako jednoduché je to v skutočnosti.
O predpokladoch a zmenách sme diskutovali v našom predchádzajúcom článku:
Drupal 9 sa blíži!
........
Aby sme veci čo najviac zjednodušili, použili smeComposeraDrush. Ide o moderný spôsob vývoja Drupalu cez terminál.
Ako prvé sme si vytvorili zálohu databázy. Pre istotu.
Na začiatok sme museli aktualizovať jadro a moduly na najnovšiu verziu v rade 8.x. V našom prípade to bolo jadro Drupal 8.9.0. Zmenili sme súbor Composer.json a spustili aktualizačné skripty.
"require": {
"drupal/core": "^8.9.0",
},
"require-dev": {
"drupal/core-dev": "^8.9.0"
}
Toto sú riadky, ktoré boli upravené vcomposer.json.
composer update drupal/core drupal/core-dev --with-dependencies
composer update
drush updatedb
drush cache:rebuild
Následne sme nainštalovali a povolili modul na kontrolu možnosti aktualizácie -Upgrade Status. Ide o veľmi užitočný nástroj na kontrolu pripravenosti na aktualizáciu na novú, "veľkú" verziu. Nakoniec dokonca tento modul zachránil náš web a ušetril veľa problémov.
composer require --dev 'drupal/upgrade_status:^2.0'
drush en upgrade_status
drush cache:rebuild
Potom sme zisťovali, ako sme pripravení na ďalšiu významnú verziu Drupalu. Neboli sme pripravení. Verzia PHP bola jediná zelená vec v zozname (viď obrázok dole). Keďže ide o staršiu webovú stránku, museli sme aktualizovať verziu MySQL (v našom prípade MariaDB) a aktualizovať aj verziu Drush.
Drupal system readiness for upgrade
A tak sme to aj urobili. Docker nám pomohol s databázou a Composer s verziou Drush.
composer require 'drush/drush:^10.0'
S modulom Upgrade Status sme boli pripravení skontrolovať všetky moduly a témy, vlastné ikomunitné. Vybrali sme teda všetky a stlačili „Scan selected“. Po 60 sekundách sme sa dostali do časového limitu skriptu aneúspešne skončili. A znova a znova. Museli sme teda zmeniť prístup.
drush upgrade_status:analyze --all
Status Upgrade terminal output
Tentoraz sme mali šťastie. Prešiel celý skript a mali sme svoje výsledky. V dlhooom výstupe v konzole. Našťastie sa však všetky údaje mohli zobraziť aj v admin zóne Drupal.
Status Upgrade warning for custom theme
Vlastné moduly a témy vyžadovali iba kozmetické opravy. Stačilo iba pridať core_version_requirement do info súboru, ktorý tak hovorí jadru Drupalu, že téma alebo modul sa dá použiť s Drupal jadrom 8 a 9. Ale komunitnémoduly nám spôsobili väčšie problémy. Mnoho z nich používa zastarané metódy aj v najnovších verziách, pri iných sa po analýze ukázali rôzne varovania a chyby. V tom okamihu sme vedeli, že Drupal 9 pre nás ešte nie je schodná cesta. Nie je to až také prekvapujúce, nakoľko sme to testovali iba niekoľko dní po oficiálnom vydaní Drupalu 9.0.0, no i tak to bolo sklamaním.
Status Upgrade in Drupal admin UI
Detailed Drupal 9 incompatibility output
Niektoré moduly mali pripravené nové alfa alebo beta verzie, avšak pre väčšinu modulov to nie je to, čo chcete použiť. Pre niektorých je to, žiaľ, jediné vydanie. Niektoré z nich však dokonca nemali ešte pripravené ani beta verzie pre Drupal 9.
Výsledkom aktualizácie z Drupal 8.8 na 9.0 bola nakoniec aktualizácia na 8.9. Prebehlo to bez problémov a aj to je už nejaký výsledok, nakoľko pri väčších systémoch nie je aktualizácia verzie Drupal na jadro .0 zvyčajne vždy bezproblémová.
Tak či onak musíme počkať, kým budú moduly pripravené na Drupal 9 a jedného dňa ich možno budeme musieť niektoré z nich aj vymeniť.