Миграция с Drupal 7 на Drupal 10: инструкция и практические примеры

Drupal 7 больше не получает обновлений безопасности. Сайт под угрозой атак, а прямого пути к Drupal 10 нет — только полноценная миграция. Мы провели 20+ таких проектов: от 50 до 200 000 нод. Наш опыт позволяет обойти типичные ловушки и уложиться в минимальный downtime.

Разработка и обслуживание любых видов сайтов:

Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Услуги, которые мы предлагаем
Показано 1 из 1Все 2062 услуг
Миграция с Drupal 7 на Drupal 10: инструкция и практические примеры
Сложный
от 2 недель до 3 месяцев

Наши компетенции:

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1414
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1285
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    982
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1241
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    982
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    994

Drupal 7 больше не получает обновлений безопасности. Сайт под угрозой атак, а прямого пути к Drupal 10 нет — только полноценная миграция. Мы провели 20+ таких проектов: от 50 до 200 000 нод. Наш опыт позволяет обойти типичные ловушки и уложиться в минимальный downtime.

Migrate API ускоряет перенос контента в 3–5 раз по сравнению с ручной выгрузкой. Но миграция — это не только контент: кастомные модули и темы приходится переписывать полностью. Drupal 7 — процедурный и без Composer, Drupal 10 — OOP на Symfony с YAML-роутингом. Разница архитектур неизбежно приводит к полному рефакторингу кода.

Миграция с Drupal 7 на Drupal 10: пошаговая инструкция

Архитектурные различия: почему это не апгрейд

Drupal 7 и Drupal 10 — архитектурно разные системы. D7 не использует Composer, OOP, Symfony компоненты. Контент мигрируется через Migrate API, код тем и модулей переписывается полностью. Это полноценный рефакторинг, а не обновление. Например, hook_menu в D7 превращается в YAML-маршруты, а процедурные функции — в сервисы Dependency Injection.

Стратегии миграции: как выбрать?

Стратегия Описание Downtime Когда подходит
Migrate API Программная миграция контента из D7 БД в D10. Многократный запуск до переключения. Минуты Большинство проектов
Manual content migration Экспорт через Views, импорт через Migrate или вручную. Часы Сайты до 100 нод
Big bang Полная остановка D7, настройка D10, миграция за один раз. Дни Простые сайты, когда downtime допустим

Migrate API — рекомендуемый вариант. Он позволяет запускать миграции многократно, добавляя только изменившийся контент. Разница в трудозатратах между Migrate API и ручной миграцией составляет 3–5 раз в пользу автоматизации. Экономия бюджета при использовании Migrate API достигает 60-80%.

Как работает Migrate API под капотом? Migrate API использует плагины source, process, destination для каждой сущности. Source читает данные из D7 БД, process преобразует поля, destination сохраняет в D10. Это позволяет переиспользовать плагины и легко настраивать маппинг.

Как перенести кастомные модули?

Кастомные модули Drupal 7 нужно полностью переписывать под архитектуру Drupal 10. Например, hook_menu заменяется на YAML-файл mymodule.routing.yml, а процедурные функции — на классы с аннотациями. Сложность переписывания зависит от размера модуля. Часто требуется рефакторинг всей бизнес-логики. Закажите аудит вашего сайта, чтобы оценить трудоёмкость.

Как мы проводим миграцию: пошагово

Сначала проводим полный аудит текущего сайта. Заходим на сервер D7 и собираем метрики: список активных модулей, типы нод, размер БД. Затем на новом сервере разворачиваем Drupal 10 и устанавливаем пакеты миграции.

composer create-project drupal/recommended-project drupal10-site cd drupal10-site composer require drupal/migrate_plus drupal/migrate_tools drupal/migrate_upgrade drupal/migrate_source_csv drush en migrate migrate_plus migrate_tools migrate_upgrade -y 

Подключаем базу D7 как дополнительную в settings.php:

$databases['migrate']['default'] = [ 'driver' => 'mysql', 'database' => 'drupal7_db', 'username' => 'db_user', 'password' => 'db_pass', 'host' => '127.0.0.1', 'port' => '3306', 'prefix' => '', ]; 

Команда drush migrate:upgrade генерирует YAML-конфигурации для пользователей, таксономии, типов контента, полей, нод, файлов, блоков и меню. Затем миграции запускаются в порядке зависимостей: сначала роли, потом типы контента, поля, таксономия, пользователи, файлы, ноды, меню и блоки.

drush migrate:import upgrade_d7_user_role drush migrate:import upgrade_d7_node_type drush migrate:import upgrade_d7_field drush migrate:import upgrade_d7_field_instance drush migrate:import upgrade_d7_taxonomy_vocabulary drush migrate:import upgrade_d7_taxonomy_term drush migrate:import upgrade_d7_user drush migrate:import upgrade_d7_file drush migrate:import upgrade_d7_node_complete drush migrate:import upgrade_d7_menu drush migrate:import upgrade_d7_block 

Проблемные зоны и их решения

  • CCK/Field API: Field Collection в D7 не мигрируется напрямую — нужен модуль migrate_field_collection.
  • Views: Views 3 (D7) переносятся частично. Сложные представления с relationships придется пересоздавать вручную.
  • Медиафайлы: Файлы копируются через file_copy плагин, источник указывается как source_base_path.

Получите консультацию — мы оценим сложность вашего проекта и предложим оптимальный план.

Как минимизировать downtime?

Используем дельта-миграцию. За несколько дней до переключения запускаем первичную миграцию всего контента. В день переключения сначала включаем режим обслуживания на D7, затем запускаем инкрементальное обновление: drush migrate:import --all --update. После этого переключаем DNS на D10 и отключаем режим обслуживания. Весь downtime — 15-30 минут. Свяжитесь с нами для оценки вашего проекта.

Что входит в работу?

  • Полный аудит текущего D7-сайта (модули, темы, контент, DB)
  • Миграция контента через Migrate API с гарантией целостности
  • Переписка кастомных модулей и тем на OOP/Symfony
  • Настройка SEO-модулей (metatag, redirect, pathauto)
  • Тестовая миграция и приемочное тестирование
  • Документация по новой архитектуре, доступы к серверу и админке
  • Пост-миграционная поддержка на 2 недели

Закажите аудит D7-сайта, чтобы получить точные сроки и стоимость.

Сроки и стоимость

Тип сайта Срок
Простой (< 100 нод, стандартные типы) 2-3 недели
Средний (500-5000 нод, кастомные модули) 4-8 недель
Крупный (50k+ нод, сложные зависимости) 3-6 месяцев

Стоимость рассчитывается индивидуально после аудита. Свяжитесь с нами, чтобы обсудить детали.