Como posso importar a configuração em um site diferente?

49

Eu tenho esse erro quando tento importar a configuração de outro site:

A configuração faseada não pode ser importada, porque se origina de um site diferente desse site. Você só pode sincronizar a configuração entre instâncias clonadas deste site.

Tenho 10 clientes e preciso sincronizar a configuração do meu site com 10 sites diferentes.
O UUID do site é um problema para compartilhar uma configuração com um site diferente. Há uma solução?

Axel Briche
fonte
11
Outra resposta agradável aqui drupal.stackexchange.com/q/152584/39617
digitgopher

Respostas:

55

Você pode obter o UUID com:

drush config-get "system.site" uuid

E você pode mudar com

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

Com isso você tem que ter os mesmos sites.

Gucho Ca
fonte
Trabalhou para mim ... três anos depois. Obrigado!
mrlexington 29/06
17

O Gerenciamento de configuração permite apenas a configuração de sincronização entre o mesmo site ou projeto para evitar problemas ao importar a configuração do site a.com para b.com. Para realizar essa validação, o Drupal 8 gera um UUID para cada site.

Você pode obter o UUID do site atual executando o seguinte comando:

drush cget system.site

O comando acima terá uma saída semelhante à próxima listagem:

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

A importação de configuração possui um UUID diferente, você pode confirmar o UUID com o seguinte comando

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

Por esse motivo, você precisa alterar o valor do Site UUID usando o seguinte comando Drush:

drush cedit system.site

O comando acima permite que você use seu editor de texto favorito para definir o mesmo UUID presente nos arquivos de configuração de teste.

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

Depois de alterar o UUID e alterar as permissões, se você visitar novamente a página example.com/admin/config/development/configuration, verá todas as alterações, exclusões, renomeações e adições.

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

rpayanm
fonte
9
Correto, mas lembre-se de que alterar o UUID do site sem alterar outros significa que o drupal tratará todos os campos / tipos de nós / exibições / ... que possuem um UUID diferente como algo diferente e primeiro excluirá o antigo e, em seguida, crie-o novamente, o que essencialmente excluirá todo o seu conteúdo.
precisa saber é
Ok, obrigado, mas não é fácil para o usuário sem um servidor dedicado e conhecimento do Linux, existe uma solução para usuários básicos / iniciantes (sem linhas ssh e de comando, apenas um servidor ftp), por favor? O Drush precisa de linhas de comando e não é fácil de usar para meus clientes.
Axel Briche
O que acontece exatamente se eu alterar o UUID do site de um site Drupal existente (instalação nova) para corresponder à configuração exportada (com drush config-set system.site uuid "abcdef-...")?
GiDo 15/09/2015
11
Comando de uma linha para copiar o UUID do site de atualização. drush -y cset system.site uuid $(cat /path/to/config/system.site.yml | awk '/uuid/ { print $2 }')
usar o seguinte comando
10

Usando o Drupal Console

Você pode conseguir o mesmo com o Drupal Console substituindo a tecla system.site- uuid.

$ drupal config:override

Em seguida, insira o nome da configuração system.site, a chave de configuração uuide o valor apropriado quando solicitado.

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
fonte
11
Eu acho que essa deve ser a resposta aceita.
Badri
7

Você pode obter o UUID do site sem acesso ao site ou banco de dados.

Se você não tiver acesso ao site / banco de dados original, ainda poderá sincronizar a partir dos arquivos de configuração fornecidos. A configuração conterá o UUID do seu site, portanto, você deve defini-lo primeiro.

  1. Encontre o diretório config / sync: se ele foi movido, você pode encontrar onde foi definido settings.php. Procure por:, $config_directories['sync']que listará o caminho.

  2. Vá para o caminho de configuração e procure o arquivo: system.site.yml Nesse arquivo, procure uuid: 86b376c5-385e-4d13-bf00-e5e5443540e3(você terá um valor diferente, obviamente). Copie esse valor.

  3. No drush, defina seu site com o mesmo uuid que acabamos de descobrir: drush cset system.site uuid 86b376c5-385e-4d13-bf00-e5e5443540e3

  4. Sincronize a configuração usando drush drush cim -y

  5. Se você receber erros, leia-os . Eu tinha:

    • um módulo ausente (que eu precisei baixar e ativar)
    • conteúdo do módulo de atalhos, que eu tive que excluir primeiro, em:
    • admin> configuração> Interfato do usuário> Atalhos

Depois que fiz isso, refiz a cim e tudo funcionou como um encanto!

Eu tinha instalado uma instância D8 local antes de tentar restaurar a partir da configuração fornecida.

Atomox
fonte
4

Você pode alterar o UUID do site de destino usando drush cset e drush cget.

Primeiro obtenha o UUID de origem:

$ 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 

Substitua o UUID de destino

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

Agora você pode:

  1. Navegue até o site de destino em seu navegador em admin / config / development / configuration / full / import
  2. selecione o arquivo de configuração e selecione upload
  3. Você verá uma lista de todos os itens de configuração
  4. Role até a parte inferior e clique no botão importar tudo
Selwyn Polit
fonte
0

Se você seguir as instruções na resposta de Gucho Ca e ainda tiver o problema, verifique se possui permissões de gravação no diretório de configuração de sincronização. Ele fornecerá a mesma mensagem de erro, mesmo que seus uuids sejam iguais, mas seu sistema não tenha permissões de gravação.

Uma boa maneira de verificar é clicar na guia Importar da seção Sincronizar. Se você não tiver as permissões de arquivo corretas, ele informará lá.

MikeD
fonte