Ažuriranje pomoću Drush-a
Drush je komandna linija i interfejs za skriptovanje za Drupal. Ažuriranje na Drupal 8 pomoću Drush-a predstavlja alternativu korišćenju korisničkog interfejsa u pregledaču. Ažuriranje na Drupal 8 pomoću Drush-a je veoma korisno prilikom migracije složenih sajtova jer omogućava pokretanje migracija pojedinačno i omogućava izvršavanje povratka (rollback).
Instalacija Drush-a pomoću Composera
Drupal 8 sajtovi mogu biti izgrađeni koristeći Composer. Ako odlučite da koristite drupal-composer/drupal-project kao Composer projekat šablon, već ćete imati Drush jer je on naveden kao zavisnost u fajlu composer.json projekta.
Ako Drush nije naveden kao zavisnost u vašem Composer projektu, možete ga instalirati iz komandne linije na sledeći način:
composer require drush/drush
Napomena: koristite Drush 9 trenutno
Zbog problema sa Drush 10, trenutno se preporučuje instalacija Drush 9 putem composera, zahtevajući drush/drush:^9.0, što dovodi do verzije 9.7.2.
Ovo će vam dati najnoviji (stabilni) Drush koji bi trebalo da bude kompatibilan sa najnovijim Drupal-om. Više informacija možete pronaći u matrici kompatibilnosti verzija Drush-a i Drupal-a.
Da biste proverili verziju Drush-a, koristite
drush --version
Obavezni Drupal moduli
Za migraciju korišćenjem Drush-a potrebno je da preuzmete i omogućite sledeće dodatne module:
- Migrate Upgrade: omogućava Drush podršku za ažuriranje sa Drupal 6 ili 7 na Drupal 8.
- Migrate Plus: pruža proširenja za osnovnu funkcionalnost mehanizma migracije.
- Migrate Tools: pruža Drush komande koje se kasnije koriste na ovoj stranici.
VAŽNO! Obratite posebnu pažnju na izbor prave verzije za svaki od tri navedena modula. Molimo vas da pogledate stranicu projekta kako biste odabrali verziju kompatibilnu sa vašom verzijom Drupal 8 jezgra.
Za dodatne informacije o različitim modulima za ažuriranje, pogledajte spisak modula za ažuriranje.
Definišite izvornu bazu podataka
Ovo je primer kako definisati detalje veze ka bazi podataka za vaš izvorni Drupal 6/7 sajt. Ako vaš izvorni sajt koristi prefiks baze podataka, obavezno ga navedite. Potrebno je povezati se i sa lokalnom razvojnom bazom podataka (default/po defaultu), i sa izvornom bazom podataka (D6 ili D7). Ispod je primer kako se to radi sa Lando alatom. Primer uključuje podrazumevanu bazu podataka podešenu radi potpune ilustracije.
Napomena. Da biste izbegli probleme, važno je da ključ migracije u bazi podataka bude nazvan kao u migraciji, pogledajte deo „Dobijanje greške polja za Drupal 7 jezgro“ pri migraciji.
Primer povezivanja sa bazom podataka u 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', ];
Primer .lando.yml
name: mywebsite recipe: drupal8 config: webroot: web # Kreirajte Drupal 7 bazu podataka, razmislite o dodavanju phpmyadmin-a services: d7db: type: mariadb creds: user: drupal7db password: drupal7db database: drupal7db portforward: true
Uvezite Drupal 7 bazu podataka pod pretpostavkom da je dump fajl baze podataka nazvan mywebsite_db.sql.gz i nalazi se u trenutnom direktorijumu:
lando db-import --host=d7db --user=drupal7db mywebsite_db.sql.gz
Inspirisano sa https://github.com/thinktandem/migration_boilerplate.
Generisanje migracija korišćenjem migrate-upgrade
Dodatni modul Migrate Tools će dodati Drush komande kao što su drush migrate-status i drush migrate-import. Potpun spisak Drush komandi vezanih za migraciju možete pronaći na dnu ove stranice.
Ako pokušate da pokrenete komandu drush migrate-status bez ikakvog prethodnog podešavanja, nećete videti dostupne migracije za izvršavanje. To je zato što pojedinačne migracije prvo moraju biti generisane na osnovu vaše izvornog baze podataka. Pošto Migrate ne zna koji izvor da koristi, migracije još nisu kreirane.
Za generisanje migracija koristi se Drush komanda drush migrate-upgrade, koju pruža modul za ažuriranje Migrate Upgrade.
Većinom ćete želeti da generišete samo pojedinačne migracije, kako biste mogli da ih pokrećete jednu po jednu. U tom slučaju, treba da koristite opciju --configure-only
drush migrate-upgrade --legacy-db-url=mysql://user:password@server/db --legacy-root=http://example.com --configure-only
gde
- 'user' je korisničko ime izvornog baze podataka.
- 'password' je lozinka korisnika izvornog baze podataka
- 'server' je server izvornog baze podataka
- 'db' je izvorna baza podataka
- 'http://example.com' je korenski URL vašeg izvornog sajta. Ako je stari sajt na lokalnom fajl sistemu, možete koristiti putanju do Drupal korenskog direktorijuma kao vrednost ove opcije. Vrednost koju navedete ovde biće dodata putanjama pojedinačnih fajlova da bi se oni pronašli i importovali.
Opcija --legacy-db-key vam omogućava da koristite $database niz sa odgovarajućim ključem definisanim u settings.php.
Ako vaš izvorni sajt koristi prefiks tabele u imenima tabela baze podataka, morate ga dodati kao dodatni argument na sledeći način. U ovom primeru prefiks baze je „drupal_“
drush migrate-upgrade --legacy-db-url=mysql://user:password@server/db --legacy-db-prefix=drupal_ --legacy-root=http://example.com --configure-only
Ako ne koristite opciju --configure-only, drush migrate-upgrade će prvo generisati, a zatim izvršiti sve migracije.
Nakon pokretanja migrate-upgrade sa opcijom --configure-only, možete pokrenuti migrate-status da biste videli listu dostupnih migracija:
drush migrate-status
Zatim možete pregledati i selektivno izvršiti ove migracije. Za izvršavanje pojedinačne migracije pokrenite:
drush migrate-import <migration name>
Da biste izvršili sve migracije u listi, pokrenite:
drush migrate-import --all
Pokretanje određenih migracija pomoću migrate-manifest
Takođe je moguće koristiti manifest fajl za podešavanje određenog skupa migracija. Ovo omogućava reproduciranje grupa migracija na kontrolisan način. Za ovaj metod potrebno je imati modul Migrate Manifest. Pomoću Migrate Manifest možete dobiti punu listu dostupnih migracija koristeći sledeće komande:
drush migrate-template-list # Drush 8
ili
drush migrate:template:list # Drush 9
Napomena: Trenutno modul Migrate Manifest nije u potpunosti kompatibilan sa Drush 10+.
Željene migracije su definisane kao YAML fajl, kao što je prikazano u primeru ispod. Potrebno je samo navesti migracije koje želite. Migrate Manifest će tražiti da dodate dodatne migracije koje su potrebne za rešavanje zavisnosti. Migracije mogu biti navedene u bilo kom redosledu, one će se izvršavati u ispravnom redosledu na osnovu zavisnosti.
# 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
Smestite manifest fajl na lokaciju dostupnu prilikom pokretanja Drush-a. Preporučuje se da ga sačuvate u sistemu kontrole verzija kako biste mogli pratiti promene u migracijama.
Proverite da li moduli koje migracije u manifest fajlu koriste postoje i omogućeni su na izvornom sajtu (na primer, modul polja za d6_field). U suprotnom, izvršavanje migracija će prijavljivati greške.
Migracije definisane u manifest fajlu se izvršavaju iz komandne linije, kao što je prikazano ispod. Zamenite URL baze podataka i putanju do manifest fajla odgovarajućim vrednostima (na primer, migrate-upgrade i migrate-manifest prihvataju MySQL URL ili ključ niza iz settings.php):
drush migrate-manifest --legacy-db-url=mysql://d6user:d6pass@localhost/drupal_6 manifest.yml
Napomene za korisnike Acquia Dev Desktop-a
Ako koristite Acquia Dev Desktop i imate Drupal 6 sajt u Dev Desktop-u, podrazumevani kredencijali za bazu podataka su drupaluser bez lozinke i port 33067 za bazu na IP adresi 127.0.0.1. Sve ovo znači da u komandama sa --legacy-db-url=mysql://drupaluser:@127.0.0.1:33067/drupal_6 treba da pretpostavite da se baza zove drupal_6. Pokrenite drush status ako imate problema sa konekcijom da biste proverili ove vrednosti.
Priručnik za Drush komande vezane za migraciju
migrate-upgrade (bez aliasa)
Obezbeđeno projektom Migrate Upgrade. Koristite ovo za pokretanje ažuriranja sa Drupal 6/7 na Drupal 8. Ova komanda generiše konfiguracije migracije na osnovu konfiguracije i sadržaja izvornog sajta.
Pogledajte primere ranije na ovoj stranici dokumentacije.
Osnovni primer
drush migrate-upgrade --legacy-db-key=migrate
Opcije
- legacy-db-url: informacije o konekciji ka izvornoj bazi podataka.
- legacy-db-prefix: prefiks tabela u izvornoj bazi podataka.
- legacy-root: putanja do izvornog sajta, koristi se za prenos sadržaja iz direktorijuma fajlova. Ako su fajlovi privatni, morate navesti lokalnu putanju do fajlova, za javne fajlove mogu se koristiti i http(s) URL-ovi.
- only-configure: koristi se za kreiranje samo konfiguracija migracije. Kada je ova opcija uključena, migracije će biti generisane tako da se mogu pojedinačno izvršavati pomoću „drush migrate-import“.
migrate-status (ms)
Obezbeđeno modulom Migrate Tools. Koristite ovo da dobijete listu svih migracija sa njihovim trenutnim statusom.
Osnovni primer
drush migrate-status
migrate-import (mi)
Obezbeđeno modulom Migrate Tools. Koristite ovo za pokretanje jedne ili više migracija. Obično se koristi za korisničke migracije iz izvora koji nisu Drupal. Na primer, ako ste kreirali i uvezli korisničku migracionu konfiguraciju, ovu komandu možete koristiti za pokretanje migracije.
Osnovni primeri
drush migrate-import migration_id drush migrate-import --group=files
Opcije
- all: pokreće sve konfigurisane migracije.
- group: pokreće sve migracije koje pripadaju određenoj grupi.
- limit: ograničenje broja stavki koje se obrađuju u svakoj migraciji.
- feedback: učestalost prikaza poruka o napretku u obrađenim stavkama.
- idlist: lista identifikatora izvora za import, razdvojena zarezima.
- update: prenosi nove stavke, kao i prethodno prenete koje su izmenjene u izvoru.
- force: forsira pokretanje operacije čak i ako zavisnosti nisu ispunjene.
Uobičajeni slučajevi upotrebe
- Kada se koristi migrate-upgrade --configure-only, kreiraju se konfiguracioni objekti. Pošto podrazumevano ponašanje u Drupal 8 ne dozvoljava prepisivanje postojećih konfiguracionih objekata, migrate-upgrade se ne može koristiti za pokretanje migracije nakon migrate-upgrade --configure-only. Umesto toga, koristi se migrate-import.
- Kada je korisnička migracija kreirana i uvezena (putem UI ili drush config-import), koristi se migrate-import za pokretanje migracije.
Savet za napredne korisnike: ako ste uvezli korisničku migracionu konfiguraciju i potrebno je da je ažurirate i ponovo uvezete, koristite modul Config Update Manager.
migrate-rollback (mr)
Obezbeđeno modulom Migrate Tools. Koristite ovo za poništavanje migracije. Obično se koristi za testiranje ili ako imate problema i želite da sve počnete iz početka. Koristite sa identifikatorom ili grupom migracije.
Osnovni primeri
drush migrate-rollback migration_id drush migrate-rollback --group=files
migrate-stop (mst)
Obezbeđeno modulom Migrate Tools. Koristite ovo da zaustavite aktivnu migracionu operaciju.
Osnovni primer
drush migrate-stop migration_id
migrate-reset-status (mrs)
Obezbeđeno modulom Migrate Tools. Koristite ovo da resetujete status aktivne migracije nazad u stanje čekanja.
Osnovni primer
drush migrate-reset-status migration_id
migrate-messages (mmsg)
Obezbeđeno modulom Migrate Tools. Koristite ovo da pregledate sve poruke povezane sa migracijom. Korisno je koristiti kod grešaka u toku migracije jer pokazuje razloge neuspeha i uzroke.
Osnovni primer
drush migrate-messages migration_id
migrate-fields-source (mfs)
Obezbeđeno modulom Migrate Tools. Koristite ovo da navedete polja dostupna za mapiranje u izvoru.
Osnovni primer
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.