Перенесення 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. Перевірте таблицю мінімальних вимог:
| Компонент | Мінімальна версія | Рекомендована |
|---|---|---|
| PHP | 8.1 | 8.3 |
| MySQL / MariaDB | 5.7 / 10.3 | 8.0 / 10.6 |
| Composer | 2.0 | 2.7 |
| Drush | 11 | 12 |
Створіть на новому сервері порожню базу даних і користувача з повними правами на неї — вона знадобиться на етапі імпорту дампа.
Як перенести файли сайту
Файли переносьте через 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.
Фінальну перевірку після перемикання домену проведіть за загальним чек-листом зі статті чеклист перевірки сайту після міграції.