Biztonsági frissítések és Magento 2 frissítése, szerepe, szükségessége, folyamata

Mint tudjátok a Magentonak van fizetős (Enterprise Edition) és ingyenes változata Magento Community Editionn formában. Mivel  utóbbi egy nyílt forráskódú rendszer, ezért bárki számára elérhető és ezzel együtt feltörhető. A Magento supportolása az Adobe csoport által folyamatos, így egyre másra jelennek meg hozzá biztonsági frissítések. A Magento fejlesztő cégek, zöme az ingyenes Community Edition testreszabásával állít elő webáruházat, és ti is ilyen webáruházakkal dolgoztok. Többek között én is a Community Editionnal dolgozok.

Elérkezettnek láttam az időt arra, hogy a Magento 2.2.6-os rendszeremet a legfrissebb jelenleg elérhető stabil rendszerre frissítsem. Ez elvileg, sokkal egyszerűbb manapság mint a Magento 1 esetében volt, akkor ha:

– a webáruházadatam Composer segítségével telepítetted
– könnyen tudsz a webáruház szerverének beállításain változtatni
– a webáruházad forráskódja egy verziókezelő rendszerben karban van tartva (Github, BitBucket, SVN, stb…)
– ha rendelkezel fejlesztői környezettel, ahol a frissítést ki tudod próbálni.

Én neki láttam ennek, a következő lépesek sorozatával, amit egyébként a Magento ezen a címen le is ír: https://devdocs.magento.com/guides/v2.3/comp-mgr/cli/cli-upgrade.html

 

A webáruház gyökér könyvtárában ugyan a cikk nem említi de meghívtam a php7.1 bin/magento deploy:mode:set developer parancsot, a webáruházat fejlesztői módba tettem.

Első körben a gyökér könyvtárban található composer.json és legfőképpen a composer.lock fájlból célszerű lementeni egy biztonsági mentést. Ezeket a fájlokat én mentés másként megoldással “_back_” kezdődéssel láttam el és mentettem le.

Ezekután a webszerveren átállítottam a PHP 7.1- es változatot PHP7.3-ra, amit a terminálban PHP7.3 parancs begépelésével hívok meg.

