Drupal alaprendszer frissítése 8.8-ra

botond küldte be 2019. 12. 18., sze – 15:26 időpontban

Tartalom

 

Bevezető

A Drupal 2019. december 4-én adta ki a jelenleg legfrissebb alaprendszerét, a 8.8.0-át. Korábban már volt róla szó, hogyan frissíthetjük egyszerűen a Drupal alaprendszert, azonban ebben a kiadásban már több minden változott, így egy kicsit jobban a mélyére kell nyúlni a dolgoknak. Mivel a frissítés kicsit macerásabb, mint az apróbb patch-eket tartalmazó alaprendszer frissítések, ezért gondoltam megér itt egy misét. Ebben a leírásban tehát megnézzük, hogyan frissíthetjük Drupal alaprendszerünket a 8.7.10-es verzióról a 8.8.0-ára.

 

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

 

 

Előfeltételek

A Drupal az alaprendszer frissítéséhez többféle módszert is kínál, itt most is a Composer segítségével fogjuk elvégezni a frissítést.

Itt most nem megyek bele olyan mélyen az egyes szükséges alapfeltételek részleteibe, mert ezeket a korábbi útmutatóban már bemutattam, így most csak felsorolom őket. Tehát a sikeres frissítés végrehajtásához az alábbiakra van most is szükségünk:

 

Biztonsági mentés

Frissítések előtt mindig készítsünk biztonsági mentést a weboldal teljes fájlstruktúrájáról és az adatbázisról. Erről egy másik leírásban lesz szó részletesebben.

Valamint, ha van rá lehetőségünk, akkor először egy tesztkörnyezetben végezzük el a frissítést, és csak azután az éles oldalunkon.

 

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

Töltsük le és csomagoljuk ki a Drupal 8.8.0 telepítőcsomagját a /tmp könyvtárunkba:

cd /tmp
wget https://ftp.drupal.org/files/projects/drupal-8.8.0.tar.gz
tar -xzf drupal-8.8.0.tar.gz
cd drupal-8.8.0/

 

Fájleltérések kezelése

A korábbi Drupal alaprendszer frissítős leírástól eltérően most pontosan tudjuk hogy mik az új kiadásban az eltérések, így ezeknek az összevetésére koncentrálunk. A Drupal 8.8.0 kiadás részleteiről itt olvashatunk.

Az itt következő fájlok módosításait éles környezet esetén célszerűbb ha az eredeti fájlok másolatain végezzük el, és a végén egyben írunk felül mindent, hogy minél kevesebb legyen az állásidő. Ha pedig tesztkörnyezetben hajtjuk végre, akkor pedig felülírhatjuk a célfájlokat direktben.

composer.json

A Drupal rendszerünk webgyökerében lévő composer.json fájl írja le, hogy milyen extra modulokból épül fel az oldal. Nem minden modult lehet a webes felületen keresztül telepíteni, hanem ezeket a composer PHP csomagkezelő segítségével telepítjük. A composer.json fájl többek között az így felkerült modulok neveit is tárolja, hogy frissítéskor tudja a rendszer, hogy mely csomagokat kell újra letöltenie.

Első körben nézzünk bele a korábbi Drupal verzió (8.7.10) composer.json gyári fájljába:

