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?


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.


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/


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  
------------------- -------------------------------------- -------------------------------------- 

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.


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

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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.