Drupal 9 alaprendszer frissítése kétféle módszerrel

botond küldte be 2021. 02. 25., cs – 23:48 időpontban

Tartalom

 

Bevezető

A Drupal 9 CMS rendszerhez már több alaprendszer frissítés is kiadásra került az elmúlt hetekben, ezért érdemes átnézni ennek is a frissítési mechanizmusát, mint korábban a Drupal 8 frissítése esetében. Ebben a leírásban a Debian 10 (Buster) tökéletes szerverre telepített Drupal 9-es weboldalt fogom frissíteni a 9.1.2-ről a 9.1.4-re, tehát itt most több verziót is ugrunk egyszerre. A műveletet kétféle módszerrel is elvégezzük: először composerrel, utána pedig megnézzük a kézi frissítést is.

 

 

Frissítések ellenőrzése

A Drupal alapú weboldal admin felületén ha belépünk a Bővítés főmenübe, akkor láthatjuk a figyelmeztetést, hogy újabb alaprendszer frissítés érkezett:

Drupal 9 alaprendszer frissítési figyelmeztetés

Ebben van egy link, ami pedig az elérhető frissítések oldalára visz minket:

Drupal 9 - Új alaprendszer verzió

Itt tehát láthatjuk, hogy jelenleg 9.1.2-es a verziónk, és hogy a 9.1.4-es is már elérhető, ezért ajánlott az erre történő frissítés.

Az alaprendszer frissítést sajnos nem lehet 1-2 kattintással megoldani, mint egy modul frissítést, hanem kézzel kell elvégezni. Ha rákattintunk a Kiadási információk linkre, akkor a Drupal angol nyelvű oldalára jutunk, ahol teljes részletességgel láthatjuk a frissítőcsomag tartalmát. Ennél a frissítésnél csak egy javítócsomagról van szó, tehát most nem számítunk semmilyen bonyodalomra.

 

Biztonsági mentés készítése

A frissítés módszerétől függetlenül a Drupal alaprendszer frissítések előtt mindig készítsünk biztonsági mentést a teljes weboldalról, és az adatbázisról! Így ha bármi rosszul sül el, akkor vissza tudjuk állítani az eredeti állapotot.
Valamint, ha van rá lehetőségünk, ne éles webhelyen végezzük a frissítést, hanem a fejlesztői környezeten, amit aztán ellenőrzés után feltölthetünk a tárhelyre. Ha nincs ilyenre lehetőségünk, akkor nagyon körültekintően végezzük a frissítést!

 

Frissítési módszerek

A Drupal többféle módszert kínál a rendszer frissítésére, ebben a leírásban az alábbi módszerekkel történő frissítést végezzük el:

  • Drupal 9 alaprendszer frissítése a Composer segítségével
  • Drupal 9 alaprendszer frissítése kézzel

A két módszer egymástól függetlenül alkalmazható, én mindkettőt ugyanazon a szerver állapoton hajtom végre

 

A következő fejezetben a Drupal 9 alaprendszert a Composerrel segítségével fogjuk frissíteni. Ha nem kívánjuk a composert használni, akkor ugorjuk át ezt a részt, kattintsunk a Drupal 9 alaprendszer frissítése kézzel című fejezetre.

 

Drupal 9 alaprendszer frissítése a Composer segítségével

A Composer egy PHP alapú csomagkezelő, amelyre nagy mértékben támaszkodik a Drupal. Sok modult például csak ennek a segítségével lehet feltelepíteni, webes úton nem. Így ha Drupal rendszerünkben használtuk már a Composert modulok telepítésére, akkor ez az ajánlott frissítési mód. Továbbá a Drupal az alábbi felhasználóknak ajánlja ezt a frissítési módot:

  • Ismerős a Drupal frissítések terén
  • Érdekli a Composer parancssori műveletek használata
  • Ha egy parancs nem áll rendelkezésre a Composer alkalmazásban, akkor a Drush programot is tudja használni
  • Rendelkezik shell hozzáféréssel a weboldalhoz

A Composerrel történő frissítéshez szükséges dolgok:

A Drupal ezt a frissítési módot ajánlja, és jómagam is ezt preferálom. A hivatalos Drupal frissítési leírás erről itt található.

 

 

Feltételek ellenőrzése a frissités előtt

A frissítés elkezdése előtt lépjünk be a Drupal 9 alapú weboldalunkat kezelő shell felhasználóval a weboldal webgyökér könyvtárába, és ellenőrizzük a dolgokat:

