К основному содержимому

Перенос магазина Magento 2 на новый сервер: инструкция

Миграция · 29.09.2026

Magento 2 — самая требовательная к ресурсам платформа среди популярных движков интернет-магазинов. Перенос усложняют три вещи: строгие требования к версиям PHP и Elasticsearch, файл app/etc/env.php с привязкой к путям сервера и обязательная переиндексация каталога после переноса.

Требования Magento 2 к новому серверу

Перед переносом сверьте версии компонентов — несовпадение хотя бы одной ломает установку:

КомпонентMagento 2.4.6Magento 2.4.7
PHP8.1–8.28.2–8.3
MySQL8.08.0
Elasticsearch / OpenSearch7.177.17 / 2.12
Redis6–76–7

Если версия PHP на новом сервере выше поддерживаемой, composer install завершится ошибкой зависимостей ещё до запуска сайта.

Перенос файлов и медиатеки

Каталог pub/media с изображениями товаров часто весит больше, чем сам код Magento, поэтому переносите его отдельным запуском rsync с флагом докачки, чтобы прерванная передача не начиналась заново:

rsync -avz --partial --progress /var/www/magento/pub/media/ user@newserver:/var/www/magento/pub/media/

Общие приёмы работы с rsync, SCP и FTP разобраны в статье перенос файлов сайта. Каталоги var/cache, var/page_cache и generated переносить не нужно — Magento создаст их заново.

Экспорт и импорт базы данных

База Magento обычно большая из-за таблиц логов и котировок корзин, поэтому перед экспортом очистите старые логи командой bin/magento setup:cleanup:logs, а затем сделайте дамп:

mysqldump -u magento_user -p --single-transaction magento_db | gzip > magento_backup.sql.gz

На новом сервере распакуйте и импортируйте дамп:

gunzip magento_backup.sql.gz
mysql -u magento_user -p magento_db < magento_backup.sql

Общий алгоритм переноса MySQL, включая большие базы, есть в статье перенос базы данных MySQL.

Настройка env.php и cron

Файл app/etc/env.php хранит не только параметры подключения к базе, но и абсолютные пути кеша, сессий и очередей. После переноса обновите блок db и проверьте секцию cache — если пути на диске отличаются, Magento не найдёт файловый кеш и выдаст ошибку 500 на первой же странице.

bin/magento setup:upgrade
bin/magento cache:flush

Magento зависит от cron-задач для очередей сообщений и обновления цен по расписанию, поэтому добавьте задание в crontab пользователя веб-сервера:

* * * * * /usr/bin/php /var/www/magento/bin/magento cron:run 2>&1 | grep -v "Ran jobs by schedule"

Переиндексация каталога после переноса

После импорта базы индексы Magento считаются устаревшими, даже если данные не менялись. Переведите индексацию в режим по расписанию и запустите полную переиндексацию вручную:

bin/magento indexer:set-mode schedule
bin/magento indexer:reindex

Без этого шага каталог покажет неверные цены, остатки товаров и результаты поиска. Переиндексация каталога с 50 000 товаров занимает от 10 до 30 минут в зависимости от мощности сервера.

Проверка перед переключением DNS

Откройте магазин на новом сервере по IP с подменой хоста в локальном файле /etc/hosts и проверьте оформление заказа, применение купона и загрузку изображений из pub/media. Снизьте TTL A-записи домена до 300 секунд за сутки до переключения — так изменения быстрее распространятся у провайдеров DNS. Подробная схема переключения без простоя — в статье смена хостинга без простоя.

Чек-лист миграции Magento 2

  • Версии PHP, MySQL и Elasticsearch совпадают с требованиями релиза.
  • Каталог pub/media перенесён полностью, var и generated пересозданы.
  • env.php обновлён: подключение к базе и пути кеша верны.
  • Задание cron:run добавлено в crontab на новом сервере.
  • Полная переиндексация каталога выполнена без ошибок.
  • Оформление заказа проверено на новом сервере по IP.

После переключения домена пройдитесь по общему чек-листу из статьи чеклист проверки сайта после миграции.

← Назад в базу знаний Задать вопрос поддержке