До основного вмісту

Перенесення магазину 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.

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

← Назад до бази знань Поставити питання підтримці