{
    "name": "drupal/drupal",
    "description": "Drupal is an open source content management platform powering millions of websites and applications.",
    "type": "project",
    "license": "GPL-2.0-or-later",
    "require": {
        "composer/installers": "^1.0.24",
        "wikimedia/composer-merge-plugin": "^1.4"
    },
    "replace": {
        "drupal/core": "^8.7"
    },
    "minimum-stability": "dev",
    "prefer-stable": true,
    "config": {
        "preferred-install": "dist",
        "autoloader-suffix": "Drupal8"
    },
    "extra": {
        "_readme": [
            "By default Drupal loads the autoloader from ./vendor/autoload.php.",
            "To change the autoloader you can edit ./autoload.php.",
            "This file specifies the packages.drupal.org repository.",
            "You can read more about this composer repository at:",
            "https://www.drupal.org/node/2718229"
        ],
        "merge-plugin": {
            "include": [
                "core/composer.json"
            ],
            "recurse": true,
            "replace": false,
            "merge-extra": false
        },
        "installer-paths": {
            "core": ["type:drupal-core"],
            "modules/contrib/{$name}": ["type:drupal-module"],
            "profiles/contrib/{$name}": ["type:drupal-profile"],
            "themes/contrib/{$name}": ["type:drupal-theme"],
            "drush/contrib/{$name}": ["type:drupal-drush"],
            "modules/custom/{$name}": ["type:drupal-custom-module"],
            "themes/custom/{$name}": ["type:drupal-custom-theme"]
        }
    },
    "autoload": {
        "psr-4": {
            "Drupal\\Core\\Composer\\": "core/lib/Drupal/Core/Composer"
        }
    },
    "scripts": {
        "pre-autoload-dump": "Drupal\\Core\\Composer\\Composer::preAutoloadDump",
        "post-autoload-dump": "Drupal\\Core\\Composer\\Composer::ensureHtaccess",
        "post-package-install": "Drupal\\Core\\Composer\\Composer::vendorTestCodeCleanup",
        "post-package-update": "Drupal\\Core\\Composer\\Composer::vendorTestCodeCleanup",
        "drupal-phpunit-upgrade-check": "Drupal\\Core\\Composer\\Composer::upgradePHPUnit",
        "drupal-phpunit-upgrade": "@composer update phpunit/phpunit phpspec/prophecy symfony/yaml --with-dependencies --no-progress",
        "phpcs": "phpcs --standard=core/phpcs.xml.dist --runtime-set installed_paths $($COMPOSER_BINARY config vendor-dir)/drupal/coder/coder_sniffer --",
        "phpcbf": "phpcbf --standard=core/phpcs.xml.dist --runtime-set installed_paths $($COMPOSER_BINARY config vendor-dir)/drupal/coder/coder_sniffer --"
    },
    "repositories": [
        {
            "type": "composer",
            "url": "https://packages.drupal.org/8"
        }
    ]
}

Ezután nézzük meg az újabb kiadásban lévőt (8.8.0):

{
    "name": "drupal/legacy-project",
    "description": "Project template for Drupal 8 projects with composer following drupal/drupal layout",
    "type": "project",
    "license": "GPL-2.0-or-later",
    "homepage": "https://www.drupal.org/project/drupal",
    "support": {
        "docs": "https://www.drupal.org/docs/user_guide/en/index.html",
        "chat": "https://www.drupal.org/node/314178"
    },
    "repositories": [
        {
            "type": "composer",
            "url": "https://packages.drupal.org/8"
        }
    ],
    "require": {
        "composer/installers": "^1.2",
        "drupal/core-composer-scaffold": "^8.8",
        "drupal/core-project-message": "^8.8",
        "drupal/core-recommended": "^8.8",
        "drupal/core-vendor-hardening": "^8.8"
    },
    "require-dev": {
    },
    "conflict": {
        "drupal/drupal": "*"
    },
    "minimum-stability": "dev",
    "prefer-stable": true,
    "config": {
        "sort-packages": true
    },
    "extra": {
        "drupal-scaffold": {
            "locations": {
                "web-root": "./"
            }
        },
        "installer-paths": {
            "core": ["type:drupal-core"],
            "libraries/{$name}": ["type:drupal-library"],
            "modules/contrib/{$name}": ["type:drupal-module"],
            "profiles/contrib/{$name}": ["type:drupal-profile"],
            "themes/contrib/{$name}": ["type:drupal-theme"],
            "drush/Commands/contrib/{$name}": ["type:drupal-drush"],
            "modules/custom/{$name}": ["type:drupal-custom-module"],
            "themes/custom/{$name}": ["type:drupal-custom-theme"]
        },
        "drupal-core-project-message": {
            "include-keys": ["homepage", "support"],
            "post-create-project-cmd-message": [
                "<bg=blue;fg=white>                                                         </>",
                "<bg=blue;fg=white>  Congratulations, you’ve installed the Drupal codebase  </>",
                "<bg=blue;fg=white>  from the drupal/legacy-project template!               </>",
                "<bg=blue;fg=white>                                                         </>",
                "",
                "<bg=yellow;fg=black>Next steps</>:",

                "  * Install the site: https://www.drupal.org/docs/8/install",
                "  * Read the user guide: https://www.drupal.org/docs/user_guide/en/index.html",
                "  * Get support: https://www.drupal.org/support",
                "  * Get involved with the Drupal community:",
                "      https://www.drupal.org/getting-involved",
                "  * Remove the plugin that prints this message:",
                "      composer remove drupal/core-project-message"
            ]
        }
    }
}