composer --version
vendor/bin/drush --version
vendor/bin/drush status
A composer parancsot a telepítésekor olyan könyvtárban helyeztük el, ami benne van az elérési útban, ezért nem kell neki útvonalat megadni használatakor. A drush parancs pedig a webgyökérből kiindulva a vendor/bin/ könyvtárban érhető el. A továbbiakban tehát így hivatkozunk ezekre a parancsokra.

Alapfeltételek ellenőrzése a Drupal 9 frissítése előtt

Alapfeltételek ellenőrzése a Drupal 9 frissítése előtt #2

Tehát bent vagyunk a weboldal webgyökér könyvtárában (ez fontos a Composer miatt!), megvan a Composer és megvan a drush is, valamint a drush is a megfelelő adatokat jeleníti meg a Drupal példányunkról, mint például az alaprendszer verziója, stb.

A következő lépésben ellenőriznünk kell, hogy a Drupal oldalunk fel van-e készítve a Composer használatára. Ehhez a webgyökérből futtassuk az alábbi composer parancsot:

composer show drupal/core-recommended

A drupal/core-recommended egy olyan metacsomag, ami biztosítja a Drupal alaprendszer funkciókat, és kiegészíti még a Composer-es funkciókkal is, hogy az oldal menedzselhető legyen a PHP csomagkezelővel (további részletek a projekt GitHub oldalán találhatók). A parancs futtatása után, ha rendben van a csomag, akkor ilyesmi kimenetet kell, hogy kapjunk:

A drupal/core-recommended metacsomag ellenőrzése

Ez a csomag az alaprendszer része a Drupal 9 esetében, így szinte teljes biztossággal jelen van.

Egyedi fájlok lementése

A Drupal a frissítéskor felülírja az egész rendszert, így a webgyökér könyvtárban lévő fájlokat is, és esetenként a konfigurációs fájlokat is. Ezért ha vannak olyan fájljaink, amiket időközben kézzel módosítottunk, akkor ezeket mentsük le. Ilyenek például lehetnek az alábbi fájlok:

  • .htaccess
  • robots.txt
  • composer.json
  • sites/default/settings.php

Ezek közül például a settings.php fájlban már hajtottunk végre módosítást a Drupal telepítése után rögtön, így ebben már biztosan vannak egyedi beállításaink. Ezeket a módosításokat a frissítés végeztével ellenőrizni kell, majd szükség esetén újra el kell végezni a frissített fájlokon is. A settings.php-t általában nem szokta felülírni, de vannak olyan frissítési kiadások, amikben ezt a fájlt is módosítják, ilyenkor felülírja a meglévőt, ezért érdemes ezt is lementeni frissítés előtt. Persze ha készítettünk az elején teljes biztonsági mentést, akkor abból is vissza tudjuk később állítani a saját módosításainkat. Az adott frissítés leíró oldalán tájékozódhatunk, hogy milyen fájlokban történt változás.

 

 

Ha a composer.json fájlban történt változás a frissebb kiadás során, és a saját fájlunkban is végeztünk már kézi módosításokat, akkor ebben az esetben a composer.json fájlok alaposabb összefésülésére van szükség. Erről a korábbi, Drupal 8 frissítési útmutatómban írtam részletesen, így ebben tájékozódhatunk erről.

A telepített moduljainkra és egyéb beállításainkra természetesen mindez nem vonatkozik, azok megmaradnak. Ez csak a "gyári" fájlstruktúrára vonatkozik, azaz amit a friss Drupal telepítőcsomag tartalmaz, tehát csak az ezek között lévő egyedileg módosított fájlokat kell lementenünk, és a frissítés után újból elvégeznünk a módosításokat.

Karbantartási mód bekapcsolása

Ha éles weboldalon végezzük a frissítést, akkor előtte be kell kapcsolni a karbantartási módot, hogy a frissítés közben más felhasználók ne tudják módosítani az oldalt. Ezt elvégezhetjük a weboldal adminjában is a Beállítás főmenü Fejlesztés paneljén lévő Karbantartási mód opciójára kattintással:

Drupal 9 - Karbantartási mód bekapcsolása

Illetve ha már a parancssorban vagyunk, akkor az alábbi drush parancsok segítségével:

vendor/bin/drush state:set system.maintenance_mode 1
vendor/bin/drush cache:rebuild

Drupal 9 - Karbantartási mód bekapcsolása a drush paranccsal

Frissítés

Az alaprendszer frissítéséhez futtassuk az alábbi parancsot:

composer update drupal/core "drupal/core-*" --with-all-dependencies

Drupal 9 alaprendszer frissítése a composer paranccsal

