Come posso importare la configurazione su un altro sito?


49

Ho questo errore quando provo a importare la configurazione di un altro sito:

La configurazione a fasi non può essere importata, poiché proviene da un sito diverso rispetto a questo sito. È possibile sincronizzare la configurazione solo tra istanze clonate di questo sito.

Ho 10 clienti e devo sincronizzare la configurazione del mio sito con 10 siti Web diversi.
L'UUID del sito è un problema per la condivisione di una configurazione con un sito Web diverso. C'è una soluzione?


1
Un'altra bella risposta qui drupal.stackexchange.com/q/152584/39617
digitgopher

Risposte:


55

Puoi ottenere l'UUID con:

drush config-get "system.site" uuid

E puoi cambiarlo con

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

Con quello devi avere gli stessi siti.


Ha lavorato per me ... tre anni dopo. Grazie!
mrlexington,

17

La gestione della configurazione consente solo la sincronizzazione della configurazione tra lo stesso sito o progetto per evitare problemi durante l'importazione della configurazione dal sito a.com a b.com, per eseguire questa convalida Drupal 8 genera un UUID per ciascun sito.

Ottieni il tuo attuale UUID del sito eseguendo il seguente comando:

drush cget system.site

Il comando sopra avremo un output simile al prossimo elenco:

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

L'importazione della configurazione ha un UUID diverso, è possibile confermare l'UUID con il comando seguente

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

Per tale motivo è necessario modificare il valore dell'UUID del sito utilizzando il seguente comando Drush:

drush cedit system.site

Il comando sopra ti consente di utilizzare il tuo editor di testo preferito per impostare lo stesso UUID presente nei file di configurazione della gestione temporanea.

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

Dopo aver modificato l'UUID e modificato le autorizzazioni, se visiti nuovamente la pagina example.com/admin/config/development/configuration vedrai tutte le modifiche, eliminazioni, rinominazioni e aggiunte.

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


9
Corretto, ma tieni presente che cambiare l'UUID del sito senza cambiare nessun altro significa che drupal tratterà ogni campo / tipo di nodo / vista / ... che ha un UUID diverso come una cosa diversa e cancellerà prima il vecchio e poi ri crealo di nuovo, il che essenzialmente eliminerà tutti i tuoi contenuti.
Berdir,

Ok grazie, ma non è facile da usare per un utente senza un server dedicato e conoscenza di Linux, esiste una soluzione per utenti di base / principianti (senza ssh e linee di comando, solo un server ftp) per favore? Drush ha bisogno di righe di comando e non è facile da usare per i miei clienti.
Axel Briche,

Cosa succede esattamente se cambio l'UUID del sito di un sito Web Drupal esistente (nuova installazione) in modo che corrisponda alla configurazione esportata (con drush config-set system.site uuid "abcdef-...")?
GiDo,

1
Comando su una riga per copiare l'UUID del sito di aggiornamento. drush -y cset system.site uuid $(cat /path/to/config/system.site.yml | awk '/uuid/ { print $2 }')
ya.teck

10

Utilizzando Drupal Console

Puoi ottenere lo stesso risultato con Drupal Console sostituendo il tasto system.site- uuid.

$ drupal config:override

Quindi immettere il nome della configurazione system.site, la chiave di configurazione uuide il valore appropriato quando richiesto.

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
Penso che questa dovrebbe essere la risposta accettata.
Badri,

7

È possibile ottenere l'UUID del sito senza accedere al sito o al database.

Se non si ha accesso al sito / database originale, è comunque possibile eseguire la sincronizzazione dai file di configurazione forniti. La configurazione conterrà l'UUID del tuo sito, quindi devi prima impostarlo.

  1. Trova la tua directory config / sync: se viene spostata, puoi trovare dove è stata impostata settings.php. Cerca:, $config_directories['sync']che elencherà il percorso.

  2. Vai a quel percorso di configurazione e cerca il file: system.site.yml in quel file, cerca uuid: 86b376c5-385e-4d13-bf00-e5e5443540e3(avrai un valore diverso, ovviamente). Copia quel valore.

  3. In drush, imposta il tuo sito sullo stesso sito che abbiamo appena scoperto: drush cset system.site uuid 86b376c5-385e-4d13-bf00-e5e5443540e3

  4. Sincronizza la configurazione usando drush drush cim -y

  5. Se ricevi errori, leggili . Avevo:

    • un modulo mancante (che ho dovuto scaricare e abilitare)
    • contenuto dal modulo scorciatoie, che ho dovuto eliminare prima, a:
    • admin> config> Interfaccia utente> Scorciatoie

Una volta che l'ho fatto, ho ripreso il cim e tutto ha funzionato come un incantesimo!

Avevo installato un'istanza D8 locale prima di provare a ripristinare dalla configurazione fornita.


4

È possibile modificare l'UUID per il sito di destinazione utilizzando drush cset e drush cget.

Prima ottenere l'UUID di origine:

$ 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 

Sostituisci l'UUID di destinazione

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

Ora puoi:

  1. Passare al sito di destinazione nel browser in admin / config / development / configuration / full / import
  2. seleziona l'archivio di configurazione e seleziona upload
  3. Vedrai un elenco di tutti gli elementi di configurazione
  4. Scorri verso il basso fino in fondo e fai clic sul pulsante Importa tutto

0

Se segui le istruzioni nella risposta di Gucho Ca e il problema persiste, assicurati di disporre delle autorizzazioni di scrittura nella directory di configurazione della sincronizzazione. Ti darà questo stesso messaggio di errore, anche se i tuoi uuidi sono gli stessi, ma il tuo sistema non ha autorizzazioni di scrittura.

Un buon modo per verificare è fare clic sulla scheda Importa della sezione Sincronizza. Se non si dispone delle autorizzazioni corrette per i file, questo verrà indicato.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.