Már első ránézésre is látható, hogy van köztük rendesen különbség.

 

 

Ha eddig nem telepítettünk semmit a Composer PHP csomagkezelővel, akkor ezzel nincs semmi dolgunk, csak felül kell írnunk az újjal, amikor egyben elvégezzük a fájlműveleteket. Addig ne csináljunk vele semmit.

Ha viszont telepítettünk már modulokat a composerrel, akkor bizony megváltozott annak a tartalma. Ilyenkor össze kell fésülni a változásokat. Ez azt jelenti, hogy amilyen változások bekerültek a composer.json fájlunkba az eredetihez képest, pontosan ugyanezeket kell betenni a megfelelő helyekre az újban is.

Erre használhatjuk a linux diff parancsot is, de szerintem kényelmesebb és áttekinthetőbb, ha egy szerkesztőprogramban megnyitjuk az eredeti composer.json fájlt, és a sajátunkat, majd soronként összevetjük a különbségeket, amiket kiírunk egy átmeneti fájlba, csak hogy elkülönítve is meglegyenek a változások.

A saját konkrét példámmal bemutatva nálam ezek kerültek be a composer.json fájlba az elmúlt kb. 2 évben:

    "require": {
    	...,
    	..., 		(fontos, hogy vesszővel végződjön minden olyan sor, ami után még van további sor!)
    	A hozzáadott rész:


        "drush/drush": "^9.2",
		"jackmoore/colorbox": "1.6.4",
        "drupal/geshifilter": "^1.2",
        "drupal/amptheme": "^1.0",
        "drupal/superfish": "^1.2",
        "drupal/amp": "^2.1",
        "masterminds/html5": "2.3.1"


[...]

    "extra": {
    	...,
        "installer-paths": {
			...,
			...,
			a hozzáadott rész (ez már benne van a Drupal 8.8 gyári composer fájljában is!):
        
			"libraries/{$name}": ["type:drupal-library"]

[...]

    "repositories": [
        {
        	...
        },				(vesszővel zárul!)
        
        És a hozzáadott rész:
        
		{
			"type": "package",
			"package": {
				"name": "jackmoore/colorbox",
				"version": "1.6.4",
				"type": "drupal-library",
				"dist": {
				  "url": "https://github.com/jackmoore/colorbox/archive/1.6.4.zip",
				  "type": "zip"
				}
			}
		}

Itt tehát 3 részt különböztethetünk meg: require, extra/installer-paths és a repositories.

Fontos!
Nagyon fontos, hogy betartsuk a JSON struktúra szintaktikai szabályait, különben hibát fog dobni a frissítő.
Elsősorban a sorok végi vesszőkre kell figyelnünk. Tehát ha egy blokkba beteszünk egy újabb sort, akkor ügyeljünk, hogy az előző sort vesszővel zárjuk, ami után bekerült az újabb sor.

A fenti részekben csak azért kommenteltem, hogy jobban érthető legyen a beillesztés menete.

Ezután nyissuk meg az új Drupal kiadásban lévő (8.8.0) composer.json fájlt, majd tegyük be a megfelelő helyekre ezeket a módosításokat. Ennek megfelelően nálam így néz ki az új composer.json fájl:

{
    "name": "drupal/legacy-project",
    "description": "Project template for Drupal 8 projects with composer following drupal/drupal layout",
    "type": "project",
    "license": "GPL-2.0-or-later",
    "homepage": "https://www.drupal.org/project/drupal",
    "support": {
        "docs": "https://www.drupal.org/docs/user_guide/en/index.html",
        "chat": "https://www.drupal.org/node/314178"
    },
    "repositories": [
        {
            "type": "composer",
            "url": "https://packages.drupal.org/8"
        },
		{
			"type": "package",
			"package": {
				"name": "jackmoore/colorbox",
				"version": "1.6.4",
				"type": "drupal-library",
				"dist": {
				  "url": "https://github.com/jackmoore/colorbox/archive/1.6.4.zip",
				  "type": "zip"
				}
			}
		}
    ],
    "require": {
        "composer/installers": "^1.2",
        "drupal/core-composer-scaffold": "^8.8",
        "drupal/core-project-message": "^8.8",
        "drupal/core-recommended": "^8.8",
        "drupal/core-vendor-hardening": "^8.8",
        "drush/drush": "^9.2",
		"jackmoore/colorbox": "1.6.4",
        "drupal/geshifilter": "^1.2",
        "drupal/amptheme": "^1.0",
        "drupal/superfish": "^1.2",
        "drupal/amp": "^2.1",
        "masterminds/html5": "2.3.1"
    },
    "require-dev": {
    },
    "conflict": {
        "drupal/drupal": "*"
    },
    "minimum-stability": "dev",
    "prefer-stable": true,
    "config": {
        "sort-packages": true
    },
    "extra": {
        "drupal-scaffold": {
            "locations": {
                "web-root": "./"
            }
        },
        "installer-paths": {
            "core": ["type:drupal-core"],
            "libraries/{$name}": ["type:drupal-library"],
            "modules/contrib/{$name}": ["type:drupal-module"],
            "profiles/contrib/{$name}": ["type:drupal-profile"],
            "themes/contrib/{$name}": ["type:drupal-theme"],
            "drush/Commands/contrib/{$name}": ["type:drupal-drush"],
            "modules/custom/{$name}": ["type:drupal-custom-module"],
            "themes/custom/{$name}": ["type:drupal-custom-theme"]
        },
        "drupal-core-project-message": {
            "include-keys": ["homepage", "support"],
            "post-create-project-cmd-message": [
                "<bg=blue;fg=white>                                                         </>",
                "<bg=blue;fg=white>  Congratulations, you’ve installed the Drupal codebase  </>",
                "<bg=blue;fg=white>  from the drupal/legacy-project template!               </>",
                "<bg=blue;fg=white>                                                         </>",
                "",
                "<bg=yellow;fg=black>Next steps</>:",

                "  * Install the site: https://www.drupal.org/docs/8/install",
                "  * Read the user guide: https://www.drupal.org/docs/user_guide/en/index.html",
                "  * Get support: https://www.drupal.org/support",
                "  * Get involved with the Drupal community:",
                "      https://www.drupal.org/getting-involved",
                "  * Remove the plugin that prints this message:",
                "      composer remove drupal/core-project-message"
            ]
        }
    }
}
Ez természetesen mindenkinél más, csak példának mutattam be ezeket a composer.json részleteket. Így ennek analógiájára mindenki végezze el a saját composer.json fájljának módosítását.

Később még javítanunk kell ebben, most szándékosan benne hagytam egy kompatibilitási hibát okozó verziószámot, hogy majd az esetleges hibák orvoslását is el tudjuk végezni. Egyelőre most csak mentsük le ezt a composer.json fájlt egy külön helyre. Ha viszont tesztkörnyezetben dolgozunk, akkor már le is menthetjük a helyére.

 

 

.htaccess

A .htaccess fájlban is történt változás, viszont itt csak egy apróbb. Ezért ha már vannak saját kiegészítéseink benne, akkor egyszerűbb, ha ezt az apró változtatást végezzük el a sajátunkban.

A diff paranccsal lekérjük a két Drupal kiadás .htaccess fájljai közötti eltérést. Nálam a tesztkörnyezetem tárhelyének tmp könyvtárába le van töltve mindkét Drupal telepítőcsomag, így az alábbi paranccsal kényelmesen listázhatom ki a különbségeket:

diff drupal-8.7.10/.htaccess drupal-8.8.0/.htaccess

A kimeneten pedig jól látszik, hogy egyetlen sorban van csak eltérés:

Drupal alaprendszer frissítés - .htaccess fájlok közötti eltérések vizsgálata

Másoljuk ki a második példányt – ami az újabb fájból származik – majd illesszük be a .htaccess fájlunkba az eredeti sort felülírva. Ezt elvégezhetjük az éles oldalon is, nem fog hibát okozni.

Itt a sor elején lévő ">" karakterre ügyeljünk, hogy ez nem a tartalom része, hanem csak a diff parancs jelzi így nekünk, hogy melyik fájból származik a részlet. Ez esetben a második paraméterként megadott fájlból. Tehát a .htaccess fájlba csak onnantól kell beilleszteni, hogy "<FilesMatch ..."

settings.php

És végül a settings.php fájlban kell még elvégeznünk pár apróságot. A settings.php a Drupal webgyökérben lévő sites/default alkönyvtárában található, ami alapból írásvédett. Ahhoz hogy bele tudjunk nyúlni, előbb hozzá kell adni az írás jogot a fájlhoz. Ehhez a Drupal példányunk webgyökerében állva hajtsuk végre a következő parancsokat:

cd sites/default/
chmod u+w settings.php

Majd nyissuk meg szerkesztésre:

nano settings.php

És keressük meg az alábbi részt:

$config_directories['sync'] = 'beállított útvonalunk';

És módosítsuk erre:

$settings['config_sync_directory'] = 'beállított útvonalunk';

Majd pedig keressük ezt:

$config['system.file']['path']['temporary'] = 'temp könyvtárunk útvonala';

És cseréljük ki erre:

$settings['file_temp_path'] = 'temp könyvtárunk útvonala';

Tehát ezeknél a tömb változók és indexeik kerülnek lecserélésre, megtartva a benne lévő értékünket. Forrás.

Végül mentsük le a fájlt, és vegyük le róla az írás jogot:

chmod u-w settings.php
Noha a javításnak ez a módja nagyon egyszerű, én inkább azt javaslom, hogy készítsünk egy másolatot a settings.php fájlunkról, majd írjuk felül az eredetit az újjal, és egyesével állítgassuk be a másolatból a saját beállításainkat. Ez ugyan időigényesebb, és nagyobb odafigyelést kíván, viszont a fájlban lévő kommentek, leírások, tippek már az új rendszerre vonatkoznak, így később ha bármi miatt bele kell nyúlnunk ebbe a fájlba, akkor nem lesz gondunk a megfelelő dokumentációval.

 

Alaprendszer frissítése

Ha megvagyunk a fenti fájlok módosításával, nekiállhatunk a frissítésnek.

Karbantartási mód

Első lépésként állítsuk az oldalt karbantartási módba, ahogyan az előző leírásban is tettük.

Fájlstruktúra műveletek

Következő lépésként írjuk felül a módosított fájlokkal az eredetieket, amennyiben nem a cél helyeken végeztük el a változtatásokat.

Ezután lépjünk be a Drupal rendszerünk webgyökerébe, és töröljük a core/ és vendor/ alkönyvtárakat. Ezek a könyvtárak tartalmazzák a Drupal alaprendszerét, valamint a 3. felektől származó modulokat. A saját beállításaink nem vesznek el, azok nem ezekben a könyvtárakban kerülnek tárolásra. 

Lépjünk tehát a Drupal rendszerünk webgyökerébe, és adjuk ki a törlő parancsot:

rm -rf core/ vendor/

Ezután még töröljük le a composer.lock fájlt is, amit az ez után következő frissítés újra fog építeni:

rm composer.lock

Valamint adjunk írás jogot a sites/default könyvtárra. Alapból biztonsági okok miatt a rendszer leveszi erről a könyvtárról az írásjogot, viszont a composer futása közben törölni akarja ebből a könyvtárból a default.services.yml fájlt, hogy felülírja az újjal. Viszont jogosultság hiányában nem tudja törölni, ezért hibaüzenettel leáll a frissítés. Hogy ezt elkerüljük, adjunk tehát írásjogot erre a könyvtárra a webgyökérben futtatott paranccsal:

chmod +w sites/default/
Korábban nem volt ezzel gond. Valószínű régebben nem törölni próbálta a fájlt és az újat a helyére másolni, hanem csak módosíthatta a tartalmát, amihez elegendő volt magán a fájlon lévő írásjog. De újabban már csak így fut le a composer frissítő scriptje. A frissítés után természetesen újra lekerül a most hozzáadott írásjog a könyvtárról.

Frissítés a composer paranccsal

A webgyökérben maradva futtassuk az alábbi parancsot:

composer update --with-dependencies

Eltérően a korábbi frissítős leírás ezen részétől itt most nem másoljuk be az új telepítőcsomagból a core és vendor könyvtárakat (persze így is lehetne), hanem egy teljes frissítést futtatunk, ami letölt minden szükséges csomagot, és újraépíti a core és a vendor könyvtárainkat a megfelelő verziókból álló komponensekkel.

Ha szerencsénk van, akkor minden lefut hibátlanul. Ebben az esetben ugorjuk is át a következő részt.

Kompatibilitási hibák elhárítása

Ha nincs szerencsénk, akkor a composer parancs leáll valamilyen hibaüzenettel. Ilyenkor rögtönöznünk kell, de ahogy fentebb már említettem, szándékosan benne hagytam egy nem megfelelő verziószámot a saját composer.json példámban, hogy itt most be tudjam mutatni ennek a fajta hibának a kiküszöbölését.

Nálam tehát megszakadt a frissítés az alábbi hibaüzenettel:

Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - drupal/core-recommended 8.9.x-dev requires masterminds/html5 2.3.0 -> satisfiable by masterminds/html5[2.3.0] but these conflict with your requirements or minimum-stability.
    - drupal/core-recommended 8.8.x-dev requires masterminds/html5 2.3.0 -> satisfiable by masterminds/html5[2.3.0] but these conflict with your requirements or minimum-stability.
    - drupal/core-recommended 8.8.0-rc1 requires masterminds/html5 2.3.0 -> satisfiable by masterminds/html5[2.3.0] but these conflict with your requirements or minimum-stability.
    - drupal/core-recommended 8.8.0-beta1 requires masterminds/html5 2.3.0 -> satisfiable by masterminds/html5[2.3.0] but these conflict with your requirements or minimum-stability.
    - drupal/core-recommended 8.8.0-alpha1 requires masterminds/html5 2.3.0 -> satisfiable by masterminds/html5[2.3.0] but these conflict with your requirements or minimum-stability.
    - drupal/core-recommended 8.8.0 requires masterminds/html5 2.3.0 -> satisfiable by masterminds/html5[2.3.0] but these conflict with your requirements or minimum-stability.
    - Installation request for drupal/core-recommended ^8.8 -> satisfiable by drupal/core-recommended[8.8.0, 8.8.0-alpha1, 8.8.0-beta1, 8.8.0-rc1, 8.8.x-dev, 8.9.x-dev].

Ilyen akkor jön elő, hogyha a composer.json fájlban a "require" részben nem megfelelő verzió van megadva az aktuális alaprendszer számára.

Ugyan pontosan másoltam át a régi composer fájlomból a változott részeket, de ehhez az új alaprendszerhez nem felel meg ennek a komponensnek ez a verziója.

 

 

A megoldás

Nyissuk meg szerkesztésre a composer.json fájlunkat, és állítsuk át a hibaüzenetben feltüntetett verziószámra a megfelelő részt. Tehát nálam az alábbi sort kellett módosítanom:

        "masterminds/html5": "2.3.1"

Erre:

        "masterminds/html5": "2.3.0"

Tehát az újabb alaprendszernek valahogy inkább egy alacsonyabb verziójú mastermind/html5 csomag kellett.

Természetesen ez minden esetben más lehet, itt szintén csak példának írtam le, hogy nálam milyen hiba volt.

A hibaüzenetünknek megfelelően javítsuk a composer.json fájlban lévő verziószámot, majd futtassuk újra a composer parancsot:

composer update --with-dependencies
Persze itt még sajnos előjöhetnek más jellegű hibák is, amikre itt most nem tudok kész megoldásokkal szolgálni, mert nálam szerencsére nem volt nagyobb komplikáció a frissítés során. Ilyen esetekben sajnos utána kell olvasnunk a megoldásnak a Drupal hivatalos oldalain.

Frissítés normál lefutása

Ha minden rendben zajlik, akkor elindul a frissítés, és a csomagok letöltése:

Drupal alaprendszer frissítése - composer update parancs futtatása

Hosszasan töltögeti a csomagokat, majd utána jönnek a javaslatok, hogy melyik csomag helyett mit használjunk inkább, stb. Ezekkel vagy foglalkozunk, vagy nem, nem számítanak hibának. Végül pedig felépíti a composer.lock fájlt:

Drupal alaprendszer frissítése - composer.lock fájl generálása

Adatbázis frissítése a drush paranccsal

Ha minden szépen lefutott, akkor jöhet az adatbázis frissítése. Ezt elvégezhetjük a weben is az update.php futtatásával is, de én inkább a drush parancsot javaslom, mert itt ha bármi gond van, részletes tájékoztatást kapunk a problémáról. Ezzel szemben a webes frissítés ilyenkor megszakad egy Internal Server Error hibaüzenettel, amiből nem sokat tudunk meg, csak ha nekiállunk bogarászni a PHP hiba napló fájlokat.

Amennyiben nem rendelkezünk még a drush pranccsal, a korábbi leírásból megtudhatjuk, hogyan telepítsük azt.

Futtassuk tehát a drush-féle adatbázis frissítést a Drupal webgyökeréből végrehajtott paranccsal:

vendor/bin/drush updatedb

Ekkor felsorolja az esetleges frissíteni valókat, amikre természetesen nyomjunk Entert:

Drupal alaprendszer frissítése - Adatbázis frissítése a drush paranccsal

Itt elég sok mindent kellett frissítenie a rendszernek ebben a 8.8.0 kiadásban, de hiszen pont emiatt is készítettem el ezt a leírást, mert itt több változás történt, mint egy átlagos alaprendszer frissítésnél.

A parancs lefuttatja a szükséges frissítéseket, majd visszakapjuk a shell-ünket. Ilyenkor én még a biztonság kedvéért ki szoktam olvasni a ? környezeti változó értékét is, hogy biztos lehessek benne hogy nem volt semmi hiba:

echo $?

Cahce törlése és a rendszer állapotának lekérdezése

Ezután töröljük a cache-t:

vendor/bin/drush cr

Végül lekérdezzük a rendszerünk állapotát:

vendor/bin/drush status

Ha minden jól ment, akkor ilyesmi kimenetet kapunk:

Drupal alaprendszer frissítése - Drush cache törlése és a rendszer állapotának lekérdezése

A drush parancs elérése nálam be van téve a PATH környezeti változóba, így útvonal megadása nélkül használható.

 

 

Konklúzió

Nálam konkrétan így zajlott ennek a Drupal alapú oldalnak a frissítése, ami kicsit szöszölősebb volt, mint egy sima alverzió frissítés, de kis türelemmel ez is könnyedén elvégezhető.

A frissítés bonyolultsága attól függ, hogy ki mennyi és milyen – Composerrel telepített – modulokat használ az alaprendszeren kívül, ezért ez a forgatókönyv mindenkinél eltérő lehet. Az alap menet azonban minden esetben ugyanaz, így ha ez alapján haladunk, akkor kevesebb hibába ütközhetünk.