Ako aktualizovať Drupal (update a upgrade)

By michal, 18 October, 2023
Stránka administrácie aktualizácii v Drupale 10.

V dnešnej dobe sú už takmer bežnou súčasťou používania software ich aktualizácie. Drupal nie je výnimkou. Aktualizácia Drupalu a jeho modulov je veľmi dôležitá pre správne fungovanie a bezpečnosť webovej stránky alebo aplikácie postavenej na tomto systéme. V tomto článku vám predstavím dôležitosť aktualizácií, zásadné rozdiely v spôsoboch aktualizovania a hneď na úvod si vysvetlíme základné dva druhy aktualizácií Drupalu.

Update vs. upgrade Drupalu
Aktualizácia (update) a upgrade sú dva rôzne pojmy. Často sa používajú v kontexte softvérov a systémov na správu obsahu, ako je Drupal, ale majú odlišný význam:

  • Update
    Aktualizácia sa vzťahuje na proces aplikovania nových verzií zväčša menších častí softvéru. Majú za cieľ najmä zlepšiť funkčnosť, opraviť chyby, zvýšiť bezpečnosť či optimalizovať výkon. Ako príklad uvediem patch aktualizáciu jadra Drupalu z verzie 10.0.7 na 10.0.9. Minor aktualizácia, ako napríklad z verzie 10.0.9 na 10.1.5 je o väčších zmenách a zvyčajne už potrebuje pozornosť. Aktualizácie typu update zachovávajú existujúce nastavenia a dáta. Výsledkom aktualizácie je vylepšená verzia softvéru, ale štruktúra a dáta zostávajú rovnaké. Aj keď je po aktualizovaní jadra a modulov Drupalu vždy potrebné vykonať aj aktualizáciu databázy, update sa dá v modernom Drupale vykonať pomerne ľahko.
  • Upgrade
    Je to zásadná zmena webovej aplikácie. Proces prechodu na novú verziu Drupalu, ktorá prináša významné zmeny vo funkcionalite, architektúre alebo používateľskom rozhraní. Upgrade je prechod na novú majoritnú verziu softvéru, napríklad z verzie 9.5.0 na 10.0.0. Pri upgrade sa môže vyžadovať konverzia a migrácia dát, pretože môže dôjsť k zmenám v databázovej štruktúre, ale aj formáte dát. Taktiež je možné, že bude potrebné prepracovať konfigurácie alebo nastavenia na dosiahnutie kompatibility s novou verziou. V tomto smere sa nový (8+) Drupal snaží udržať trend kompatibility, a tak vo verziách 8+ je už takmer stabilný a upgrade nevyžaduje pre-programovanie celej aplikácie. Problém sú vždy moduly a témy. Tie sú často na upgrade nepripravené. A celý upgrade projektu nám vie pokaziť hoci len jeden nekompatibilný modul. Verte mi, nikdy to nie je iba jeden.

Ako čítať jednotlivé verzie Drupalu?
Ak sa na číslo verzie Drupalu pozrieme detailne, nájdeme tam tri čísla oddelené bodkou. Príklad 10.1.5 nám poslúži na objasnenie. Tieto tri čísla si nevymyslel samotný Drupal. Sú dané verzionovacím systémom, ktorý sa stal súčasťou správy softvérového životného cyklu (Software Development Lifecycle - SDLC). Pomáha užívateľom a vývojárom identifikovať, aké zmeny boli vykonané v rôznych verziách softvéru, a aká je ich kompatibilita.

  1. Hlavná verzia (Major Version) - napr. 10
    Prvé číslo označuje hlavnú verziu softvéru. Zmena hlavnej verzie môže znamenať významné zmeny vo funkcionalite a architektúre projektu. Napríklad, prechod z Drupal 9 na Drupal 10 je prechod na novú hlavnú verziu, čo zahŕňa významné zmeny a aktualizácie. Jednotlivé hlavné verzie Drupalu medzi sebou nie sú kompatibilné. Najviac to platí pri prechode z verzie 7 na novší Drupal. V tomto prípade sa zmenila štruktúra naprogramovania jadra. Drupal v tomto skoku kompletne prešiel na objektovo orientované programovanie a PHP balíčkovací manažér composer.
  2. Podverzia (Minor Version) - napr. 1
    Druhé číslo označuje podverziu. Toto číslo sa zvyčajne zvyšuje, keď sú k dispozícii nové funkcie alebo zlepšenia, ale nejde o také významné zmeny ako pri zmene hlavnej verzie. Zmena podverzie zväčša zahŕňa opravy chýb, nové funkcie, ale aj iné úpravy. Pri podverzii by sa vám nemalo stať, že aplikácia bude nekompatibilná s predošlou podverziou. Aj tak je dosť podstatné si vopred preveriť konkrétne zmeny. Tie sa dajú pre samotné jadro Drupalu skontrolovať na Drupal releases stránke.
  3. Verzia opravy (Patch Version) - napr. 5
    Tretie číslo označuje verziu opravy. Toto číslo sa zvyšuje, keď sú dostupné opravy chýb alebo malé úpravy, ktoré neovplyvňujú významne funkcionalitu alebo architektúru CMS. Zvyčajne ide o drobné zmeny a opravy, ktoré webovú aplikáciu nijako výrazne neovplyvnia.

