logo

Extra Block Types (EBT) - Nieuwe Layout Builder ervaring❗

Extra Block Types (EBT) - gestileerde, aanpasbare bloktypes: Slideshows, Tabs, Cards, Accordions en vele andere. Ingebouwde instellingen voor achtergrond, DOM Box, javascript-plugins. Ervaar vandaag al de toekomst van layout building.

Demo EBT-modules Download EBT-modules

❗Extra Paragraph Types (EPT) - Nieuwe Paragraphs ervaring

Extra Paragraph Types (EPT) - analoge op paragrafen gebaseerde set modules.

Demo EPT-modules Download EPT-modules

Scroll
01/10/2025, by Ivan

Drush is een command line shell en scripting-interface voor Drupal. Upgraden naar Drupal 8 met Drush is een alternatief voor het gebruik van de browserinterface. Upgraden naar Drupal 8 met Drush is bijzonder nuttig bij het migreren van complexe sites, omdat je migraties één voor één kunt uitvoeren en ook kunt terugdraaien.

Installatie van Drush met Composer

Drupal 8 sites kunnen met Composer worden beheerd. Als je ervoor kiest om drupal-composer/drupal-project te gebruiken als projectsjabloon, heb je Drush al beschikbaar omdat dit is opgegeven als afhankelijkheid in het composer.json bestand van het project.

Als Drush niet als afhankelijkheid is opgegeven in jouw Composer-project, kun je Drush installeren via de opdrachtregel als volgt:

composer require drush/drush

Let op: gebruik nu Drush 9

Door een probleem met Drush 10 wordt aanbevolen Drush 9 te installeren met composer require drush/drush:^9.0, wat resulteert in versie 9.7.2. 

Dit geeft je de laatste stabiele Drush, die compatibel zou moeten zijn met de laatste versie van Drupal. Zie de compatibiliteitsmatrix van Drush en Drupal voor meer informatie.

Controleer je Drush-versie met:

drush --version

Vereiste Drupal modules

Voor migratie met Drush moet je de volgende contributed modules downloaden en inschakelen:

  • Migrate Upgrade: biedt Drush-ondersteuning voor upgrades van Drupal 6 of 7 naar Drupal 8.
  • Migrate Plus: biedt uitbreidingen voor de basisfunctionaliteit van het migratiekader.
  • Migrate Tools: levert Drush-commando’s die hieronder op deze pagina worden gebruikt.

BELANGRIJK! Zorg ervoor dat je de juiste versie kiest van elk van deze drie modules. Raadpleeg de projectpagina om de juiste versie te selecteren die compatibel is met jouw versie van Drupal 8 core.

Zie voor meer informatie over de verschillende upgrade-modules de lijst van upgrade-modules.

Definieer de bron-database

Voorbeeld van hoe je de databaseverbinding definieert voor jouw Drupal 6/7 bronsite. Als de bronsite een databaseprefix gebruikt, moet je deze ook opgeven. Je moet zowel verbinding maken met de lokale ontwikkelingsdatabase (default) als de brondatabase (D6 of D7). Hieronder een voorbeeld met Lando. Het voorbeeld bevat ook de default databaseconfiguratie voor volledigheid.

Let op: om problemen te voorkomen is het belangrijk dat de migratie-database sleutel «migrate» wordt genoemd, zie «Getting field failure for Drupal 7 core» bij migratie.

Voorbeeld instellingen in 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',
];

Voorbeeld .lando.yml

name: mywebsite
recipe: drupal8
config:
  webroot: web

# Maak Drupal 7 database service, overweeg phpmyadmin toe te voegen
services:
  d7db:
    type: mariadb
    creds:
      user: drupal7db
      password: drupal7db
      database: drupal7db
    portforward: true

Importeer de Drupal 7 database (aangenomen dat de dump mywebsite_db.sql.gz heet en in de huidige map staat):

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

Inspiratiebron: https://github.com/thinktandem/migration_boilerplate.

Genereren van migraties met migrate-upgrade

De Migrate Tools module voegt Drush-commando’s toe zoals drush migrate-status en drush migrate-import. Een volledige lijst vind je verderop.

Als je drush migrate-status uitvoert zonder migraties aan te maken, zie je geen migraties. Dit komt doordat migraties eerst moeten worden aangemaakt op basis van de bron-database. Migrate weet anders niet welke bron moet worden gebruikt.

Om migraties aan te maken gebruik je drush migrate-upgrade, geleverd door de Migrate Upgrade module.

Vaak wil je migraties alleen configureren zodat je ze afzonderlijk kunt uitvoeren. Gebruik daarvoor de optie --configure-only:

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

waarbij:

  • 'user' de gebruikersnaam is van de bron-database
  • 'password' het wachtwoord is van de bron-database
  • 'server' de database-server is
  • 'db' de bron-database is
  • 'http://example.com' de root van jouw bronsite is. Voor een lokale site kun je het pad naar de Drupal-root gebruiken. Dit pad wordt toegevoegd bij het importeren van bestanden.

