Extra Block Types (EBT) - New Layout Builder experience❗

Extra Block Types (EBT) - styled, customizable block types: Slideshows, Tabs, Cards, Accordions and many others. Built-in settings for background, DOM Box, javascript plugins. Experience the future of layout building today.

Demo EBT modules Download EBT modules

❗Extra Paragraph Types (EPT) - New Paragraphs experience

Extra Paragraph Types (EPT) - analogical paragraph based set of modules.

Demo EPT modules Download EPT modules

Scroll
07/05/2020, by maria

Drush - это оболочка командной строки и интерфейс сценариев для Drupal. Обновление до Drupal 8 с использованием Drush является альтернативой использованию пользовательского интерфейса браузера. Обновление до Drupal 8 с использованием Drush очень полезно при миграции сложных сайтов, поскольку позволяет запускать миграции по одному и позволяет выполнять откат.

Установка Drush с помощью Composer

Сайты Drupal 8 могут быть построены с помощью Composer. Если вы решите использовать drupal-composer/drupal-project в качестве шаблона проекта композитора, у вас уже будет Drush, поскольку он указан в качестве зависимости в файле composer.json проекта.

Если в вашем проекте Composer Drush не указан в качестве зависимости, вы можете установить Drush из командной строки следующим образом:

composer require drush/drush

 

Примечание: используйте Drush 9 сейчас

Из-за проблемы с Drush 10, на данный момент рекомендуется установить Drush 9 с composer, требующим drush / drush: ^ 9.0, что приводит к версии 9.7.2. 

Это даст вам последний (стабильный) Drush, который должен быть совместим с последним Drupal. Подробнее об этом читайте в матрице совместимости версий Drush и Drupal.

Чтобы проверить свою версию Drush, используйте

drush --version

Обязательные модули Drupal

Для миграции с использованием Drush вам необходимо скачать и включить следующие добавленные модули:

  • Migrate Upgrade: обеспечивает поддержку Drush для обновления с Drupal 6 или 7 до Drupal 8.
  • Migrate Plus: предоставляет расширения для базовой функциональности механизма миграции.
  • Migrate Tools: Предоставляет команды Drush, используемые позже на этой странице.

 

ВАЖНО! Обратите особое внимание на выбор правильной версии для каждого из трех представленных модулей. Пожалуйста, обратитесь к странице проекта по выбору версии, совместимой с вашей версией ядра Drupal 8.

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

Определите исходную базу данных

Это пример того, как определить детали подключения к базе данных для вашего исходного сайта Drupal 6/7. Если ваш исходный сайт использует префикс базы данных, обязательно укажите префикс. Вам нужно будет подключиться как к локальной базе данных разработки (default/по умолчанию), так и к исходной базе данных (D6 или D7). Ниже приведен пример того, как сделать это с Lando. Пример включает базу данных по умолчанию, настроенную для полноты.

Примечание. Чтобы избежать проблем, важно назвать ключ переноса базы данных миграцией, см. Раздел «Получение полевого сбоя для ядра Drupal версии 7.» при миграции.

Пример подключения к базе данных в settings.php

$databases['default']['default'] = [
  'database' => 'drupal8',
  'username' => 'drupal8',
  'password' => 'drupal8',
  'prefix' => '',
  'host' => 'database',
  'port' => '3306',
  'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql',
  'driver' => 'mysql',
];

$databases['migrate']['default'] = [
  'database' => 'drupal7db',
  'username' => 'drupal7db',
  'password' => 'drupal7db',
  'prefix' => '',
  'host' => 'd7db',
  'port' => '3306',
  'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql',
  'driver' => 'mysql',
];

Example .lando.yml

name: mywebsite
recipe: drupal8
config:
  webroot: web

# Create Drupal 7 database service, consider adding phpmyadmin
services:
  d7db:
    type: mariadb
    creds:
      user: drupal7db
      password: drupal7db
      database: drupal7db
    portforward: true

Импортируйте базу данных Drupal 7, предполагая, что файл dump базы данных называется mywebsite_db.sql.gz и находится в текущей папке:

lando db-import --host=d7db --user=drupal7db mywebsite_db.sql.gz

Вдохновение от https://github.com/thinktandem/migration_boilerplate.

Генерация миграций с использованием migrate-upgrade

Добавленный модуль Migrate Tools добавит команды Drush, такие как drush migrate-status и drush migrate-import. Полный список команд Drush, связанных с миграцией, можно найти внизу этой страницы.

Если вы попробуете выполнить команду drush migrate-status, ничего не делая, вы не увидите доступных для выполнения миграций. Это потому, что отдельные миграции должны быть сначала созданы на основе вашей исходной базы данных. Поскольку Migrate не знает, какой источник использовать, миграции еще не созданы.

Для генерации миграций вам понадобится команда Drush drush migrate-upgrade, которая предоставляется модулем обновления Migrate Upgrade.