Ako často by som mal Drupal aktualizovať?
Dôležitosť aktualizácií spočíva v niekoľkých kľúčových aspektoch. Asi najdôležitejší je bezpečnosť. Aktualizácie zahrňujú opravy zistených bezpečnostných chýb a zraniteľností. Ak neaktualizujeme Drupal a jeho moduly, naša webová stránka môže byť vystavená riziku útokov a zneužitia zraniteľností. To môže viesť k stratám dát a poškodeniu reputácie. Aktualizácie, ktoré nie sú označené ako bezpečnostné môžu obsahovať iba vylepšenia výkonu a optimalizáciu, čo môže zvýšiť rýchlosť načítania stránok a celkovú výkonnosť našej webovej stránky. To má priamy vplyv na používateľskú skúsenosť a SEO (optimalizáciu pre vyhľadávače). Aktualizácie môžu pridávať aj nové funkcie, ktoré môžu rozšíriť schopnosti nášho webu. Novšie verzie Drupalu a jeho modulov môžu byť lepšie kompatibilné s novými verziami prehliadačov, databázových systémov a iných technológií, čo zabezpečuje, že naša stránka bude dobre fungovať aj na nových platformách a zariadeniach.
Dá sa povedať, že frekvenciu aktualizácií sa nedá predpovedať presne. Stránka vám v pohode pobeží, ak nebol použitý najnovší PATCH. Ak však vynecháme bezpečnostnú aktualizáciu, riskujeme. Pred aktualizovaním Drupalu sa jednoznačne odporúča poradiť sa s Drupal odborníkom.

Ako postupovať pri aktualizácii Drupalu?
Zálohovať, zálohovať a hádajte čo ešte. Áno, zálohovať. Toto je základné pravidlo pri aktualizáciách akéhokoľvek softwaru, nie len Drupalu. Pred aktualizáciou si určite urobte úplnú zálohu webovej stránky. Tá pozostáva zo zálohovania súborov a databázy. V prípade, že by došlo k problémom pri aktualizácii a niečo sa pokazilo, môžete sa vrátiť k predchádzajúcej verzii. Tento aspekt aktualizácií platí najmä pri prechode na novú podverziu (Minor Version). Už sa mi nie raz stalo, že jednoduchý update položil celú aplikáciu. Aby sme tomu predišli, okrem zálohy je vhodné mať testovacie prostredie. Pred aktualizáciou na produkčný server je odporúčané ich otestovať. Testovacie prostredie je zároveň dobré držať aktuálne s produkciou, aby sme vedeli čo najdôveryhodnejšie nasimulovať problém, ktorý nám na produkcii môže nastať.

Pri aktualizácii je teda najvhodnejšie najprv naklonovať produkčnú verziu stránky na testovaciu. Tým si zároveň vytvoríme zálohu a môžeme skúsiť aktualizovať. Po akejkoľvek aktualizácii je nutné spustiť skript na zmeny databázovej štruktúry: update.php. Ten spúšťame zásadne iba v móde údržby. Následne stránku otestujeme. Je vhodné sa pozrieť hlavne na naše kľúčové funkcionality a sledovať pri tom logy aplikácie. Finálne, ak sme všetko zvládli a naše testovacie prostredie funguje v poriadku, môžeme pristúpiť k aktualizácii na produkčnej stránke.

Ako aktualizovať Drupal?
Pri starších inštaláciách Drupalu (< 8.0) bolo potrebné aktualizovať jadro Drupalu manuálne. To znamenalo, že developer musel kompletne prepísať súbory jadra. Musel ale dať pozor nato, aby neprepísal aj konfiguračné alebo používateľské súbory. Môžem povedať, že aktualizácia Drupalu pred verziou 8.0 bola manuálna a časovo náročná. To neplatí pre moduly. Tie sa dali pomerne ľahko aktualizovať pomocou UI Drupal admin rozhrania. To sa už ale v modernom Drupale (9+) neodporúča. Na ranu prišiel composer a pomocou neho vieme moduly a ich závislosti elegantne aktualizovať priamo z príkazového riadku. Stále existuje alternatíva, a tou je nástroj drush. Ja však verím, že v modernom Drupale je drush užitočný na množstvo vecí. Ale na aktualizácie jednoznačne volím composer.

Udržanie inštalácie Drupalu na najnovšej verzii jadra a modulov môže byť veľmi jednoduché. To platí ale iba ak je inštalácia jednoduchá, moderná a dlhodobo udržiavaná. Z praxe môžem uviesť, že hlavne minor verzie Drupalu nesú nemalé riziko nekompatibility. Najmä ak aplikácia má nainštalované množstvo modulov, o ktoré sa už tvorca nestará. Vo všeobecnosti však môžem potvrdiť, že vždy sa dá nájsť riešenie.

Michal - Drupal špecialista.