Drupal 8 alaprendszer frissítése egyszerűen

botond küldte be 2018. 09. 08., szo – 04:52 időpontban

Tartalom

 

Bevezető

A napokban kiadott újabb Drupal 8 alaprendszer frissítőcsomag kapóra jön a mai leírás elkészítéséhez, melyben frissítjük a Drupal 8 CMS rendszerünket.

Az alaprendszer frissítését bármilyen Drupal 8 alapú weboldalnál el lehet végezni, én ebben a leírásban a Debian 8 tökéletes szerverre korábban telepített Debian 8 rendszerrel fogom elvégezni. Ennek megfelelően a következő feltöltött szerver verzió már tartalmazni fogja ezt a frissítést is.

 

Frissítés (2021-02-25):
Elkészült a Drupal 9 alaprendszerhez is a frissítési útmutató:

 

 

Frissítési értesítés

Amikor a Drupal kiad egy újabb alaprendszer frissítőcsomagot, arról weboldalunk automatikusan értesül, és emailben figyelmeztet minket a frissítési teendőkről. Ezután ha belépünk az oldal admin menüjében a Bővítés főmenübe, akkor itt is láthatjuk az értesítőt, miszerint egy újabb alaprendszer frissítés érhető el:

Drupal 8 alaprendszer frissítése - Frissítési értesítő

Ha követjük az értesítő panelen lévő linket, akkor bővebb információt kapunk a frissítésről:

Drupal 8 alaprendszer frissítése - Kézi frissítés szükséges

Ezen az oldalon láthatjuk, hogy mikor ellenőrizte utoljára a rendszer az elérhető frissítéseket, valamint hogy nem modul frissítésről van szó, amit néhány kattintással frissíthetünk, hanem alaprendszer frissítést kell elvégeznünk, ami egy kicsit bonyolultabb. És láthatjuk a listát, amiben most éppen egy tétel szerepel: Drupal core, és hogy a jelenlegi 8.5.6-os verziónknál már van újabb, a 8.6.0. Itt 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.

Most éppen pont egy olyan ritka esettel állunk szemben, hogy 2018. szeptember 5-én egyszerre két verziót is kiadtak, a 8.5.7-es és a 8.6.0-ás verziókat. A 8.5.7-es verzió itt apróbb javításokat tartalmaz, a 8.6.0-ás leírása szerint pedig ez a Drupal 8 első olyan verziója, ami teljes mértékben támogatja a Drupal 7 migrációját. Tehát itt többről van szó, mint apróbb hibajavításokról. Értelemszerűen most ezt a 8.6.0-ás frissítést fogjuk feltenni, mivel a rendszer is ezt ajánlotta nekünk. Erről a verzióról még itt olvashatunk részletesebben, hogy milyen újdonságokat tartalmaz.

Idáig rendben is van, de hogyan kezdjünk neki a frissítésnek?

Ha felkeressük a Drupal frissítésével foglalkozó dokumentációs oldalát, akkor elsőre egy útvesztőben találjuk magunkat, ahol egyszerre többféle megoldást kínálnak nekünk:

Így akik először állnak a Drupal 8 alaprendszer frissítése előtt, azoknak fejtörést okozhat ez a sokféle frissítési módszer. Én már próbáltam mindegyiket az elején, de voltak gondjaim velük, macerásak voltak, némely esetben nem is sikerült a frissítés, mert több modult is a Composerrel raktam fel, ami után már másképp kell frissíteni, stb. Így idővel összeállt egy saját módszer, amit én is alkalmazok a frissítésekkor.

Ebben a leírásban bemutatom a saját bevált módszeremet, amivel egyszerűen, kényelmesen, gyorsan és minimális kieséssel lehet elvégezni a frissítést. A módszerem kicsit mindhárom fenti opcióra hajaz, de megbízhatóan működik.

A leírás hosszabbnak tűnhet a valós elkészítésnél, mert itt részletesen kitérek több mindenre, amikkel szembe találkozhatunk a frissítés során.

 

 

Előfeltételek

Mindegyik módszernél vannak alapfeltételek, amik nélkül nem végezhetjük el a frissítést, az én módszeremnél is van néhány, itt összegyűjtöm őket, hogy ne a frissítés közben kelljen kapkodni bármi után is. Ezeket csak egyszer kell beszerezni/telepíteni, és ha már rendelkezésre állnak, maga a frissítés roppant egyszerűvé válik, ezért hosszabb távon megtérül.

Terminál, SSH hozzáférés