Скорее всего, вы хотите генерировать только отдельные миграции, чтобы вы могли запускать их один за другим. Если это так, вам нужно использовать параметр --configure-only

drush migrate-upgrade --legacy-db-url=mysql://user:password@server/db --legacy-root=http://example.com --configure-only 

где

  • 'user' - это имя пользователя исходной базы данных.
  • «пароль» - пароль пользователя исходной базы данных
  • 'сервер' является сервером исходной базы данных
  • 'db' - исходная база данных
  • «http://example.com» является корнем вашего исходного сайта. Если устаревший сайт находится в локальной файловой системе, вы можете использовать путь к корневому каталогу Drupal в качестве значения для этой опции. Значение, которое вы здесь указываете, будет добавлено к путям отдельных файлов, чтобы найти и импортировать их.

 

Опция --legacy-db-key позволяет вам использовать массив $database с соответствующим ключом, определенным в settings.php.

Если ваш исходный сайт использует префикс таблицы в именах таблиц базы данных, вам необходимо добавить его в качестве дополнительного аргумента следующим образом. В этом примере префикс базы данных: «drupal_»

drush migrate-upgrade --legacy-db-url=mysql://user:password@server/db --legacy-db-prefix=drupal_ --legacy-root=http://example.com --configure-only 

Если вы не используете опцию --configure-only, drush migrate-upgrade сначала сгенерирует, а затем выполнит все миграции.

После запуска migrate-upgrade с параметром --configure-only вы запустите migrate-status, чтобы увидеть список возможных миграций:

drush migrate-status

Затем вы можете просмотреть и выборочно выполнить эти миграции. Для выполнения миграции по отдельности выполните:

drush migrate-import <migration name> 

Чтобы выполнить все миграции в списке, выполните:

drush migrate-import --all 

Запуск определенных миграций с помощью migrate-manifest

Также можно использовать manifest file для настройки определенного набора миграций. Это позволяет воспроизводить группы миграций воспроизводимым образом. Для этого метода вам также понадобится модуль Migrate Manifest. С помощью Migrate Manifest вы можете получить полный список доступных миграций, используя следующие команды:

drush migrate-template-list # Drush 8

или

drush migrate:template:list # Drush 9

Примечание. В настоящее время модуль Migrate Manifest не полностью совместим с Drush 10+.

Желаемые миграции определены как файл YAML, как показано в примере ниже. Вам нужно только перечислить миграции, которые вам нужны. Migrate Manifest попросит вас добавить дополнительные миграции, необходимые для устранения любых зависимостей. Миграции могут быть перечислены в любом порядке, они будут выполняться в правильном порядке на основе зависимостей.

# user 
- d6_user 
- d6_user_profile_field 
- d6_user_profile_field_instance 
- d6_user_profile_entity_display 
- d6_user_profile_entity_form_display 
- d6_profile_values:user 
- d6_filter_format 
- d6_user_role 
- d6_user_picture_entity_display 
- d6_user_picture_entity_form_display 
- d6_user_picture_file 
- d6_user_picture_field 
- d6_user_picture_field_instance 

# taxonomy 
- d6_taxonomy_vocabulary 
- d6_taxonomy_settings 
- d6_taxonomy_term 

# nodes 
- d6_node 
- d6_node_revision 
- d6_node_type 
- d6_view_modes 
- d6_filter_format 
- d6_field_instance_per_form_display 
- d6_field_instance_widget_settings 
- d6_field_formatter_settings 
- d6_field_instance 
- d6_field 
- d6_field_settings 
- d6_node_settings 
- d6_cck_field_values:* 
- d6_cck_field_revision:* 

# taxonomy fields 
- d6_term_node_revision 
- d6_term_node 
- d6_vocabulary_entity_display 
- d6_vocabulary_entity_form_display 
- d6_vocabulary_field_instance 
- d6_vocabulary_field 

# blocks 
- d6_block 
- d6_menu 

# custom blocks 
- d6_custom_block 
- d6_filter_format 

# book 
- d6_book 
- d6_book_settings 

# file migrations are configurable, see https://www.drupal.org/node/2257723 
- d6_file: 
    source: 
      conf_path: sites/assets 
    destination: 
      source_base_path: destination/base/path 
      destination_path_property: uri 

Поместите manifest file в место, доступное при запуске Drush. Рекомендуется сохранить его в вашей системе контроля версий, чтобы вы могли отслеживать изменения в ваших миграциях.

Убедитесь, что модули, используемые миграциями, перечисленными в файле манифеста, существуют и включены на исходном сайте (например, модуль поля для d6_field). В противном случае при выполнении миграций будут возникать ошибки.

Миграции, определенные в manifest file, выполняются из командной строки, как показано ниже. Замените URL базы данных и путь к файлу манифеста соответствующими значениями (например, migrate-upgrade, migrate-manifest примет URL-адрес MySQL или ключ массива settings.php):