Célszerű még a webáruházban a “vendor” könyvtárat átnevezeni “_back_vendor” könyvtárra. Természetesen szükségszerű a PHP7.3-as csomagokat(https://devdocs.magento.com/guides/v2.3/install-gde/system-requirements-tech.html) is telepíteni amihez a Magento 2.3.4-es rendszernek szüksége van. Ezt most nem írom le, mivel egy korábbi cikkben(https://simieee.wordpress.com/2017/10/16/magento-1-php5-6-es-magento-2-php7-1-egy-apache/) ezt mármegmutattam, igaz akkor PHP egy korábbi verziójával.

Ezután a következő lépés sorozatot kell végrehatani a Magento alaprendszerünk frissítéséhez:

1.

php7.3 /usr/local/bin/composer remove magento/product-community-edition --no-update

2.

php7.3 /usr/local/bin/composer require magento/product-community-edition=2.3.3 --no-update

3.

php7.3 /usr/local/bin/composer require --dev allure-framework/allure-phpunit:~1.2.0 friendsofphp/php-cs-fixer:~2.14.0 lusitanian/oauth:~0.8.10 magento/magento-coding-standard:~3.0.0 magento/magento2-functional-testing-framework:2.4.5 pdepend/pdepend:2.5.2 phpmd/phpmd:@stable phpunit/phpunit:~6.5.0 sebastian/phpcpd:~3.0.0 squizlabs/php_codesniffer:~3.4.0 --sort-packages --no-update

4.

php7.3 /usr/local/bin/composer remove --dev sjparkinson/static-review fabpot/php-cs-fixer --no-update

A parancsok lefuttatása után meg kell hívni egy composer install-t is a gyökér könyvtárban állva:

5.

php7.3 /usr/local/bin/composer install

Ezzel létrejön a composer.back és felkerülnek a legrissebb csomagok a rendszerünkbe.

Ha ezzel megvagyunk akkor frissíteni kell a Magento 2 rendszert, a

6.

php7.3 bin:magento setup:upgrade

parancs kiadásával.

Nálam még keletkezett egy ilyen hiba:

PHP Fatal error: Uncaught Error: Class 'Zend\Mvc\Controller\LazyControllerAbstractFactory' not found in .../vendor/zendframework/zend-servicemanager/src/ServiceManager.php:314
Stack trace:
#0 .../vendor/zendframework/zend-servicemanager/src/Config.php(137): Zend\ServiceManager\ServiceManager->addAbstractFactory('Zend\\Mvc\\Contro...')
#1 .../vendor/zendframework/zend-modulemanager/src/Listener/ServiceListener.php(223): Zend\ServiceManager\Config->configureServiceManager(Object(Zend\Mvc\Controller\ControllerManager))
#2 .../vendor/zendframework/zend-eventmanager/src/EventManager.php(322): Zend\ModuleManager\Listener\ServiceListener->onLoadModulesPost(Object(Zend\ModuleManager\ModuleEvent))
#3 .../vendor/zendframework/zend-eventmanager/src/EventManager.php(171): Zend\EventManager\EventManager->triggerListeners(Object(Zend\ModuleManager\ModuleEvent))
#4 .../vendor/zendframework/zend-modulemanager/src/ModuleManager.php(127): Zend\Event in .../vendor/zendframework/zend-servicemanager/src/ServiceManager.php on line 314

ahol a “…” természetesen a projekt teljes elérési útvonalát jelenti, de azt nem teszem közzé.

Erre a megoldás pedig nem más mint, a gyökér könyvtárban található composer.json-t (autoload/psr-4 szekcióját) manuálisan ki kell egészíteni (a “Zend\\Mvc\\Controller\\”: “setup/src/Zend/Mvc/Controller/” sorral):

"autoload": {
"psr-4": {
"Magento\\Framework\\": "lib/internal/Magento/Framework/",
"Magento\\Setup\\": "setup/src/Magento/Setup/",
"Magento\\": "app/code/Magento/",
"Zend\\Mvc\\Controller\\": "setup/src/Zend/Mvc/Controller/"
},

majd a

php7.3 /usr/local/bin/composer dumpautoload

parancsot kell meghívni.

A frissítést a

7.

php7.3 bin:magento setup:upgrade

parancs kiadásával tudjuk folytatni.
8. Majd futassuk meg rendre a

php7.3 bin:magento setup:di:compile
php7.3 bin:magento cache:flush
php7.3 bin:magento cache:clean parancsokat is.

Most nézzük meg a webáruházat, simán lehet, hogy egy nagy hibát látunk első körben, de ha visszatesszük a webáruházat “production” (php7.3 bin/magento deploy:mode:set production) módba akkor, ez a hiba is eltűnik.

Ha megjelenik a webáruház akkor elvileg nincs probléma.

A frissítés lefutattásával még közel sem végeztünk, ezután jön a Magento telepítésünk /app/code könyvtár alat betöltött egyedi moduljainak frissítése. Minden egyes modul esetében meg kell vizsgálni, hogy abból létezik-e frissebb változat és az kompatiblis-e már PHP7.3-al. Egy Magento 2 webáruház esetén ezért szükségszerű, hogy minden modulunk jogtiszta legyen, hogy az esetleges frissítéseket könnyen elérjük. Egy olyan webáruház esetében, amely éves szinten több 10, 100 milliós vagy akár milliárdos forgalmat is bonyolíthat nem érdemes a 10-50 ezer Ft-os modulokon spórolni, később nagyon visszaüthet ez.

Amit biztos nem érdemes, megfelelő szaktudás és biztonsági mentés nélkül Magento 2 webáruházat frissíteni. Célszerű kerülni a nem átgondolt adhoc jellegű modulok betételét a webáruházba, amellyel később csak a webáruház frissítését nehezítjük meg főleg abban az esetben, ha a modult igazából nem is használjuk.

Frissítsük fel manuálisan a modulokat és ezután deployolhatjuk a webáruházunk frissített kódját a szerver beállítások frissítése után az éles környezetre. A deploy előtt távolítsuk el az alkalmazásból a

_back_vendor
_back_composer.json
_back_composer.lock könyvtárt és fájlokat.

Amennyiben most szeretnél magyar nyelvű Magento 2 webáruházat nyitni, vagy a meglévőt frissíteni akkor keress elérhetőségeimen.

Vélemény, hozzászólás?

Adatok megadása vagy bejelentkezés valamelyik ikonnal:

WordPress.com Logo

Hozzászólhat a WordPress.com felhasználói fiók használatával. Kilépés /  Módosítás )

Google kép

Hozzászólhat a Google felhasználói fiók használatával. Kilépés /  Módosítás )

Twitter kép

Hozzászólhat a Twitter felhasználói fiók használatával. Kilépés /  Módosítás )

Facebook kép

Hozzászólhat a Facebook felhasználói fiók használatával. Kilépés /  Módosítás )

Kapcsolódás: %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.