Ezután még az adatbázist is frissítenünk kell:

vendor/bin/drush updatedb

Drupal 9 adatbázis frissítése a drush paranccsal

Itt nem mindig, de ha rákérdez, nyomjunk entert a frissítések végrehajtásához. Majd utána jelzi nekünk a sikeresség állapotát is.

Egyedi fájlok visszaállítása

Amennyiben voltak egyedi módosításaink a fentebb említett fájlokban, ezeket ismételjük meg újra. A legkönnyebben a diff parancs segítségével fésülhetjük össze a régi és az új fájl példányokat, aminek a kimenete alapján már könnyedén vissza tudjuk állítani a saját változtatásainkat. A diff parancsot így használjuk:

diff <régi lementett fájl> <új fájl, amivel felülírtuk a tárhelyen>

Ahol a fájlok lehetnek a fentebb említett .htaccess, robots.txt, settings.php, stb fájlok bármelyike.

 

 

Karbantartási mód kikapcsolása és cache újraépítése

A karbantartási mód kikapcsolásához, és a gyorsítótárak újraépítéséhez futtassuk az alábbi két parancsot:

vendor/bin/drush state:set system.maintenance_mode 0
vendor/bin/drush cache:rebuild

Ellenőrzés

A frissítés elkészült, most ellenőrizzük, hogy minden rendben van-e.

Először nézzük a parancssorból:

vendor/bin/drush status

Drupal 9 alaprendszer ellenőrzése a drush paranccsal

Itt láthatjuk a 9.1.4-es alaprendszer verziót, valamint a többi adatot is.

Most nézzünk bele a weboldal adminjában is:

Drupal 9 alaprendszer ellenőrzése a weboldalon

Itt is minden rendben.

Ez a mintaoldal természetesen még nem tartalmaz semmilyen külön telepített modult vagy témát (sminket), így egy összetettebb weboldal konfiguráció esetén előfordulhatnak komplikációk. Az ilyen esetekben látogassunk el a Drupal hivatalos frissítési útmutatójára, ahol bőveb információkat is kaphatunk (a hivatalos leírás a Drupal 8 és a Drupal 9 rendszerekhez egyaránt készült, így lehetnek benne eltérő dolgok is. Ebben a leírásban csak a Drupal 9 frissítését tárgyaljuk).

 

Drupal 9 alaprendszer frissítése kézzel

A Drupal alaprendszerét a composer és a drush parancsok használata nélkül is frissíthetjük. Ebben az esetben kézzel kell letöltenünk a frissítőcsomagot, és bemásolnunk a helyére. Az alábbi felhasználók számára ajánlott ez a frissítési mód, akik:

  • Még nem ismerősek a Drupal frissítések terén
  • Nincs shell hozzáférésük, így csak FTP-n keresztül tudják elérni a weboldal fájlstruktúráját
  • Van shell hozzáférésük, de nincs módjuk, vagy nem akarják használni a composer és drush parancsokat

A kézi frissítéshez szükséges legalább valamelyik, az alábbiak közül:

  • Shell hozzáférés
  • FTP hozzáférés, amennyiben nincs Shell hozzáférés

Ha shellben hajtjuk végre a frissítést, akkor a Drupal 9 weboldalunkat kezelő shell felhasználóval lépjünk be, tehát azzal a felhasználóval, amely birtokolja a weboldal fájljait és könyvtárait. FTP használata esetén is értelemszerűen a weboldalhoz készített FTP fiókot használjuk.

Egyedi fájlok lementése

A Drupal telepítőcsomagját amikor rámásoljuk a tárhelyre, akkor az felülírja az egész rendszert, így a webgyökér könyvtárban lévő fájlokat is, és esetenként a konfigurációs fájlokat is. Ezért ha vannak olyan fájljaink, amiket időközben kézzel módosítottunk, akkor ezeket mentsük le. Ilyenek például lehetnek az alábbi fájlok:

Lehetnek olyan frissítések, amikor módosulnak olyan fájlok is, amelyekben magunk is megváltoztattunk valamit. Ezeket a saját módosításokat ilyenkor a frissítés végén újra el kell végezni. Ezért ajánlott az alábbi fájlok külön lementése a frissítés előtt:

  • .htaccess
  • robots.txt
  • sites/default/settings.php

