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

Ваш сайт на Drupal 7 больше не получает обновлений безопасности, и каждый день бездействия увеличивает риски. Мы выполняем миграцию на Drupal 10 с полным переписыванием кастомного кода и переносом данных через Migrate API. Наша команда реализует проект под ключ — от аудита до сопровождения, обеспечивая надёжный переход без срыва сроков.

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

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

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

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

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 месяцев

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

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

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

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1542
  • Разработка веб-приложения для компании FEEDME
    Разработка веб-приложения для компании FEEDME
    1394
  • Разработка веб-сайта для компании БЕЛФИНГРУПП
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1081
  • Разработка интернет магазина для компании FURNORO
    Разработка интернет магазина для компании FURNORO
    1369
  • Разработка веб-приложения для компании Enviok
    Разработка веб-приложения для компании Enviok
    1142
  • Разработка веб-сайта для компании ФИКСПЕР
    Разработка веб-сайта для компании ФИКСПЕР
    1060