Drupal-karbantartási alapok
A Drupal CMS (tartalomkezelő rendszer) komplex és erőteljes platform az online jelenlétünk megszilárdításához. Ezen bonyolultsága miatt fontos, hogy naprakészen tartsuk rendszerünket, mert ha elhanyagoljuk, akkor a későbbiekben sok gondot tud okozni.
Egy Drupal weboldal két komponensből épül fel: a Drupal core-ból (a Drupal „magjából”), ami tartalmazza a rendszer alapvető működéséhez szükséges összes fájlt és kódot, valamint a modulokból, melyeket nagyrészt a Drupal-közösség készít és fejleszt.
Ahogyan fejlődik az internetes technológia világa, úgy a Drupal is modernebb funkcionalitást kap; a meglévő részegységei modernizálódnak vagy teljes egészében lecserélődnek, esetleg végleg megszűnnek.
Beszélhetünk külön a külső tényezők általi fejlődésről vagy egyéni fejlődésről.
Például a Drupal minden verziójának az alapját a PHP programozási nyelv szolgáltatja. Ha ez a nyelv frissül, illetve valamilyen részegysége lecserélődik vagy átalakul, akkor a Drupal fejlesztőinek előbb-utóbb változtatniuk kell a rendszeren.
Például a Drupal 9.4.0-s verzió megjelenésével a PHP 7.4 lett a minimum követelmény.
Mik is azok a frissítések?
A szoftverfrissítés olyan folyamat, amelynek során a program meglévő kódbázisának egy része lecserélődik vagy felülíródik, hogy naprakész állapotba kerülhessen.
A Drupal is, mint sok másik szoftver, rendszeresen kap frissítéseket, amelyeket telepíteni kell.
Vannak bizonyos CMS-ek, mint a WordPress, amelyekben van lehetőségünk automatikus frissítéseket beállítani.
A teljesen automatizált, ellenőrzés nélküli frissítések azonban kockázatosak. Ugyanis az automatikus frissítésekhez nem tartoznak automatizált funkcióhasználati teszek, amelyek lefutnának a frissítés után, így ha esetleg hibás kód kerül az oldalra a frissítéssel, nem értesül róla azonnal a webhely tulajdonosa.
Vagyis valójában az automatikus frissítések után is ajánlott átnézni, manuálisan tesztelni a webhelyet, hogy minden rendben működik-e.
A Drupal manuális frissítésekkel operál, tehát fejlesztőnek kell telepítenie a változtatásokat, de így a fejlesztő a telepítés után teszteli, ellenőrzi is a webhely működését. (Egyébként a Drupalt is lehet bővíteni automatikus frissítéstelepítéssel, viszont nem javasolt, mert karbantartási szempontból megnehezíti az oldal kezelését – pl. nem lehet visszaállítani korábbi verzióra a frissített komponenst.)
Bármelyik módszert is alkalmazzuk, keletkezhetnek problémák. Ahhoz, hogy hatékonyan tudjuk kezelni a felmerülő gondokat, szükségünk van a webtárhely hibanaplójához való hozzáféréshez, hogy tiszta képet kapjunk a hiba gyökeréről.
A Drupal-frissítések besorolása
A Drupal-frissítéseknek három típusát különböztethetjük meg:
- jelentős frissítés (kiadás),
- kisebb frissítés (funkcionalitás),
- hibajavítás.
Jelentős frissítések (verziókiadások)
A verzióváltások jelentős frissítések, mivel lényeges változtatásokkal járnak. A 7 és 8 közötti váltás egyik legnagyobb sajátossága például a Twig nevű sablonmotor bevezetése volt, ami az oldalak megjelenítését szolgáltatja.
Ezekre a verziókra a Drupal megnevezésében is utalunk, úgymint Drupal 7, Drupal 8 vagy jelen állás szerint Drupal 9.
Manapság 4-5 éves időközönként teszik közzé a következő nagy Drupal-kiadást.
Kisebb frissítések (funkcionalitási frissítések)
Kisebb frissítésekről akkor beszélhetünk, ha az aktuális fő verzión belül valamilyen kisebb változtatást hajtanak végre, vagy új funkció kerül be.
A Drupal 9.4.0-s verzió megjelenésével például az adatbázismotorok mind saját modulokba lettek átültetve, előtte a rendszer magjában voltak implementálva.
Funkciófrissítéseket félévente tesznek közzé: decemberben és júniusban.
Hibajavítások, javítócsomagok
A hibajavítások zöme a már meglévő funkcionalitás hibáival foglalkozik, nem hoz magával újdonságokat. Hibajavításnak soroljuk be a biztonsági frissítéseket is.
A hibajavításokat nem kötelező azonnal telepíteni, ha a kijavított hibák nem befolyásolják az oldalunkat. Példul előfordulhat, hogy az egyik modulban volt ugyan hibajavítás, de azt a részét, amit javítottak, nem használtuk, és nem is befolyásolta az oldalt.
Érdekesség: a legtöbb hibajavítás a Drupal-közösség által létrehozott patch fájlok implementálásából jön létre. A patch fájlokat nem hivatalos Drupal-fejlesztők készítik, de a Drupal.org oldalon vannak terjesztve. Ha a készítők kérvényezik, hogy a patch legyen bevezetve egy modul vagy éppen a Drupal magjának kódbázisába, akkor a közösség teszteli, és jó eséllyel bekerül egy jövőbeli hibajavítási frissítés során (más szavakkal: hivatalos javítássá válik).
A Security News oldalt meglátogatva feliratkozhatunk egy hírlevélre, hogy minden újonnan megjelenő biztonsági frissítésről kapjunk értesítést. Egyéb frissítésekről a Drupal weboldalunkról szerezhetünk tudomást, ha be vagyunk jelentkezve, és rendelkezünk a megfelelő jogokkal.
A Drupal funkcionalitási frissítéseinek és hibajavításainak telepítése
A Drupal 7 idejében a frissítésre használt elsődleges módszer a Drush parancssori kiegészítő volt. Ez összetett lépéseket egyszerűsített le egy-egy sornyi paranccsá, mint a frissítések telepítése és a teljes Drupal-webhelyünk archiválása.
Amikor kijött a Drupal 8, kezdetben csak manuálisan lehetett frissítéseket telepíteni, de a 8.8.0-s verzió megjelenésétől kezdve már a Composer nevű csomagkezelő szoftvert kell igénybe venni. A Drush továbbra is elérhető Drupal 8, valamint 9 alatt is, de frissítési célokra már csak korlátozottan alkalmazható.
Négy fő lépést kell teljesíteni ahhoz, hogy sikeresen frissíthessük a Drupal-installációnkat:
- Gyorsítótár ürítése: a Drupal gyorsítótárban tárolja az állandó, sokszor kérvényezett adatokat az oldalon. A gyorsítótár sok helyet foglal az adatbázisban, ezért ürítenünk kell.
- Biztonsági mentés készítése: a fájlokról és az adatbázisról is szükséges külön mentést létrehozni. Probléma esetén így gyorsan visszaállítható az oldal a frissítés előtti állapotra.
- Drupal core vagy modulok frissítése: a fő részegysége a frissítésnek, a régi fájlok lecserélődnek az új, módosított fájlokkal.
- Adatbázis frissítése: a frissítés folyamán sok esetben megváltozhat a kód által kezelt adatok felépítése, ezért az adatbázisban már meglévő adatstruktúrát is frissíteni kell.
Előfeltételek
Ha frissítéseket szeretnénk telepíteni, akkor szerveroldali hozzáférésre van szükségünk, lehetőleg SSH által. Képesnek kell lennünk fájlok létrehozására, módosítására, törlésére, legalább a /web mappában, ahol az oldalunk foglal helyet.
Minden lépést a weboldalunk gyökérkönyvtárából kell végrehajtanunk, ami alapesetben a „web” mappa.
Lépésről lépésre
Drupal 7: Drush használatával elég három sort beírni a terminálba:
drush cc all
– összes gyorsítótár ürítésedrush arb
– archívum készítése a fájlokról és az adatbázisróldrush up
– minden elérhető frissítés telepítése és az adatbázis frissítése
Drupal 8.8.0 óta, illetve Drupal 9: Composer használatával kicsivel több a szükséges parancsok száma:
drush cr
– összes gyorsítótár ürítésedrush sql-dump –result-file backup.sql
– adatbázis mentése fájlkénttar -czvf backup.tar.gz web
– tömörített állomány készítése a weboldal fájljairóldrush state:set system.maintenance_mode 1
– karbantartási üzemmód bekapcsolása az oldalon, hogy a frissítés során ne lehessen meglátogatni az oldaltchmod 777 web/sites/default;
chmod 666 web/sites/default/*settings.php;
chmod 666 web/sites/default/*services.yml;
– megeshet, hogy a szerverünkön a composer nem feltétlenül tud ideiglenes írási jogot adni önmagának bizonyos fájlok kezelésére, ezért nekünk kell átírnunkcomposer update
– minden elérhető funkciófrissítés telepítése, kiadásverzió váltásához a „require” parancsot kell alkalmazni az egyes csomagokonchmod 755 web/sites/default;
chmod 644 web/sites/default/*settings.php;
chmod 644 web/sites/default/*services.yml;
– ha manuálisan kellett a jogosultságokat átállítanunk, akkor mindenképp vissza kell írnunk ezeket az eredeti értékekredrush updatedb
– adatbázis frissítésedrush cr
drush state:set system.maintenance_mode 0
– karbantartási üzemmód kikapcsolása, az oldal elérhetővé tétele a felhasználók számáradrush cr
Végszó
Drupal rendszerünk karbantartása az egyik, ha nem a legfontosabb kötelességünk. Akár mi magunk gondoskodunk róla, akár megbízunk ezzel valaki mást, nem szabad elhanyagolni. Ahogy fejlődik a világ, úgy nekünk is tartanunk kell vele a lépést.