Ezek közül például a settings.php fájlban már hajtottunk végre módosítást a Drupal telepítése után rögtön, így ebben már biztosan vannak egyedi beállításaink. Ezeket a módosításokat a frissítés végeztével ellenőrizni kell, majd szükség esetén újra el kell végezni a frissített fájlokon is. A settings.php-t általában nem szokta felülírni, de vannak olyan frissítési kiadások, amikben ezt a fájlt is módosítják, ilyenkor felülírja a meglévőt, ezért érdemes ezt is lementeni frissítés előtt. Persze ha készítettünk az elején teljes biztonsági mentést, akkor abból is vissza tudjuk később állítani a saját módosításainkat. Az adott frissítés leíró oldalán tájékozódhatunk, hogy milyen fájlokban történt változás.

Karbantartási mód bekapcsolása

Ha éles weboldalon végezzük a frissítést, akkor előtte be kell kapcsolni a karbantartási módot, hogy a frissítés közben más felhasználók ne tudják módosítani az oldalt. Ezt elvégezhetjük a weboldal adminjában is a Beállítás főmenü Fejlesztés paneljén lévő Karbantartási mód opciójára kattintással:

Drupal 9 - Karbantartási mód bekapcsolása

Itt a karbantartási módba kapcsoláson kívül ez a lépés azért is fontos, mert adminként kell belépnünk ehhez, ami a későbbiekben az adatbázis frissítések futtatásához is szükséges lesz. Tehát mindenképpen lépjünk be adminként, hogy majd a böngészőnk "felismerjen" bennünket.

 

 

Frissítés

A frissítés kézi módszerrel összetettebb műveletsorból áll, ezért itt további alcímekkel tagoltan áttekinthetőbb az egész.

Rendszer fájlok eltávolítása

Ebben a lépésben eltávolítjuk az alaprendszer részét képező fájlokat:

  • core/ és vendor/ alkönyvtárakat, valamint
  • a webgyökérben lévő fájlokat

Ezek a fájlok és könyvtárak nem tartalmaznak semmilyen egyedi vagy személyes beállítást, mert azok a fent maradó modules/, profiles/, sites/ és themes/ alkönyvtárakban vannak, így minden eddigi beállításunk megmarad a weboldalon.

Shell használat

A törlés végrehajtásához lépjünk be a Drupal 9 alapú weboldalunk webgyökér könyvtárába és futtassuk az alábbi parancsokat:

rm -rf core vendor
rm -f *.* .[a-z]*

Az első parancs törli az említett core/ és vendor/ könyvtárakat, minden mást a helyén hagy, a második parancs pedig töröl minden fájlt a webgyökér könyvárból.

A törlés után így néz ki a webgyökér könyvtárunk:

Drupal 9 frissítés - Rendszer fájlok törlése

FTP használat

Az FTP-ben navigáljunk a weboldal gyökér könyvtárába és töröljük a core/ és vendor/ alkönyvtárakat, valamint a webgyökérből minden fájlt. Ügyeljünk rá, hogy a modules/, profiles/, sites/ és themes/ alkönyvtárakat ne töröljük.

 

Amennyiben a frissítési kiadás tartalmazza a default.settings.php fájl változását is, ebben az esetben ezt is törölni kell, majd a frissítés végeztével az újonnan bemásolt példánnyal felül kell írni a saját settings.php fájlunkat, és újból elvégezni benne minden módosítást. Erről az adott frissítési kiadás leírásában tájékozódhatunk, hogy módosult-e ez a fájl. Ez szerencsére nagyon ritkán fordul elő, az esetek túlnyomó többségében nem változtatják ezt a fájlt.

Frissítőcsomag letöltése, kicsomagolása és bemásolása

Ebben a lépésben letöltjük a Drupal 9 legfrissebb telepítőcsomagját, kicsomagoljuk, és bemásoljuk a helyére a szükséges fájlokat és könyvtárakat.

Ebben a példában én a Drupal 9.1.4 telepítőcsomagot töltöm le, jelenleg ez a legfrissebb. A leírás későbbi olvasásakor természetesen a legfrissebb változatot használjuk, így a saját verziónkat helyettesítsük be. A Drupal 9 frissítéseit itt találhatjuk meg: www.drupal.org/project/drupal/releases?version=9

Shell használat

Hozzunk létre egy átmeneti könyvtárat a frissítésnek, amit akár a webgyökérben is létrehozhatunk mondjuk egy update/ alkönyvtár néven, így kényelmesebben tudunk mozogni a webgyökér és eközött. A webgyökérből tehát futtassuk az alábbi parancsot:

mkdir update

Ezután lépjünk be a könyvtárba, majd töltsük le a legfrissebb telepítőcsomagot és csomagoljuk ki. Nálam a 9.1.4 lesz ez:

