¿Cómo puedo importar la configuración en un sitio diferente?

49

Tengo este error cuando intento importar la configuración de otro sitio:

La configuración por etapas no se puede importar, ya que se origina en un sitio diferente a este sitio. Solo puede sincronizar la configuración entre instancias clonadas de este sitio.

Tengo 10 clientes y necesito sincronizar la configuración de mi sitio con 10 sitios web diferentes.
El UUID del sitio es un problema para compartir una configuración con un sitio web diferente. ¿Hay una solución?

Axel Briche
fuente
1
Otra buena respuesta aquí drupal.stackexchange.com/q/152584/39617
digitgopher

Respuestas:

55

Puede obtener el UUID con:

drush config-get "system.site" uuid

Y puedes cambiarlo con

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

Con eso tienes que tener los mismos sitios.

Gucho Ca
fuente
Trabajó para mí ... tres años después. ¡Gracias!
mrlexington
17

La Gestión de la configuración solo permite la configuración de sincronización entre el mismo sitio o proyecto para evitar problemas al importar la configuración del sitio a.com a b.com, para lograr esta validación, Drupal 8 genera un UUID para cada sitio.

Puede obtener su UUID actual del sitio ejecutando el siguiente comando:

drush cget system.site

El comando anterior tendremos una salida similar a la siguiente lista:

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

La importación de configuración tiene un UUID diferente, puede confirmar el UUID con el siguiente comando

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

Por esa razón, debe cambiar el valor del UUID del sitio con el siguiente comando Drush:

drush cedit system.site

El comando anterior le permite usar su editor de texto favorito para establecer el mismo UUID presente en los archivos de configuración de preparación.

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

Después de cambiar el UUID y los permisos, si vuelve a visitar la página example.com/admin/config/development/configuration verá todos los cambios, eliminaciones, cambios de nombre y adiciones.

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

rpayanm
fuente
99
Correcto, pero tenga en cuenta que cambiar el UUID del sitio sin cambiar ningún otro significa que drupal tratará cada campo / tipo de nodo / vista / ... que tenga un UUID diferente como algo diferente y primero eliminará el antiguo y luego volverá a créelo nuevamente, lo que esencialmente eliminará todo su contenido.
Berdir
Ok, gracias, pero no es fácil de usar para un usuario sin un servidor dedicado y conocimiento de Linux, existe una solución para usuarios básicos / principiantes (sin ssh y líneas de comando, solo un servidor ftp) por favor? Drush necesita líneas de comando y no es fácil de usar para mis clientes.
Axel Briche
¿Qué sucede exactamente si cambio el UUID del sitio de un sitio web de Drupal existente (instalación nueva) para que coincida con la configuración exportada (con drush config-set system.site uuid "abcdef-...")?
GiDo
1
Comando de una línea para copiar el UUID del sitio de actualización. drush -y cset system.site uuid $(cat /path/to/config/system.site.yml | awk '/uuid/ { print $2 }')
ya.teck
10

Usando la consola Drupal

Puede lograr lo mismo con Drupal Console anulando la tecla system.site- uuid.

$ drupal config:override

Luego ingrese el nombre de la configuración system.site, la clave de configuración uuidy el valor apropiado cuando se le solicite.

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
fuente
1
Creo que esta debería ser la respuesta aceptada.
Badri
7

Puede obtener el UUID del sitio sin acceso al sitio o la base de datos.

Si no tiene acceso al sitio / base de datos original, aún puede sincronizar desde los archivos de configuración proporcionados. La configuración contendrá el UUID de su sitio, por lo que debe configurarlo primero.

  1. Encuentre su directorio config / sync: si se movió, puede encontrar dónde se configuró settings.php. Busque: $config_directories['sync']que enumerará la ruta.

  2. Vaya a esa ruta de configuración y busque el archivo: system.site.yml en ese archivo, busque uuid: 86b376c5-385e-4d13-bf00-e5e5443540e3(tendrá un valor diferente, obviamente). Copia ese valor.

  3. En drush, configure su sitio en el mismo sitio que acabamos de descubrir: drush cset system.site uuid 86b376c5-385e-4d13-bf00-e5e5443540e3

  4. Sincronice la configuración usando drush drush cim -y

  5. Si obtiene errores, léalos . Yo tenía:

    • falta un módulo (que tuve que descargar y habilitar)
    • contenido del módulo de accesos directos, que tuve que eliminar primero, en:
    • admin> config> Interfaz de usuario> Accesos directos

Una vez que hice eso, volví a leer el cim, ¡y todo funcionó de maravilla!

Había instalado una instancia local de D8 antes de intentar restaurar desde la configuración proporcionada.

Atomox
fuente
4

Puede cambiar el UUID para el sitio de destino utilizando drush cset y drush cget.

Primero obtenga el UUID de origen:

$ 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 

Reemplace el UUID de destino

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

Ahora usted puede:

  1. Navegue al sitio de destino en su navegador en admin / config / development / configuration / full / import
  2. seleccione el archivo de configuración y seleccione cargar
  3. Verá una lista de todos los elementos de configuración.
  4. Desplácese hacia abajo y haga clic en el botón Importar todo
Selwyn Polit
fuente
0

Si sigue las instrucciones en la respuesta de Gucho Ca y aún tiene el problema, asegúrese de verificar que tenga permisos de escritura en su directorio de configuración de sincronización. Le dará este mismo mensaje de error, incluso si sus uuids son los mismos, pero su sistema no tiene permisos de escritura.

Una buena manera de verificar es hacer clic en la pestaña Importar de la sección Sincronizar. Si no tiene los permisos de archivo correctos, se lo indicará allí.

MikeD
fuente
0

Cómo automatizar la configuración de system.site uuid antes de importar la configuración

Para las personas que se cansan de hacer esto de nuevo. Finalmente conseguí una solución sobre cómo hacer esto automáticamente. Tendría que agregar un precomando para config: importar con drush para configurar el uuid. Lea todo sobre esto aquí: https://stefvanlooveren.me/blog/fixing-systemsite-uuid-config-import-problem-drupal-8

Stef Van Looveren
fuente