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

Перенесення сайту Drupal на новий сервер без втрат

Міграція · 29.09.2026

Перенесення Drupal на новий сервер вимагає перенесення трьох частин: файлів ядра і тем, каталогу sites/default/files із завантаженим контентом та бази даних MySQL. Якщо пропустити хоча б одну частину, сайт відкриється з помилками або без зображень.

Коли потрібне перенесення Drupal на новий сервер

Типові причини: старий хостинг не підтримує PHP 8.3, якого потребують Drupal 10 і 11, потрібен перехід із shared-хостингу на VDS через зростання навантаження, або закінчується термін оренди поточного сервера. Перед перенесенням перевірте версію Drupal командою drush status і зафіксуйте версію PHP, MySQL та список увімкнених модулів.

Що підготувати перед перенесенням

На новому сервері мають бути встановлені PHP 8.3 з розширеннями gd, pdo_mysql, mbstring, xml, opcache, а також MySQL 8 або MariaDB 10.6 та Composer 2. Перевірте таблицю мінімальних вимог:

КомпонентМінімальна версіяРекомендована
PHP8.18.3
MySQL / MariaDB5.7 / 10.38.0 / 10.6
Composer2.02.7
Drush1112

Створіть на новому сервері порожню базу даних і користувача з повними правами на неї — вона знадобиться на етапі імпорту дампа.

Як перенести файли сайту

Файли переносьте через rsync — він зберігає права доступу і переносить лише зміни під час повторного запуску, що зручно під час фінальної синхронізації перед перемиканням DNS. Детальний розбір rsync, SCP і FTP є у статті перенесення файлів сайту.

rsync -avz --progress -e "ssh -p 22" /var/www/drupal/ user@newserver:/var/www/drupal/

Після копіювання перевірте права: каталог sites/default/files повинен належати користувачу веб-сервера і мати права 755 на директорії та 644 на файли. Файл sites/default/settings.php тимчасово зробіть доступним для запису командою chmod 644 sites/default/settings.php, щоб відредагувати параметри підключення до бази.

Як експортувати та імпортувати базу даних

Експорт робіть через drush — він коректно обробляє кеш-таблиці Drupal і не переносить тимчасове сміття:

drush sql-dump --result-file=../drupal_backup.sql --gzip

На новому сервері створіть базу та імпортуйте дамп:

mysql -u drupal_user -p drupal_db < drupal_backup.sql

Дамп стиснуто — спершу розпакуйте його командою gunzip drupal_backup.sql.gz. Загальні принципи перенесення MySQL, зокрема великих баз і реплікації, описані у статті перенесення бази даних MySQL.

Налаштування settings.php після перенесення

У файлі sites/default/settings.php оновіть масив $databases: назву бази, користувача, пароль і хост. Також перевірте параметр $settings['trusted_host_patterns'] — обмежений старим доменом, він поверне Drupal-помилку 500 під час першого відкриття сайту на новому сервері.

$databases['default']['default'] = [
  'database' => 'drupal_db',
  'username' => 'drupal_user',
  'password' => 'новий_пароль',
  'host' => 'localhost',
  'driver' => 'mysql',
];

Після правки відновіть права командою chmod 444 sites/default/settings.php. Потім очистіть кеш та імпортуйте синхронізовану конфігурацію:

drush cr
drush config:import -y

Як перевірити сайт і перемкнути DNS без простою

Перед перемиканням домену відкрийте сайт на новому сервері за IP-адресою з підміною хоста у файлі /etc/hosts локальної машини — так ви перевірите роботу без ризику для чинного сайту. Переконайтеся, що відкривається головна сторінка, працює вхід до адмінки /user/login і коректно віддаються зображення з sites/default/files.

Тест пройдено — зменшіть TTL у A-записі домену заздалегідь до 300 секунд, а після перемикання перевірте поширення командою dig +short example.com із кількох DNS-серверів. Детальна схема безпечного перемикання без простою — у статті зміна хостингу без простою.

Чек-лист міграції Drupal

  • Версії PHP, MySQL і модулів збігаються з вимогами Drupal.
  • Каталог sites/default/files скопійовано повністю, права 755/644.
  • Дамп бази імпортовано без помилок, таблиці на місці.
  • Масив $databases і trusted_host_patterns у settings.php оновлені.
  • Команди drush cr і config:import виконані без попереджень.
  • Сайт перевірено за IP перед перемиканням DNS.

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

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