De optie --legacy-db-key laat je een sleutel gebruiken uit $databases in settings.php.

Als jouw bron een tabelprefix gebruikt, geef die dan mee met --legacy-db-prefix, bijvoorbeeld «drupal_»:

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

Zonder --configure-only zal drush migrate-upgrade alle migraties meteen genereren en uitvoeren.

Na migrate-upgrade met --configure-only kun je migrate-status gebruiken om de migratielijst te bekijken:

drush migrate-status

Daarna kun je migraties afzonderlijk uitvoeren:

drush migrate-import <migration name>

Of alle migraties tegelijk uitvoeren:

drush migrate-import --all

Uitvoeren van specifieke migraties met migrate-manifest

Met een manifest-bestand kun je een specifieke set migraties instellen en uitvoeren. Dit maakt het mogelijk groepen migraties reproduceerbaar uit te voeren. Hiervoor heb je de module Migrate Manifest nodig. Je krijgt een lijst beschikbare migraties met:

drush migrate-template-list # Drush 8

of

drush migrate:template:list # Drush 9

Let op: Migrate Manifest is nog niet volledig compatibel met Drush 10+.

Migraties worden gedefinieerd in YAML zoals in dit voorbeeld:

# 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 zijn configureerbaar, zie https://www.drupal.org/node/2257723 
- d6_file: 
    source: 
      conf_path: sites/assets 
    destination: 
      source_base_path: destination/base/path 
      destination_path_property: uri 

Plaats het manifest-bestand in een map die toegankelijk is bij het draaien van Drush. Het is aangeraden dit bestand onder versiebeheer te bewaren.

Zorg ervoor dat modules die nodig zijn door de migraties in het manifest aanwezig en ingeschakeld zijn op de bronsite (bijvoorbeeld de field-module voor d6_field). Anders krijg je fouten.

Voer de manifest-migraties uit met:

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

Opmerkingen voor Acquia Dev Desktop gebruikers

Als je Acquia Dev Desktop gebruikt met een Drupal 6 site, zijn de standaard databasegegevens: gebruiker drupaluser, leeg wachtwoord, en poort 33067 op 127.0.0.1. Dit resulteert in een commando zoals --legacy-db-url=mysql://drupaluser:@127.0.0.1:33067/drupal_6, waarbij de db-naam drupal_6 is. Gebruik drush status om deze waarden te controleren bij verbindingsproblemen.

Drush migratie commando’s overzicht

migrate-upgrade (geen alias)

Wordt geleverd door de module Migrate Upgrade. Gebruik dit om een upgrade uit te voeren van Drupal 6/7 naar Drupal 8. Dit genereert migratieconfiguraties op basis van de configuratie en inhoud van de bronsite.

Basisvoorbeeld

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

Opties:

  • legacy-db-url: verbindingsgegevens van de brondatabase.
  • legacy-db-prefix: tabelprefix van de brondatabase.
  • legacy-root: pad naar de bronsite, nodig voor bestandsmigraties.
  • configure-only: maak alleen migratieconfiguraties aan. Daarna kun je ze met drush migrate-import uitvoeren.

migrate-status (ms)

Wordt geleverd door Migrate Tools. Geeft een lijst met migraties en hun status.

drush migrate-status

migrate-import (mi)

Wordt geleverd door Migrate Tools. Voert een of meerdere migraties uit. Vaak gebruikt bij custom migraties vanuit externe bronnen.

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

Opties:

  • all: voer alle migraties uit.
  • group: voer alle migraties uit in een groep.
  • limit: aantal items per batch.
  • feedback: frequentie van voortgangsrapportage.
  • idlist: lijst bron-ID’s.
  • update: voer updates uit voor gewijzigde data.
  • force: voer uit ook als afhankelijkheden niet compleet zijn.

Gebruiksscenario’s:

  • Bij gebruik van migrate-upgrade --configure-only worden alleen configuraties aangemaakt. Gebruik daarna migrate-import om migraties te draaien.
  • Bij custom migratieconfiguraties gebruik je migrate-import om deze te starten.

Tip: als je custom migratieconfiguraties hebt geïmporteerd en je moet ze updaten en opnieuw importeren, gebruik dan de Configuration Update Manager module.

migrate-rollback (mr)

Wordt geleverd door Migrate Tools. Draait migraties terug. Handig voor testen of bij fouten. Gebruik met migratie-id of groep.

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

migrate-stop (mst)

Wordt geleverd door Migrate Tools. Stopt een actieve migratie.

drush migrate-stop migration_id

migrate-reset-status (mrs)

Wordt geleverd door Migrate Tools. Zet de status van een migratie terug naar «waiting».

drush migrate-reset-status migration_id

migrate-messages (mmsg)

Wordt geleverd door Migrate Tools. Toont meldingen die zijn gelogd tijdens een migratie. Nuttig bij fouten.

drush migrate-messages migration_id

migrate-fields-source (mfs)

Wordt geleverd door Migrate Tools. Toont velden die beschikbaar zijn in de bron om te mappen.

drush migrate-fields-source migration_id