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:
Ebben van egy link, ami pedig az elérhető frissítések oldalára visz minket:
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
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
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:
- Shell hozzáférés
- Composer csomagkezelő megléte (telepítési útmutató)
- Drush megléte (telepítési útmutató)
- Git verziókezelő rendszer megléte
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
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:
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.
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:
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
Frissítés
Az alaprendszer frissítéséhez futtassuk az alábbi parancsot:
composer update drupal/core "drupal/core-*" --with-all-dependencies
Ezután még az adatbázist is frissítenünk kell:
vendor/bin/drush updatedb
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
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:
Itt is minden rendben.
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:
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:
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.
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/
É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:
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:
Itt kattintsunk a Függő frissítések alkalmazása gombra. Ekkor végigmegy a folyamatjelző, és beadja az utolsó panelt:
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:
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:
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.
- Drupal 9 CMS rendszer telepítése, élesztése
- Drupal 8 alaprendszer frissítése egyszerűen
- Drupal alaprendszer frissítése 8.8-ra
- Enciklopédia - Composer
- Enciklopédia - Drush
- Mit tegyünk, ha a Composer PHP csomagkezelő nagyon lassan halad, akadozik a projektek frissítése közben
- Hogyan távolítsuk el az index.php részeket Drupal alapú CMS rendszerünk URL címeiből
- drupal.org - Docs - Updating Drupal core via Composer
- drupal.org - Docs - Updating Drupal core manually
- A hozzászóláshoz regisztráció és bejelentkezés szükséges
- 175 megtekintés