Обновленя Magento 2 та розширень
Magento 2 обновляется через Composer — це єдиний підтримуваний спосіб для ядра. Обновленя розширень складніше: вендори не завжди підтримують нові версії синхронно, а конфлікти залежностей зустрічаються регулярно. Правильний порядок дій визначає, чи втратите ви дані та час.
Проверка перед обновленням
# Поточна версія
php bin/magento --version
# Статус системи
php bin/magento setup:upgrade --dry-run
# Перевірити залежності без змін
composer why-not magento/product-community-edition 2.4.7
Magento Upgrade Compatibility Tool — офіційна утиліта для аналізу сумісності коду:
composer create-project magento/upgrade-compatibility-tool uct --repository-url=https://repo.magento.com
cd uct
bin/uct upgrade:check /path/to/magento --coming-version=2.4.7
Звіт показує: застарілі виклики API, видалені класи, зміни в БД. Особлива увага на CRITICAL-рівень — такі місця зломають роботу після обновления.
Резервна копія
# База даних
mysqldump -u root -p magento_db | gzip > /backups/magento_$(date +%Y%m%d).sql.gz
# Файли (виключити кеш та сесії)
tar --exclude='./var/cache' --exclude='./var/session' \
--exclude='./var/log' --exclude='./pub/media/catalog/product/cache' \
-czf /backups/magento_files_$(date +%Y%m%d).tar.gz -C /var/www/shop.com .
# Composer.json та composer.lock
cp composer.json /backups/composer.json.bak
cp composer.lock /backups/composer.lock.bak
Обновленя ядра Magento
# Увімкнути режим обслуговування
php bin/magento maintenance:enable
# Обновити ядро
composer require magento/product-community-edition=2.4.7 \
--no-update
# Обновити залежності
composer update magento/product-community-edition \
--with-all-dependencies
# Запустити скрипти обновления
php bin/magento setup:upgrade
php bin/magento setup:di:compile
php bin/magento setup:static-content:deploy uk_UA en_US -f
# Вимкнути режим обслуговування
php bin/magento maintenance:disable
php bin/magento cache:flush
Для Magento Commerce (Adobe Commerce) процес аналогічний, тільки пакет інший: magento/product-enterprise-edition.
Обновленя розширень
# Подивитися доступні обновления
composer outdated "magento/*"
composer outdated --direct
# Обновити конкретне розширення
composer require vendor/module-name:"^2.1" --no-update
composer update vendor/module-name
# Після обновления розширень — завжди
php bin/magento setup:upgrade
php bin/magento setup:di:compile
php bin/magento cache:flush
Проблема версійних конфліктів. Якщо composer update падає з помилкою залежностей:
# Діагностика конфлікту
composer why-not vendor/module-name 2.1.0
# Принудитель обновленя з розв'язанням конфліктів
composer update vendor/module-name --with-dependencies
# Якщо вендор не обновив пакет — можна тимчасово послабити обмеженя
# composer.json: "vendor/module-name": ">=1.5 <3.0"
Проверка патчів безпеки
Magento регулярно видає Security Patches (APSB-патчі) між мажорними релізами:
# Встановити Quality Patches Tool
composer require magento/quality-patches
# Список доступних патчів
php ./vendor/bin/magento-patches status
# Застосувати конкретний патч
php ./vendor/bin/magento-patches apply MDVA-12345
# Список застосованих патчів
php ./vendor/bin/magento-patches status | grep Applied
Міграція кастомних розширень
Якщо розробляються власні модулі — після обновения ядра перевірити:
# Перевірити сумісність модуля
bin/uct upgrade:check /path/to/magento \
--coming-version=2.4.7 \
--module-path=Vendor_MyModule
# Типові проблеми після обновления:
# 1. Deprecated __constructor injection → перейти на factory
# 2. Removed ObjectManager::getInstance() → інжектувати через DI
# 3. Changed interface → обновити implements
Продуктивність після обновления
# Повна перекомпіляція DI
php bin/magento setup:di:compile
# Деплой статики для потрібних локалей та тем
php bin/magento setup:static-content:deploy uk_UA en_US \
--theme Magento/luma \
--theme Vendor/custom-theme \
-f
# Очистка всіх кешів
php bin/magento cache:clean
php bin/magento cache:flush
# Індексування
php bin/magento indexer:reindex
Автоматизація через CI/CD
# .gitlab-ci.yml
magento-update:
stage: deploy
script:
- php bin/magento maintenance:enable
- composer update --no-dev --optimize-autoloader
- php bin/magento setup:upgrade --keep-generated
- php bin/magento setup:di:compile
- php bin/magento setup:static-content:deploy -f
- php bin/magento maintenance:disable
- php bin/magento cache:flush
only:
- tags
Флаг --keep-generated зберігає скомпільовані файли при setup:upgrade — прискорює деплой у production, але вимагає попередньої компіляції на staging.
Терміни
Обновленя Magento 2.4.x до наступної мінор-версії з тестуванням на staging — 1–2 дні. Якщо є кастомні модулі та нетривіальні залежності — до 3–4 днів. Обновленя з застарілої версії (2.3.x → 2.4.x) — окрема задача на 1–2 тижні.







