Jak mogę zaimportować konfigurację do innej witryny?

49

Wystąpił ten błąd podczas próby zaimportowania konfiguracji innej witryny:

Nie można zaimportować konfiguracji etapowej, ponieważ pochodzi ona z innej witryny niż ta witryna. Możesz synchronizować konfigurację tylko między sklonowanymi instancjami tej witryny.

Mam 10 klientów i muszę zsynchronizować konfigurację mojej witryny z 10 różnymi stronami internetowymi.
Identyfikator UUID witryny jest problemem związanym z udostępnianiem konfiguracji z inną witryną. Czy jest jakieś rozwiązanie?

Axel Briche
źródło
1
Kolejną miłą odpowiedź tutaj drupal.stackexchange.com/q/152584/39617
digitgopher

Odpowiedzi:

55

UUID można uzyskać za pomocą:

drush config-get "system.site" uuid

I możesz to zmienić za pomocą

drush config-set "system.site" uuid "fjfj34-e3bb-2ab8-4d21-9100-b5etgetgd99d5"

Dzięki temu musisz mieć te same strony.

Gucho Ca
źródło
Pracował dla mnie ... trzy lata później. Dzięki!
mrlexington
17

Zarządzanie konfiguracją pozwala tylko na synchronizację konfiguracji między tą samą witryną lub projektem, aby uniknąć problemów z importowaniem konfiguracji z witryny a.com do b.com, w celu przeprowadzenia tej weryfikacji Drupal 8 generuje identyfikator UUID dla każdej witryny.

Możesz uzyskać bieżący identyfikator UUID witryny, wykonując następujące polecenie:

drush cget system.site

Powyższe polecenie będzie miało wyjście podobne do następnej listy:

uuid: 236fa77c-d83e-42de-8a03-03c574c00160
name: Drupal 8
mail: user@example.com
slogan: ''
page:
  403: ''
  404: ''
  front: node
admin_compact_mode: false
weight_select_max: 100
langcode: en

Import konfiguracji ma inny identyfikator UUID, możesz potwierdzić identyfikator UUID za pomocą następującego polecenia

cat sites/default/config/staging/system.site.yml

Z tego powodu musisz zmienić wartość Site UUID za pomocą następującego polecenia Drush:

drush cedit system.site

Powyższe polecenie umożliwia użycie ulubionego edytora tekstu do ustawienia tego samego UUID obecnego w tymczasowych plikach konfiguracyjnych.

cat sites/default/config/staging/system.site.yml

Po zmianie identyfikatora UUID i zmianie uprawnień, jeśli ponownie odwiedzisz stronę example.com/admin/config/development/configuration, zobaczysz wszystkie zmiany, usunięcia, zmiany nazw i uzupełnienia.

źródło: http://enzolutions.com/articles/2014/08/27/understanding-configuration-management-in-drupal-8/

rpayanm
źródło
9
Poprawnie, ale pamiętaj, że zmiana UUID strony bez zmiany innych oznacza, że ​​drupal będzie traktował każde pole / typ węzła / widok / ..., który ma inny UUID jako inną rzecz i najpierw usunie stary, a następnie ponownie utwórz go ponownie, co spowoduje zasadniczo usunięcie całej zawartości.
Berdir
Ok, dziękuję, ale nie jest przyjazny dla użytkownika bez dedykowanego serwera i wiedzy o systemie Linux, istnieje rozwiązanie dla użytkowników podstawowych / początkujących (bez ssh i wierszy poleceń, tylko serwer ftp), proszę? Drush potrzebuje linii poleceń i nie jest przyjazny dla moich klientów.
Axel Briche,
Co się stanie dokładnie, jeśli zmienię identyfikator UUID witryny istniejącej witryny Drupal (świeża instalacja), aby pasowała do wyeksportowanej konfiguracji (z drush config-set system.site uuid "abcdef-...")?
GiDo
1
Jednoliniowe polecenie, aby skopiować UUID serwisu aktualizacji. drush -y cset system.site uuid $(cat /path/to/config/system.site.yml | awk '/uuid/ { print $2 }')
ya.teck
10

Korzystanie z konsoli Drupal

