Drupal 9 alaprendszer frissítése Composer segítségével egyszerűen

botond küldte be 2022. 01. 25., k – 14:10 időpontban

Tartalom

 

Bevezető

A Drupal az alaprendszeréhez (core) rendszeresen ad ki frissítéseket, amelyek lehetnek nagyobb frissítések, vagy csak kisebb hibajavító csomagok. Az alaprendszert többféleképpen lehet frissíteni, amik közül ebben a leírásban a Composer csomagkezelővel történő frissítési módszert tekintjük át. 

 

Alapfeltételek

Ehhez a frissítési módhoz szükség van egyszer egy parancssoros hozzáférésre a tárhelyünkhöz, ami általában SSH-n keresztül kapcsolódik a szerverhez, valamint a parancssorból hozzá kell tudnunk férni a Composer PHP csomagkezelőhöz is. Ha ezekhez nem férünk hozzá, akkor lépjünk kapcsolatba a tárhelyszolgáltatónkkal és kérjünk tőlük segítséget. Ha pedig saját magunk menedzseljük a szerverünket, és nem rendelkezünk a Composer csomagkezelővel, akkor itt tájékozódhatunk annak telepítéséről.

 

Frissítések ellenőrzése

A frissítésekről többféleképpen is értesülhetünk. Először a telepítéskor beállított email címre érkezik egy értesítő, amiben tájékoztat minket a rendszer hogy a Drupal alaprendszeréhez újabb vált elérhetővé, így mielőbbi frissítés ajánlott. Ezután még magunk is ellenőrizhetjük a részleteket az alábbi módokon:

Ellenőrzés a weboldal admin felületén

Drupal alapú weboldaluk admin felületén két helyen is ellenőrizhetjük az alaprendszer új kiadásait:

Adminisztráció -> Bővítés -> Frissítés fül:

Drupal alaprendszer frissíthetőségének ellenőrzése

Illetve

Adminisztráció -> Jelentések -> Elérhető frissítések -> Lista fül:

Drupal alaprendszer frissíthetőségének ellenőrzése #2

Itt mindkét helyen ugyanazt láthatjuk.

Ellenőrzés a parancssorból

A frissítéseket a parancssorból is ellenőrizhetjük a Composer segítségével. Ehhez lépjünk be egy terminálon a weboldal gyökérkönyvtárába, ahol a következő paranccsal ellenőrizhetjük az alaprendszer frissíthetőségét:

composer show "drupal/*" --outdated

Ennek a kimenetének valami ilyesminek kell lennie:

Drupal alaprendszer frissíthetőségének ellenőrzése a parancssorból

Color legend:
- patch or minor release available - update recommended
- major release available - update possible
drupal/core                   9.3.2 9.3.3 Drupal is an open source content management platform powering millions of websites and applications.
drupal/core-composer-scaffold 9.3.2 9.3.3 A flexible Composer project scaffold builder.
drupal/core-project-message   9.3.2 9.3.3 Adds a message after Composer installation.
drupal/core-recommended       9.3.2 9.3.3 Locked core dependencies; require this project INSTEAD OF drupal/core.
drupal/core-vendor-hardening  9.3.2 9.3.3 Hardens the vendor directory for when it's in the docroot.
A Drupal 8.8.0 előtti verziói még nem voltak alapértelmezetten Composer kezelésre beállítva, így például ellenőrizni kellett, hogy a projekt tartalmazza-e a képen látható core csomagokat. És ha igen, akkor lehetett frissíteni. Ha nem, akkor pedig alakítgatni kellett az oldalon. A Drupal 9 esetében a Composer használata szerencsére már teljesen alap dolog, így a képen is ahogy látható, minden szükséges core csomag már a Composer kezelésében áll, már egy friss telepítés esetén is.

Ha tehát meggyőződtünk róla hogy újabb alaprendszer került kiadásra, folytathatjuk is a biztonsági mentéssel.

 

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

A Drupal alaprendszerének frissítése előtt ajánlott az oldal biztonsági mentése (fájlrendszer és adatbázis), mert ha akármi gubanc történik a frissítés során, akkor könnyen vissza tudjuk állítani oldalunk korábbi állapotát.
Valamint, ha van rá lehetőségünk, először egy fejlesztői vagy tesztkörnyezetben végezzük a frissítést, és ha minden rendben működik a frissítés után is, csak akkor hajtsuk végre az éles oldalon is.

 

Drush telepítése

A Drush program használatával tovább fokozhatjuk a Drupal alapú weboldalunk parancssori kezelhetőségét, így például modulokat tudunk telepíteni, be/ki kapcsolni, állapot információkat tudunk lekérdezni a segítségével, és még sok egyéb karbantartási műveletet végre tudunk vele hajtani a weboldallal kapcsolatban. Az alaprendszer frissítésénél most csak az alaprendszer információinak lekérdezésére fogjuk használni, ezzel ellenőrizve a frissítés sikerességét.

Ez csak egy egyszeri művelet, így ha még korábban nem telepítettük a drush csomagot, akkor ezt az alábbi composer paranccsal tudjuk pótolni, amit az oldal webgyökér könyvtárából kell kiadnunk:

composer require --dev drush/drush

Magát a drush parancsot pedig a webgyökér alól a vendor/bin/drush útvonalon érhetjük el innentől, amit célszerű betenni a $PATH-ba, ha gyakran használjuk.

Most, hogy már minden rendelkezésre áll, kezdhetjük is a frissítést.

 

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

A frissítés előtt még ellenőrizhetjük a rendszert a Drush segítségével.

Rendszer ellenőrzése a Drush segítségével

Az alábbi drush paranccsal ellenőrizhetjük rendszerünket a webgyökérből futtatva:

