O zkušenostech s upgradem Drupalu mezi verzemi 8 a 9 jsem se na Maxiorlovi rozepsal již letos v lednu. Pokud porovnám tehdejší situaci, kdy jsem upgradoval svoje weby a některé weby klientů běžící na vlastních serverech či virtuálech a současný stav z přelomu října a listopadu, tak bych to shrnul do následujících postřehů:
- U obsahových webů a firemních prezentací jsem narazil už na jediný modul, který neměl verzi pro Drupal 9. Nice Menus. Dobře, že jej u nových projektů nepoužívám. Oprava si vyžádala jen úpravu info souboru a jednu drobnost v kódu, kdy bylo třeba nahradit funkci drupal_render() za službu.
- Samotný upgrade je tak ještě o něco bezbolestnější, než dříve.
- Trochu horší je situace u webů, které nebyly postaveny okolo Composeru, v mém případě weby postavené na raném Drupalu 8. Ideální je převést je na Composer a následně upgradovat.
- Na hostingu narazíte na problém se starší verzí databáze MySQL nebo MariaDB. U Forpsi jsem to řešil s podporou, která ochotně vytvoří novou databázi na novém enginu, poté mi dala nějaký čas, než jsem starou zmigroval a smazal. Nebylo třeba připlácet za dvě databáze běžící po dobu pár hodin.
- U Websupportu modul Upgrade Status hlásí starší verzi databáze asi kvůli problému s číslováním verze, nicméně i starší projekty mi tam běžely na Maria DB 10.3.7, což je pro Drupal 9 minimum a upgrade proběhl v pohodě. Nic taky nebrání přechodu na vyšší verzi databáze podobně jako u Forpsi.
- Problém mají weby hostované na virtuálech u Váš-Hosting.cz. Tam je poněkud problém, že všechny weby mé i klientů běží na starém Debianu a nemohu jej upgradovat kvůli případným problémům s fungováním administrace VPS Centrum. Na rozdíl od Linode, kde používám Webmin. Řešení mi majitelé nabídli v podobě vytvoření trial verze nového virtuálu, zmigrování webů pomocí jejich nového udělátka a odstranění původního virtuálu. Nestojí to sice korunu navíc, ale je to dost práce, a hlavně se změní IP adresy, což je další komplikace.
- Alternativním řešením tam, kde nemáte možnost upgradovat databázi, je instalace modulu MySQL 5.6 and MariaDB 10.0 database driver for Drupal 9. Postup s Composerem i bez něj a popis následné úpravy v settings.php jsou na stránce modulu srozumitelně popsané.
Jak upgradovat Drupal 8 na Drupal 9
Itinerář provedení úspěšného upgradu je vlastně totožný, jako jsem tu popisoval již v lednu. Ze všeho nejdříve si nainstalujte Upgrade Status. Zde bych se ještě zastavil. Problém bude na webech dostupných jen přes FTP, kde nejste zvyklí na Composer. Bez něj modul nerozběhnete. Doporučuji kopii webu na lokále, tam spustit instalaci modulu přes Composer a následně to nakopírovat na FTP.
Tip: mám řadu webů postavených přes Composer, které mají hosting dostupný bez SSH, jenom s FTP. Aktualizace a příkazy Composeru tedy provádím v počítači (nebo přes nějaké gitové workflow) a synchronizuji na FTP pomocí nástroje Phploy.
Upgrade Status vám zjistí, zda jsou použité moduly kompatibilní s Drupalem 9. V řadě případů vás to donutí povýšit například některé verze modulů. Dále zkontroluje systémové požadavky na serveru – verzi PHP, Apache a databázového enginu. Na to pozor, bez splnění podmínek nepůjde po upgrade spustit update.php a upgrade nedokončíte.
Díky tomuto pomocnému modulu také uvidíte, co je třeba zeditovat v settings.php, já nejčastěji narážel na nastavení $config['sync'], které je třeba přepsat na $settings['config_sync_directory'].
Rovněž umí oskenovat vaše moduly a témata vzhledu, najít nekompatibilní kousky kódu a poradit s jejich opravou. Tady pozor, nespustíte to na některých webech se striktním zabezpečením. Pak jen doufejte, že máte přístup přes SSH a provedete to pomocí příkazu pro drush (drush upgrade_status:analyze). Jinak nezbude než udělat lokální kopii, pokud ji nemáte.
Před samotným upgradem modul Upgrade Status odinstalujte, stejně jako pro něj potřebný drupal/core-dev.
Nyní by mělo proběhnout klasické upgradovací kolečko:
První zádrhel může být při spouštění update.php, kdy uvidíte hlášení, že server nesplňuje nějaké minimální nároky nebo že je třeba upravit settings.php. Opravdu tu přípravu dopředu nepodceňujte.
Druhé ale může být po provedení aktualizací, kdy přejdete na titulní stranu webu a místo ní uvidíte jen bílou stránku nebo hlášku, že nastala chyba. Doplňte si do settings.php následující řádek, čím zapnete zobrazování chybových hlášení. To by vám mělo napovědět, kde je problém:
$config['system.logging']['error_level'] = 'verbose';
Pár tipů k problémům v kódu u vlastních modulů jsem sepsal v minulém článku na toto téma.
Vyplatilo se počkat?
Shrnuto a podtrženo, problémů s nekompatibilními moduly je mnohem méně než na začátku roku a prakticky by vás již nic nemělo upgrade na Drupal 9 znemožnit. V závislosti na stavu webu a hostingu, na kterém běží, se moje zatím provedené upgrady pohybují od 30 minut do asi osmi hodin v případě starých webů s FTP.
Za mě rozhodně plus proti dobám minulým, kdy se upgradovalo třeba z pětky na šestku nebo ze šestky na sedmičku. Do budoucna to bude opět stejně hladké.
Co se stane, když Drupal 8 nebudete upgradovat?
Konec životního cyklu Drupalu 8 neznamená, že vám teď weby přestanou ze dne na den fungovat. Jen prostě nepřibude podpora pro nové PHP, což je záležitost let, než Vám hosting řekne pá pá. Horší je, že nebudou ani opravy do budoucna nalezených zranitelností. Upgrade tedy neodkládejte zbytečně dlouho. Nebojte, z uživatelského hlediska vypadá administrace stále stejně.
Další zdroje informací:
- Drupal 8 is end of life today: the compendium od Gábora Hojtsyho
- Upgrading from Drupal 8 to Drupal 9 (or later) – návod krok za krokem na Drupal.org
- Konec životnosti Drupalu 8. Co s weby dál? - moje povídání na SvětCMS
Tvůrce webů z Brna se specializací na Drupal, WordPress a Symfony. Acquia Certified Developer & Site Builder. Autor několika knih o Drupalu.
Web Development Director v Lesensky.cz. Ve volných chvílích podnikám výlety na souši i po vodě. Více se dozvíte na polzer.cz a mém LinkedIn profilu.
Přidat komentář