Możesz to zrobić z Drupal Console , zastępując klawisz system.site- uuid.

$ drupal config:override

Następnie po wyświetleniu monitu wprowadź nazwę system.sitekonfiguracji, klucz konfiguracji uuidi odpowiednią wartość.

Enter configuration name [advagg.settings]:
> system.site

Enter the configuration key [uuid]:
> uuid

Enter the configuration value:
> 656165f1-1017-45a1-9bd8-f70e31cf29ab

Configuration name system.site
------------------- -------------------------------------- -------------------------------------- 
Configuration key   Original Value                         Override Value                        
------------------- -------------------------------------- -------------------------------------- 
uuid                7622bb19-5f3f-452d-82a3-c0a88241e789   656165f1-1017-45a1-9bd8-f70e31cf29ab  
------------------- -------------------------------------- -------------------------------------- 
MrUpsidown
źródło
1
Myślę, że to powinna być zaakceptowana odpowiedź.
Badri
7

Identyfikator UUID witryny można uzyskać bez dostępu do witryny lub bazy danych.

Jeśli nie masz dostępu do oryginalnej witryny / bazy danych, nadal możesz synchronizować z dostarczonymi plikami konfiguracyjnymi. Konfiguracja będzie zawierać identyfikator UUID Twojej witryny, więc musisz ją najpierw ustawić.

  1. Znajdź katalog config / sync: jeśli zostanie przeniesiony, możesz znaleźć, gdzie został ustawiony settings.php. Poszukaj:, $config_directories['sync']która wyświetli ścieżkę.

  2. Idź do tej ścieżce config i szukać pliku: system.site.yml W tym pliku, poszukaj uuid: 86b376c5-385e-4d13-bf00-e5e5443540e3(będziesz mieć inną wartość, oczywiście). Skopiuj tę wartość.

  3. W drush ustaw swoją stronę na ten sam identyfikator, który właśnie odkryliśmy: drush cset system.site uuid 86b376c5-385e-4d13-bf00-e5e5443540e3

  4. Zsynchronizuj konfigurację za pomocą drush drush cim -y

  5. Jeśli pojawią się błędy, przeczytaj je . Miałem:

    • brakujący moduł (który musiałem pobrać i włączyć)
    • treść z modułu skrótów, którą najpierw musiałam usunąć, na:
    • admin> config> Interfejs użytkownika> Skróty

Kiedy to zrobiłem, przestawiłem krawędź i wszystko działało jak urok!

Zainstalowałem lokalną instancję D8 przed próbą przywrócenia z dostarczonej konfiguracji.

Atomox
źródło
4

Możesz zmienić UUID dla strony docelowej za pomocą drush cset i drush cget.

Najpierw pobierz źródłowy identyfikator UUID:

$ cd ~/Sites/sourcesite <-- your drupal site root
$ drush cget system.site uuid
This will return something like:
'system.site:uuid': 86b376c5-385e-4d13-bf00-e5e5443540e3 

Zamień docelowy UUID

cd ~/Sites/destinationsite <-- your drupal site root
$ drush cset system.site uuid 86b376c5-385e-4d13-bf00-e5e5443540e3 

Teraz możesz:

  1. Przejdź do strony docelowej w przeglądarce w admin / config / development / configuration / full / import
  2. wybierz archiwum konfiguracji i wybierz prześlij
  3. Zobaczysz listę wszystkich elementów konfiguracji
  4. Przewiń w dół i kliknij przycisk importuj wszystko
Selwyn Polit
źródło
0

Jeśli postępujesz zgodnie z instrukcjami zawartymi w odpowiedzi Gucho Ca i nadal masz problem, upewnij się, że masz uprawnienia do zapisu w katalogu konfiguracji synchronizacji. Daje ci ten sam komunikat o błędzie, nawet jeśli twoje identyfikatory są takie same, ale twój system nie ma uprawnień do zapisu.

Dobrym sposobem na sprawdzenie jest kliknięcie karty Importuj w sekcji Synchronizuj. Jeśli nie masz odpowiednich uprawnień do plików, zostaniesz o tym poinformowany.

MikeD
źródło