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

Перенос сайта 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.

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

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