Перенос 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.
Финальную проверку после переключения домена проведите по общему чек-листу из статьи чеклист проверки сайта после миграции.