drush migrate-manifest --legacy-db-url=mysql://d6user:d6pass@localhost/drupal_6 manifest.yml 

Примечания для пользователей Acquia Dev Desktop

Если вы используете Acquia Dev Desktop и у вас есть сайт Drupal 6 в Dev Desktop, учетными данными базы данных по умолчанию являются drupaluser с пустым паролем и порт 33067 для базы данных на IP-адресе 127.0.0.1. Все это приводит к тому, что в командах --legacy-db-url=mysql://drupaluser:@127.0.0.1:33067/drupal_6 предполагается, что имя базы данных drupal_6. Запустите drush status, если у вас возникли проблемы с подключением, чтобы проверить эти значения.

Справочник по командам миграции Drush

migrate-upgrade (no alias)

Предоставлено проектом Migrate Upgrade. Используйте это для запуска обновления с Drupal 6/7 до Drupal 8. Эта команда будет генерировать конфигурации миграции на основе конфигурации и содержимого исходного сайта.

См. Примеры ранее на этой странице документации.

Основной пример

drush migrate-upgrade --legacy-db-key=migrate

Опции

  • legacy-db-url: информация о соединении с базой данных для исходной базы данных.
  • legacy-db-prefix: Префикс таблицы базы данных для исходной базы данных.
  • legacy-root: путь к исходному сайту, используется для передачи содержимого из каталога файлов. Если файлы являются личными, то необходимо указать локальный путь к файлу, для публичных файлов также будут работать http (s).
  • только для конфигурации: используйте это для создания только конфигураций миграции. Когда эта опция установлена, миграции будут генерироваться так, чтобы они могли выполняться индивидуально с помощью «drush migrate-import».

migrate-status (ms)

Предоставляется модулем Migrate Tools. Используйте это, чтобы получить список всех миграций с их текущим статусом.

Основной пример

drush migrate-status

migrate-import (mi)

Предоставляется модулем Migrate Tools. Используйте это для выполнения одного или нескольких процессов миграции. Это обычно используется с пользовательскими миграциями из не-Drupal источников. Например, если вы создали и импортировали пользовательскую конфигурацию миграции, эту команду можно использовать для ее запуска.

Основные примеры

drush migrate-import migration_id
drush migrate-import --group=files

Опции

  • all: запускать все настроенные миграции.
  • group: Запустить все миграции, принадлежащие определенной группе.
  • limit: ограничение на количество элементов для обработки в каждой миграции.
  • feedback: частота сообщений о прогрессе, в обработанных элементах.
  • idlist: разделенный запятыми список идентификаторов источника для импорта.
  • update: перенос новых элементов, а также ранее перенесенных элементов, которые были обновлены в источнике.
  • force: Принудительно запустить операцию, даже если все зависимости не выполнены.

 

Общие случаи использования

  • Когда используется migrate-upgrade --configure-only, создаются объекты конфигурации. Поскольку поведение по умолчанию в Drupal 8 не допускает перезаписи существующих объектов конфигурации, миграция-обновление не может использоваться для запуска миграции после migrate-upgrade --configure-only. Вместо этого используйте migrate-import.
  • Когда пользовательская миграция создается и импортируется (через пользовательский интерфейс управления конфигурацией или drush config-import), используйте миграцию-импорт для запуска миграции.

Совет для профессионалов: если вы импортировали пользовательскую конфигурацию миграции и вам необходимо обновить и повторно импортировать ее, используйте модуль диспетчера обновлений конфигурации.

migrate-rollback (mr)

Предоставляется модулем Migrate Tools. Используйте это для отката миграции. Обычно это используется для тестирования или если у вас были проблемы и вам нужно начать все сначала. Используйте это с идентификатором или группой задачи миграции.

Основные примеры

drush migrate-rollback migration_id
drush migrate-rollback --group=files

migrate-stop (mst)

Предоставляется модулем Migrate Tools. Используйте это, чтобы остановить активную операцию миграции.

Основной пример

drush migrate-stop migration_id

migrate-reset-status (mrs)

Предоставляется модулем Migrate Tools. Используйте это, чтобы сбросить статус активной миграции обратно в режим ожидания.

Основной пример

drush migrate-reset-status migration_id

migrate-messages (mmsg)

Предоставляется модулем Migrate Tools. Используйте это для просмотра любых сообщений, связанных с миграцией. Это полезно использовать при сбоях в процессе миграции. Это покажет вам, почему они потерпели неудачу и что их вызвало.

Основной пример

drush migrate-messages migration_id

migrate-fields-source (mfs)

Предоставляется модулем Migrate Tools. Используйте это, чтобы перечислить поля, доступные для сопоставления в источнике.

Основной пример

drush migrate-fields-source migration_id

 

Drupal’s online documentation is © 2000-2020 by the individual contributors and can be used in accordance with the Creative Commons License, Attribution-ShareAlike 2.0. PHP code is distributed under the GNU General Public License.