Mivel ennek az oldalnak a fő témájához tartoznak a parancssori (CLI) megoldások, így most is szükségünk lesz SSH hozzáférésre, ami már alapkelléke egy mai webtárhely szolgáltatásnak. Ha nem magunk üzemeltetjük a szervert/tárhelyet, hanem előfizetünk egy tárhely szolgáltatásra, akkor előfordulhat, hogy kérni kell az üzemeltetőtől SSH hozzáférést. De ilyenkor előbb érdemes körülnézni a szolgáltatásban kapott web hoszting kezelőpanelünkben, mert esélyes, hogy például egy cPanelben ott csücsül az SSH hozzáférés ikonja.

A frissítést úgy végezzük el, hogy lehetőleg ne legyen szükség root jogosultságra, hanem elég legyen csak a tárhelyhez kapcsolt alap felhasználói hozzáférésre, így a legáltalánosabb esetekben is működni fog.

Composer PHP csomagkezelő

Akik még nem ismerik a Composer PHP csomagkezelőt, azoknak érdemes átfutni róla egy rövid leírást, valamint a telepítési útmutatóját. Itt annyit érdemes tudni, hogy ez az útmutató root jogosultságokkal mutatja be a Composer globális módú telepítését, de mivel fentebb írtam hogy itt nem lesz szükség root jogosultságra, így feltelepíthető lokálisan is a tárhelyünk bármely könyvtárába. Célszerű betenni az elérési útba, hogy kényelmesen tudjuk használni.

Git

A Git verziókezelő rendszer nem a Debian alap rendszer része, de általában fel szokták telepíteni web hoszting környezetekben. Ha mégsem lenne elérhető a parancssorból, kérjük meg a rendszergazdát, hogy telepítse fel. Amennyiben magunk üzemeltetjük a szervert, akkor telepítsük a következő apt-get paranccsal:

sudo apt-get install git

Drush

A Drush a Drupal rendszer Shell-je, amivel parancssorból tudjuk kezelni az egész rendszert. Terminálban lépjünk be a Drupal rendszerünk fő könyvtárába, majd onnan adjuk ki a következő parancsot:

composer require drush/drush

 

Frissítés előtti előkészületek

Biztonsági mentés

Frissítések előtt mindig készítsünk biztonsági mentést a teljes weboldalról és az adatbázisról. Erről részletesebben egy másik leírásban található információ.

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

Ezután a Drupal frissítő csomagjának oldaláról mentsük le vágólapra a megfelelő verzió tar.gz linkjét, majd terminálban töltsük le a wget paranccsal a webtárhelyünk egy alkönyvtárába, ahol aztán kicsomagoljuk. Lépjünk be a webtárhelyünk fő könyvtárába, majd hajtsuk végre a műveletet:

mkdir tmp
cd tmp
wget https://ftp.drupal.org/files/projects/drupal-8.6.0.tar.gz
tar -xvzf drupal-8.6.0.tar.gz
cd drupal-8.6.0/

Természetesen az aktuális verziószámokkal dolgozzunk, ami éppen a legfrissebb.

Fájleltérések vizsgálata

A frissítőcsomag dokumentációs oldalán figyelmesen olvassuk végig, hogy miket változtattak. A következőkre figyeljünk, hogy említik-e az alábbi fájlok módosulását:

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

Ez az a három fájl, amit a weboldal üzemeltetése során változtatni szokás, így ezeknek a módosulására kell figyelnünk. Persze a többi fájlt is vizsgáljuk meg a főkönyvtárban, de azokat nem szokás módosítani a webmestereknek, így ha azokban történt változás, akkor a lenti bemásolásos résznél be kell őket is másolni.

Amikor módosítják valamelyiket, arról tájékoztatják a felhasználót a leírásban. Én még biztos, ami biztos alapon először össze szoktam hasonlítani az új frissítőcsomagban lévő fájlokat az előző verziójú frissítőcsomagban lévőkkel is, hogy kizárhassam a módosulásukat (módosítási dátum, pontos fájlméret). Ha nincs eltérés közöttük, akkor nincs velük teendő. Szerencsére ez a leggyakoribb eset.

Nagyon ritkán, amikor valamelyik fájlt módosították a frissítőcsomagban, akkor figyelnünk kell rá, hogy ha a weboldal működtetése során mi is módosítottunk a fájlban valamit, akkor azt össze kell fésülni a frissítőcsomagban lévő változtatásokkal.

Például az előfeltételeknél már kapásból módosult a composer.json fájlunk, amikor feltelepítettük a Drush programot. Vagy például a Drupal telepítésekor módosítottuk a settings.php fájlt, amikor beállítottuk a trusted hosts részt...

Tehát ilyesmikre kell figyelnünk. Szerencsére ez nagyon ritka eset, de ilyenkor a saját módosításainkat át kell pakolgatni a kicsomagolt frissítőcsomag megfelelő fájljaiba, és aztán majd a másolási fázisban egyszerre másolunk be mindent, hogy egy lépésben másoljunk be mindent a frissítés idején.

 

 

