Wie kann ich die Konfiguration auf einer anderen Site importieren?

49

Ich habe diesen Fehler, wenn ich versuche, die Konfiguration einer anderen Site zu importieren:

Die bereitgestellte Konfiguration kann nicht importiert werden, da sie von einer anderen Site als dieser Site stammt. Sie können die Konfiguration nur zwischen geklonten Instanzen dieser Site synchronisieren.

Ich habe 10 Kunden und muss meine Website-Konfiguration mit 10 verschiedenen Websites synchronisieren.
Die Site-UUID ist ein Problem beim Freigeben einer Konfiguration für eine andere Website. Gibt es eine lösung

Axel Briche
quelle
1
Noch eine nette Antwort hier drupal.stackexchange.com/q/152584/39617
digitgopher

Antworten:

55

Sie können die UUID erhalten mit:

drush config-get "system.site" uuid

Und Sie können es mit ändern

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

Damit musst du die gleichen Seiten haben.

Gucho Ca
quelle
Arbeitete für mich ... drei Jahre später. Vielen Dank!
Mrlexington
17

Die Konfigurationsverwaltung erlaubt nur die Synchronisierung der Konfiguration zwischen derselben Site oder demselben Projekt, um Probleme beim Import der Konfiguration von Site a.com zu Site b.com zu vermeiden. Um diese Überprüfung durchzuführen, generiert Drupal 8 eine UUID für jede Site.

Sie erhalten die UUID Ihrer aktuellen Site, indem Sie den folgenden Befehl ausführen:

drush cget system.site

Mit dem obigen Befehl erhalten wir eine ähnliche Ausgabe wie mit der nächsten Auflistung:

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

Der Konfigurationsimport hat eine andere UUID. Sie können die UUID mit dem folgenden Befehl bestätigen

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

Aus diesem Grund müssen Sie den Wert der Site-UUID mit dem folgenden Drush-Befehl ändern:

drush cedit system.site

Mit dem obigen Befehl können Sie Ihren bevorzugten Texteditor verwenden, um dieselbe UUID festzulegen, die in Staging-Konfigurationsdateien vorhanden ist.

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

Wenn Sie nach dem Ändern der UUID und der Berechtigungen die Seite example.com/admin/config/development/configuration erneut aufrufen, werden alle Änderungen, Löschungen, Umbenennungen und Ergänzungen angezeigt.

Quelle: http://enzolutions.com/articles/2014/08/27/understanding-configuration-management-in-drupal-8/

rpayanm
quelle
9
Richtig, aber denken Sie daran, dass das Ändern der Site-UUID ohne Änderung anderer bedeutet, dass Drupal jedes Feld / Knotentyp / Ansicht / ... mit einer anderen UUID als eine andere Sache behandelt und zuerst die alte löscht und dann die neue. Erstellen Sie es erneut, wodurch im Wesentlichen alle Ihre Inhalte gelöscht werden.
Berdir
Ok, danke, aber es ist nicht benutzerfreundlich für einen Benutzer ohne dedizierten Server und Linux-Kenntnisse. Gibt es eine Lösung für Basis- / Anfängerbenutzer (ohne SSH und Befehlszeilen, nur ein FTP-Server)? Drush brauchen Befehlszeilen und es ist nicht benutzerfreundlich für meine Kunden.
Axel Briche
Was passiert genau, wenn ich die Site-UUID einer vorhandenen Drupal-Website (Neuinstallation) an die exportierte Konfiguration anpasse (mit drush config-set system.site uuid "abcdef-...")?
GiDo
1
Einzeiliger Befehl zum Kopieren der UUID der Aktualisierungssite. drush -y cset system.site uuid $(cat /path/to/config/system.site.yml | awk '/uuid/ { print $2 }')
ya.teck
10

Verwenden der Drupal-Konsole

Sie können dasselbe mit der Drupal-Konsole erreichen, indem Sie die system.site- uuid-Taste überschreiben .

$ drupal config:override

Geben Sie dann den Konfigurationsnamen system.site, den Konfigurationsschlüssel uuidund den entsprechenden Wert ein, wenn Sie dazu aufgefordert werden.

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
quelle
1
Ich denke, das sollte die akzeptierte Antwort sein.
Badri,
7

Sie können die Site-UUID ohne Zugriff auf die Site oder die Datenbank abrufen.

Wenn Sie keinen Zugriff auf die ursprüngliche Site / Datenbank haben, können Sie trotzdem von den bereitgestellten Konfigurationsdateien synchronisieren. Die Konfiguration enthält die UUID Ihrer Site, daher müssen Sie diese zuerst festlegen.

  1. Finden Sie Ihr Konfigurations- / Synchronisierungsverzeichnis: Wenn es verschoben wurde, können Sie feststellen, wo es eingestellt wurde settings.php. Suchen Sie nach:, um $config_directories['sync']den Pfad aufzulisten.

  2. Gehen Sie zu diesem Konfigurationspfad und suchen Sie nach der Datei: Suchen Sie system.site.yml in dieser Datei nach uuid: 86b376c5-385e-4d13-bf00-e5e5443540e3(Sie werden offensichtlich einen anderen Wert haben). Kopieren Sie diesen Wert.

  3. Setzen Sie Ihre Site in drush auf dieselbe Site-UUID, die wir gerade entdeckt haben: drush cset system.site uuid 86b376c5-385e-4d13-bf00-e5e5443540e3

  4. Synchronisiere die Konfiguration mit drush drush cim -y

  5. Wenn Sie Fehler erhalten, lesen Sie diese . Ich hatte:

    • ein fehlendes Modul (das ich herunterladen und aktivieren musste)
    • Inhalte aus dem Verknüpfungsmodul, die ich zuerst löschen musste, unter:
    • admin> config> User Interfact> Verknüpfungen

Sobald ich das getan habe, habe ich das CIM erneut ausgeführt, und alles hat wie ein Zauber funktioniert!

Ich hatte eine lokale D8-Instanz installiert, bevor ich versuchte, sie aus der bereitgestellten Konfiguration wiederherzustellen.

Atomox
quelle
4

Sie können die UUID für den Zielstandort mit drush cset und drush cget ändern.

Holen Sie sich zuerst die Quell-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 

Ersetzen Sie die Ziel-UUID

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

Jetzt kannst du:

  1. Navigieren Sie in Ihrem Browser unter admin / config / development / configuration / full / import zur Zielsite
  2. Wählen Sie das Konfigurationsarchiv und wählen Sie Hochladen
  3. Sie sehen eine Liste aller Konfigurationselemente
  4. Scrollen Sie nach unten und klicken Sie auf die Schaltfläche Alle importieren
Selwyn Polit
quelle
0

Wenn Sie den Anweisungen in Gucho Cas Antwort folgen und das Problem weiterhin besteht, vergewissern Sie sich, dass Sie über Schreibberechtigungen in Ihrem Konfigurationsverzeichnis für die Synchronisierung verfügen. Es wird Ihnen dieselbe Fehlermeldung angezeigt, auch wenn Ihre Benutzer-IDs identisch sind, Ihr System jedoch keine Schreibberechtigungen hat.

Sie können dies am besten überprüfen, indem Sie im Abschnitt Synchronisieren auf die Registerkarte Importieren klicken. Wenn Sie nicht über die richtigen Dateiberechtigungen verfügen, werden Sie dort darüber informiert.

MikeD
quelle