cd update
wget https://ftp.drupal.org/files/projects/drupal-9.1.4.tar.gz
tar -xzf drupal-9.1.4.tar.gz

Lépjünk be a létrejött könyvtárba:

cd drupal-9.1.4/

Drupal 9 telepítőcsomag letöltése és kicsomagolása

És másoljuk ki a core/ és vendor/ alkönyvtárakat, valamint a könyvtárban lévő fájlokat a kettő könyvtárszinttel kijjebb lévő webgyökérbe:

cp -R core vendor ../../
cp *.* .[a-z]* ../../

Ezután lépjünk ki a könyvtárból, majd töröljük a felesleget:

cd ../..
rm -rf update
FTP használat

FTP használata esetén a böngészővel töltsük le a számítógépünkre a legfrissebb telepítőcsomagot, nálam például a 9.1.4 -et, a számunkra szimpatikusabb formátumban (tar.gz vagy zip), majd csomagoljuk ki, és töltsük fel a webgyökérbe a core/ és vendor/ alkönyvtárakat, valamint az összes fájlt a kicsomagolt archívum főkönyvtárából.

 

 

Egyedi fájlok visszaállítása

Amennyiben voltak egyedi módosításaink a korábban említett fájlokban, ezeket ismételjük meg újra az újonnan bemásolt fájlokon. A legkönnyebben a diff parancs segítségével fésülhetjük össze a régi és az új fájl példányokat, aminek a kimenete alapján már könnyedén vissza tudjuk állítani a saját változtatásainkat. A diff parancsot így használjuk:

diff <régi lementett fájl> <új fájl, amivel felülírtuk a tárhelyen>

Ahol a fájlok lehetnek a fentebb említett .htaccess, robots.txt, settings.php, stb fájlok bármelyike.

Adatbázis frissítés

A böngészővel lépjünk a weboldalon elérhető /update.php -re:

http(s)://www.drupalosoldal.tld/update.php

Nálam:

Drupal 9 - Adatbázis frissítése a webről - Áttekintés

Itt fontos most, hogy korábban beléptünk adminként, mert különben nem engedne be minket a frissítőbe. Amennyiben ilyen fordulna elő, mert elmulasztottuk volna az admin belépést az elején, akkor nyissuk meg a settings.php fájlunkat, ami alapesetben a sites/default/ könyvtár alatt van, és keressük meg benne az alábbi sort:

$settings['update_free_access'] = FALSE;

És álllítsuk true értékre:

$settings['update_free_access'] = TRUE;

(Ezt shellből és FTP-ből egyaránt tudjuk módosítani.)

Majd látogassunk el ismét az update.php fájlra. A frissítés végén ne felejtsük el visszaállítani FALSE értékre ezt a beállítást!

Tehát ha elindult a frissítő, akkor miután elolvastuk az itt megjelenő infókat, kattintsunk a Folytatás gombra. Ezután a következő oldalon az esetleges adatbázis frissítéseket sorolja fel:

Drupal 9 - Adatbázis frissítése a webről - Frissítések áttekintése

Itt kattintsunk a Függő frissítések alkalmazása gombra. Ekkor végigmegy a folyamatjelző, és beadja az utolsó panelt:

Drupal 9 - Adatbázis frissítése a webről - Napló áttekintése

Itt ha nincs hiba, akkor át is léphetünk a Drupal 9 rendszerünk adminjába, hogy körülnézzünk.

 

Karbantartási mód kikapcsolása

Végül kapcsoljuk ki a karbantartási módot, a Beállítás főmenü Fejlesztés paneljén lévő Karbantartási mód opciójára kattintással:

Drupal 9 karbantartási mód kikapcsolása a webről

Itt vegyük ki a pipát, majd kattintsunk a Beállítások mentése gombra.

Ellenőrzés

A frissítés elkészült, most ellenőrizzük, hogy minden rendben van-e. Lépjünk be a Jelentések főmenü Állapotjelentés menüpontjába:

Drupal 9 állapotjelentés - Az oldal naprakész és hibátlan

Amint láthatjuk, az oldal naprakész és hibátlan állapotban van a kézi frissítés segítségével.

 

 

Konklúzió

Itt láthattunk kétféle frissítési módot, így mindenki eldöntheti, hogy számára melyik a kényelmesebb és szimpatikusabb. Én ezek közül a composer-es frissítést ajánlom, mert ha már eleget tettünk a feltételeknek, onnantól már nagyon egyszerű és gyors a frissítés folyamata. Valamint ha idővel elkezdjük használni a composert, és azzal telepítünk modulokat, akkor már eleve csak ez a frissítési mód fog működni.