Drupal 8 alaprendszer frissítése

Ha idáig mindennel megvagyunk, akkor innentől már gyerekjáték a Drupal 8 alaprendszer frissítése.

Karbantartási mód

Az oldalt át kell állítani karbantartási módba, hogy ne legyen fennakadás a frissítési folyamat közben. Ebben a módban a látogatók egy előre beállított szöveget fognak látni és átmenetileg nem férnek hozzá az oldal többi részéhez.

Ezt korábban is megtehettük volna, de egy éles oldal esetén több kiesést jelent, ha indokolatlanul korán állítjuk át az oldalt, hiszen idáig még nem történt beavatkozás az oldal működésébe. Tehát most lépjünk be az adminba, azon belül a Konfiguráció főmenübe és alatta a Karbantartási mód almenübe. Ekkor ez az oldal fogad bennünket:

Drupal 8 alaprendszer frissítése - Karbantartási mód

 

Jelöljük be a Webhely használata karbantartási módban részt, majd mentsük le az űrlapot.

Core és Vendor könyvtárak törlése és bemásolása

Innentől tehát nem érhető el az oldal a látogatók számára, így feleslegesen ne időzzünk, hanem lépjünk is át a terminálba a weboldal fő könyvtárába, majd töröljük le a core/ és a vendor/ könyvtárakat:

rm -rf core/
rm -rf vendor/

Ezután pótoljuk ezt a két könyvtárat a frissítőcsomagból:

cp -r tmp/drupal-8.6.0/core/ .
cp -r tmp/drupal-8.6.0/vendor/ .

Eltérő fájlok bemásolása (opcionális)

Ha a fájl eltérések vizsgálata során voltak eltérő fájlok, és elvégeztük az eltérések összefésülését a telepítőcsomagban lévő fájlokban, akkor másoljuk be ezeket a fájlokat is és írjuk felül a meglévőket velük.

Rendszer frissítése a Composer programmal

Futtassuk a composer frissítést:

composer install

Ez elvégzi a függőségek vizsgálatától kezdve a friss rendszercsomagok letöltéséig mindent. Ezután frissítsük az adatbázist a Drush programmal, majd építsük újra a cache-t:

vendor/bin/drush updatedb
vendor/bin/drush cr

A frissítésnél rákérdezhet dolgokra, ott írjuk be a yes szót, majd enter.

 

A Drush-os frissítésnek nagy előnye a böngészőben történő frissítéssel (update.php) szemben, hogy ha valami gubanc van, például egy hibásan működő modul megreccsen az új alapverziótól, akkor a böngészőben kapunk egy Internal Server Error üzenetet, innentől rosszabb esetben be se jön többet az oldal, ami roppant idegesítő tud lenni és még csak meg sem tudjuk a hiba okát, maximum bogarászhatjuk a log fájlokat. A Drush-al történő frissítés közben pedig ha bármi hiba lép fel, azt kellő részletességgel kiírja, amit utána jó eséllyel tudunk javítani.

 

Karbantartási mód kikapcsolása

Végül a böngészőben vegyük ki a pipát a karbantartási módról és mentsük le újra az űrlapot.

Ezzel készen is van az alaprendszer frissítése, újra elérhető az oldal.

 

 

Konklúzió

A leírás hossza ellenére azért látható, hogy a lényeg a karbantartási mód be és kikapcsolása között igen hamar lezajlott, amivel minimalizáltuk a weboldal kiesését. A gyakorlatban ez nagyon fontos, hiszen a kiesett időtartamban látogatókat veszíthetünk el, továbbá átmenetileg a keresőknél is visszaeshet az oldal rangsorolása, ha hosszabb ideig nem tudja indexelni az oldalakat. Ez pedig további látogatóvesztéshez vezet.

Ezért is célszerű minden egyéb babrálós részt a karbantartási mód előtt elvégezni, például ellenőrizni az előfeltételek meglétét, letölteni és kicsomagolni a frissítőcsomagot, valamint a fájl összehasonlításokat elvégezni, stb, mert addig sem áll az oldal, így bőven van időnk, nem kell kapkodni semmivel. Maga a tényleges frissítés pedig – kellő rutin esetén – lezajlik körülbelül 1 percen belül.

Valamint érdemes ezt az egészet mondjuk éjjel végezni, amikor általában alacsony a forgalom a weboldalon.

Persze egy friss Drupal telepítésnél még aligha vannak látogatók, amikor az ember először begyakorolja ezt. Itt csak szemléltetni akartam, hogy egy nagyobb forgalmú oldal esetén ennek már van jelentősége. De addigra már rutinból megy az egész.