Обновление 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
# Включить maintenance mode
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 ru_RU en_US -f
# Выключить maintenance
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 ru_RU 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 недели.