vendor/bin/drush status

Rendszer ellenőrzése frissítés előtt a drush parancs segítségével

 Drupal version   : 9.3.2
 Site URI         : http://default
 DB driver        : mysql
 DB hostname      : localhost
 DB port          : 3306
 DB username      : drupalsuli
 DB name          : drupalsuli
 Database         : Connected
 Drupal bootstrap : Successful
 Default theme    : bartik
 Admin theme      : seven
 PHP binary       : /usr/bin/php7.4
 PHP config       : /etc/php/7.4/cli/php.ini
 PHP OS           : Linux
 Drush script     : /var/www/clients/client0/web2/web/vendor/bin/drush
 Drush version    : 10.6.2
 Drush temp       : /tmp
 Drush configs    : /var/www/clients/client0/web2/web/vendor/drush/drush/drush.yml
 Install profile  : standard
 Drupal root      : /var/www/clients/client0/web2/web
 Site path        : sites/default
 Files, Public    : sites/default/files
 Files, Temp      : /tmp

Itt láthatjuk az alaprendszer főbb információit. A frissítés után újra ellenőrizzük majd.

Egyedi fájlok lementése

A Drupal alaprendszer kiadásának oldalán tájékozódjunk, hogy az adott frissítés melyik fájlokat érinti. Néha olyan is előfordul, hogy az alábbi fájlok is módosulnak:

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

Ha ezek közül változik valamelyik, amiben időközben saját módosításokat hajtottunk végre, akkor a frissítés előtt mentsük le a sajátunkat, majd a frissítés után újra alkalmazni kell a módosításainkat.

Karbantartási mód bekapcsolása

Ha nincs lehetőségünk fejlesztői környezetben frissíteni az oldalt, hanem éles oldalon hajtjuk végre, akkor előtte kapcsoljuk be a karbantartási módot, hogy közben a külső forgalom ne tudja befolyásolni az adatbázist. A karbantartási módot kétféleképpen tudjuk bekapcsolni:

Admin felületen

Adminisztráció -> Beállítás -> Fejlesztés -> Karbantartási mód opció:

Karbantartási mód bekapcsolása az admin felületen

Itt jelöljük be a "Webhely használata karbantartási módban" opciót, majd mentsük le az űrlapot.

Parancssorban

A parancsorban a drush paranccsal tudjuk bekapcsolni a karbantartási módot. Ehhez lépjünk a webgyökérbe, és onnan futtassuk az alábbi parancsokat:

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

Karbantartási mód bekapcsolása a parancssorból

A második parancs az oldal gyorsítótárát építi újra, így ennek hatására a a külső oldalakon is érvényesül a beállítás, ahol egy üzenet jelenik meg, amiben tájékoztatja a látogatókat a karbantartásról.

Frissítés

Az alaprendszer frissítéséhez futtassuk az alábbi parancsot, szintén a webgyökérből:

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

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

Majd frissítsük az adatbázist is a drush paranccsal:

vendor/bin/drush updatedb

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

Itt a legtöbb esetben nem történik változás az adatbázisban, de időnként előfordul. Ilyenkor fel szokta sorolni a változtatásokat, majd utána rákérdez hogy folytathatja-e. Ha ilyen van, akkor természetesen folytassa a szükséges módosításokkal. Például a Linuxportálon bemutatott alaprendszer frissítés során pont volt adatbázis frissítés is, ezt itt tekinthetjük meg.

Egyedi fájlok visszaállítása

Ha voltak egyedi módosításaink, amik miatt le kellett menteni adott fájlokat, akkor az azokban elvégzett módosításokat most ismételjük meg a frissített fájlokban.

A saját, módosított fájljaink és a frissítéssel kapott új fájlok közötti különbségeket könnyen ellenőrizhetjük a diff parancs segítségével:

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

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 parancsokat a webgyökérből:

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

Rendszer ellenőrzése

Ha idáig mindennel megvagyunk, ellenőrizzük ismét a Drupal alaprendszert a drush paranccsal:

vendor/bin/drush status

Drupal 9 alaprendszer ellenőrzése a frissítés után a drush paranccsal

 Drupal version   : 9.3.3
 Site URI         : http://default
 DB driver        : mysql
 DB hostname      : localhost
 DB port          : 3306
 DB username      : drupalsuli
 DB name          : drupalsuli
 Database         : Connected
 Drupal bootstrap : Successful
 Default theme    : bartik
 Admin theme      : seven
 PHP binary       : /usr/bin/php7.4
 PHP config       : /etc/php/7.4/cli/php.ini
 PHP OS           : Linux
 Drush script     : /var/www/clients/client0/web2/web/vendor/bin/drush
 Drush version    : 10.6.2
 Drush temp       : /tmp
 Drush configs    : /var/www/clients/client0/web2/web/vendor/drush/drush/drush.yml
 Install profile  : standard
 Drupal root      : /var/www/clients/client0/web2/web
 Site path        : sites/default
 Files, Public    : sites/default/files
 Files, Temp      : /tmp

A verzió a megfelelőre változott. Még megnézhetjük az adminban is:

Drupal 9 alaprendszer ellenőrzése a frissítés után az admin felületen

 

Konklúzió

Így frissíthetjük Drupal 9 alaprendszerünket a composer és a drush parancsokkal, aminek a lényege tulajdonképpen néhány parancssor futtatása, azonban ajánlott a frissítés előtti és utáni dolgokat is végrehajtani, hogy Drupal weboldalunk alaprendszerének frissítését biztonságosan végezhessük. Természetesen van ezen kívül más módja is a frissítésnek, erről a lenti Linuxportál-os linkeken tájékozódhatunk, azonban itt ezen az oldalon elsősorban a composer-es megoldásokra fókuszálunk.