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

Переезд с Drupal 7 на Drupal 10 — это не обновление «поверх»: вы создаёте новый сайт и переносите в него контент, пользователей и нужные настройки. Если в старой системе много нестандартных типов материалов, модулей и интеграций, простой перенос базы обернётся потерей функций или ручной работой. Ниже — три подхода и критерии выбора; примерный объём работ лучше оценивать после инвентаризации сайта, а не по числу страниц.
Что именно придётся переносить
Drupal 7 и Drupal 10 используют разные поколения ядра и модулей. Поэтому миграция не сводится к копированию базы данных и файлов: нужно сопоставить старую структуру с новой, решить судьбу функций, которые раньше обеспечивали модули, и проверить результат на целевом сайте.
Для начала составьте карту проекта: типы материалов и их поля, таксономию, пользователей и роли, файлы, языки, представления, правила доступа, формы, интеграции, тему оформления и собственный код. Отдельно отметьте, что действительно используется. Старая база часто хранит настройки и контент, которые сайт давно не показывает.
- Контент: материалы, термины таксономии, пользователи, файлы, переводы и связи между сущностями.
- Функции: поиск, формы, права, представления, обмен с внешними системами и бизнес-правила.
- Оформление: тема и шаблоны. Их обычно адаптируют или создают заново, а не переносят как есть.
- Инфраструктура: версия PHP и СУБД, окружения, домены, фоновые задачи и процесс публикации.
Сущность — объект Drupal с собственными данными и полями: например, материал, пользователь или термин таксономии. При миграции важно сохранить не только сами записи, но и ссылки между ними.
Три способа переезда
1. Migrate API: перенести данные в новый сайт
Это основной вариант, если структура Drupal 7 в целом понятна, а значительную часть контента можно сопоставить с сущностями Drupal 10. На новом сайте запускают миграции из базы Drupal 7: ядро умеет переносить поддерживаемые типы данных, а для особых полей и нестандартных сущностей может понадобиться дополнительная настройка или собственные миграции.
Цена — подготовка и проверка соответствий. Старое поле «автор» может хранить не того пользователя, которого ожидает новая модель; модуль, задававший формат текста, может отсутствовать; файл может перенестись без корректной ссылки из материала. Чем больше таких исключений, тем меньше проект похож на автоматический перенос.
2. Пересборка с выборочным переносом
Подходит, если старый сайт перегружен ненужными модулями, содержимое частично устарело или команда хочет изменить структуру. В Drupal 10 проектируют типы контента и функции заново, а в новый сайт переносят только нужные данные — через миграции, экспорт и импорт или ручную редактуру для небольшого объёма.
Преимущество — не тащить старые ограничения в новую систему. Цена — больше решений до запуска: нужно заново описать редакторские процессы, доступы, интеграции и URL. Ручная обработка десятков материалов ещё управляема; при большом каталоге она быстро становится дорогой и плохо воспроизводимой.
3. Поэтапный перенос
Сначала переносят одну часть сайта или ограниченный тип контента, проверяют результат, затем расширяют объём. Такой подход полезен, когда сайт большой и нельзя надолго остановить редакцию. Но он требует временно поддерживать два контура: согласовать URL, синхронизацию данных и момент переключения. Если разные команды меняют одни и те же записи в старом и новом сайтах, придётся отдельно решать, какая копия главная.
| Подход | Когда выбирать | Чем платите |
|---|---|---|
| Migrate API | Структура и контент в основном сохраняются | Настройкой сопоставлений и проверкой исключений |
| Пересборка | Старые функции и модель данных пора менять | Проектированием и повторной реализацией функций |
| Поэтапный перенос | Нужен контролируемый запуск крупного проекта | Поддержкой двух систем и планом синхронизации |
Как выбрать подход для своего сайта
Не начинайте с оценки «переносим всё» или «пишем заново». Сначала выясните, что сайт делает сейчас, и разделите находки на данные, функции и оформление. Затем для каждой функции найдите владельца и проверьте, нужна ли она после переезда.
- Зафиксируйте исходное состояние. Сохраните копию базы и файлов, опишите версии Drupal 7, PHP и СУБД, составьте список используемых модулей и собственного кода. Проверка: команда может развернуть копию старого сайта отдельно от продакшена.
- Соберите целевой каркас Drupal 10. Создайте тестовый сайт, настройте типы материалов, поля, роли и языки. Не переносите в него файлы старого сайта целиком вместо анализа. Проверка: редактор может создать и просмотреть типовой материал без старых модулей.
- Сопоставьте данные. Для каждого типа контента укажите целевой тип, поля, формат текста, автора, термины и файлы. Отметьте данные, которые надо преобразовать или исключить. Проверка: на тестовой выборке связи и значения соответствуют согласованной схеме.
- Проведите пробную миграцию. Запустите перенос в тестовом окружении, проверьте несколько записей каждого типа, затем повторите перенос после исправлений. Проверка: число перенесённых сущностей и пропусков объяснимо, а не просто «похоже на правду».
- Проверьте функции и переключение. Протестируйте формы, поиск, права доступа, интеграции, ссылки и перенаправления. Подготовьте план финальной синхронизации и отката. Проверка: редакторы проходят ключевые сценарии, а команда знает, как вернуть трафик на старый сайт при сбое.
Что обычно ломается
Модуль Drupal 7 не имеет аналога. Не переносите его настройки в надежде, что функция появится сама. Найдите поддерживаемый модуль для Drupal 10 или оцените стоимость реализации функции заново.
Перенеслись записи, но пропали связи. Проверьте авторов, термины, переводы, ссылки на файлы и ссылки между материалами. Сверяйте не только общее количество, но и выборки по каждому типу данных.
Поехали URL и поисковый трафик. Зафиксируйте старые адреса и настройте перенаправления там, где структура меняется. Проверьте страницы с внешними ссылками и важные посадочные страницы вручную.
Миграция повторно создаёт дубликаты. Поведение зависит от конфигурации миграций и способа запуска. Проверяйте повторный прогон на копии данных, прежде чем считать его безопасным для целевого сайта.
Редакция продолжает менять Drupal 7 во время переноса. Снимок базы быстро устаревает. Нужны дата заморозки контента или понятная схема финальной синхронизации; иначе последние правки могут не попасть в Drupal 10.
Перенести данные — не значит перенести сайт. Результат миграции определяется тем, сохранились ли нужные редакторские и пользовательские сценарии.
Когда какой вариант разумнее
Выбирайте Migrate API как основу, если хотите сохранить большую часть структуры и функций, а данные можно сопоставить без радикальной переработки. Выбирайте пересборку, если важнее избавиться от накопленных ограничений, чем воспроизвести старый сайт один к одному. Поэтапный запуск выбирайте не ради моды, а когда масштаб или требования к доступности не позволяют переключить всё сразу.
Часто разумен смешанный вариант: стандартные данные перенести миграциями, отдельные функции пересобрать, а запуск разбить на этапы. Это не четвёртая кнопка в Drupal — это проектное решение, которое нужно проверить на пробной миграции.
Что делать дальше
Начните с инвентаризации модулей и сценариев, затем соберите целевой Drupal 10 и проведите пробный перенос на копии данных. Зафиксируйте количество сущностей до и после, пропуски и ошибки, время запуска и результаты проверки редакторских сценариев. Только после этого оценивайте календарный план и выбирайте дату переключения. Drupal 7 завершил официальную поддержку 5 января 2025 года, поэтому откладывать оценку рисков старой системы не стоит.
Контент-конвейер: Из одной идеи — текст, изображение, озвучка и ролик. Один заказ вместо четырёх.
Спросить за 60 ₽Источники: Drupal.org: Upgrading from Drupal 7, Drupal.org: Migrate API overview
Частые вопросы
Можно ли обновить Drupal 7 до Drupal 10 одной командой?
Обязательно ли переписывать весь сайт?
Перенесутся ли тема и модули Drupal 7?
Как понять, что миграция перенесла данные правильно?
Можно ли переносить сайт по частям, не останавливая работу?
Что делать, если часть данных не перенеслась?
Материал носит информационный характер и подготовлен редакцией «Агентуры». Он не является офертой, рекламой или индивидуальной консультацией. Упомянутые продукты, компании и торговые знаки принадлежат их правообладателям. Перед принятием решений, влекущих юридические или финансовые последствия, обратитесь к профильному специалисту.