Comment puis-je importer la configuration sur un autre site?

49

J'ai cette erreur lorsque j'essaie d'importer la configuration d'un autre site:

La configuration par étapes ne peut pas être importée, car elle provient d'un site différent de celui-ci. Vous ne pouvez synchroniser la configuration qu'entre des instances clonées de ce site.

J'ai 10 clients et je dois synchroniser la configuration de mon site avec 10 sites Web différents.
L'UUID du site pose un problème pour le partage d'une configuration avec un autre site Web. Y a-t-il une solution?

Axel Briche
la source
1
Une autre bonne réponse ici drupal.stackexchange.com/q/152584/39617
digitgopher

Réponses:

55

Vous pouvez obtenir l'UUID avec:

drush config-get "system.site" uuid

Et vous pouvez le changer avec

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

Avec ça, vous devez avoir les mêmes sites.

Gucho Ca
la source
Travaillé pour moi ... trois ans plus tard. Merci!
Mrlexington
17

La gestion de la configuration n'autorise la configuration de la synchronisation entre le même site ou le même projet que pour éviter les problèmes liés à l'importation de la configuration de site a.com vers b.com. Pour ce faire, Drupal 8 génère un UUID pour chaque site.

Vous obtenez votre UUID de site actuel en exécutant la commande suivante:

drush cget system.site

La commande ci-dessus, nous aurons une sortie similaire à la liste suivante:

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'importation de configuration a un UUID différent, vous pouvez confirmer l'UUID avec la commande suivante

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

Pour cette raison, vous devez modifier la valeur de l'UUID du site à l'aide de la commande Drush suivante:

drush cedit system.site

La commande ci-dessus vous permet d'utiliser votre éditeur de texte favori pour définir le même UUID présent dans les fichiers de configuration de stockage intermédiaire.

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

Après avoir modifié l'UUID et les autorisations, si vous visitez à nouveau la page example.com/admin/config/development/configuration, vous verrez tous les changements, suppressions, renommements et ajouts.

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

rpayanm
la source
9
Corrigez, mais gardez à l’esprit que changer l’UUID du site sans en changer d’autres signifie que drupal traitera chaque champ / type de nœud / vue / ... ayant un UUID différent comme une chose différente et supprimera d’abord l’ancien créez-le à nouveau, ce qui supprimera essentiellement tout votre contenu.
Berdir
Ok merci, mais ce n'est pas convivial pour un utilisateur sans serveur dédié et sans connaissances de Linux, une solution existe pour les utilisateurs débutants / débutants (sans ssh ni lignes de commande, seulement un serveur ftp) s'il vous plaît? Drush a besoin de lignes de commande et ce n'est pas convivial pour mes clients.
Axel Briche Le
Que se passe-t-il exactement si je modifie l'UUID du site d'un site Web Drupal existant (nouvelle installation) afin qu'il corresponde à la configuration exportée (avec drush config-set system.site uuid "abcdef-...")?
GiDo
1
Commande à une ligne pour copier l'UUID du site de mise à jour. drush -y cset system.site uuid $(cat /path/to/config/system.site.yml | awk '/uuid/ { print $2 }')
ya.teck
10

Utiliser Drupal Console

Vous pouvez obtenir la même chose avec Drupal Console en remplaçant la touche system.site- uuid.

$ drupal config:override

Puis entrez le nom de la configuration system.site, la clé de configuration uuidet la valeur appropriée lorsque vous y êtes invité.

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
la source
1
Je pense que cela devrait être la réponse acceptée.
Badri
7

Vous pouvez obtenir l'UUID du site sans accéder au site ou à la base de données.

Si vous n'avez pas accès au site / à la base de données d'origine, vous pouvez toujours synchroniser à partir des fichiers de configuration fournis. La configuration contiendra l'UUID de votre site, vous devez donc le définir en premier.

  1. Trouvez votre répertoire config / sync: s'il est déplacé, vous pouvez trouver où il a été placé settings.php. Cherchez:, $config_directories['sync']qui listera le chemin.

  2. Allez dans ce chemin de configuration et cherchez le fichier: system.site.yml Dans ce fichier, cherchez uuid: 86b376c5-385e-4d13-bf00-e5e5443540e3(vous aurez évidemment une valeur différente). Copiez cette valeur.

  3. En drush, configurez votre site sur le même site uuid que nous venons de découvrir: drush cset system.site uuid 86b376c5-385e-4d13-bf00-e5e5443540e3

  4. Synchronisez la configuration avec drush drush cim -y

  5. Si vous obtenez des erreurs, lisez-les . J'avais:

    • un module manquant (que je devais télécharger et activer)
    • contenu du module de raccourcis, que je devais d'abord supprimer, à:
    • admin> config> User Interfact> Raccourcis

Une fois que j'ai fait cela, j'ai rediffusé le cim, et tout a fonctionné à merveille!

J'avais installé une instance D8 locale avant d'essayer de restaurer à partir de la configuration fournie.

Atomox
la source
4

Vous pouvez modifier l'UUID du site de destination à l'aide de drush cset et drush cget.

Commencez par obtenir l'UUID source:

$ 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 

Remplacer l'UUID de destination

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

Maintenant vous pouvez:

  1. Accédez au site de destination dans votre navigateur sous admin / config / development / configuration / full / import
  2. sélectionnez l'archive de configuration et sélectionnez télécharger
  3. Vous verrez une liste de tous les éléments de configuration
  4. Faites défiler vers le bas et cliquez sur le bouton Tout importer
Selwyn Polit
la source
0

Si vous suivez les instructions de la réponse de Gucho Ca et que le problème persiste, assurez-vous de vérifier que vous disposez des autorisations en écriture dans votre répertoire de synchronisation. Il vous donnera le même message d'erreur, même si vos uuids sont identiques, mais votre système ne dispose pas d'autorisations en écriture.

Un bon moyen de vérifier consiste à cliquer sur l'onglet Importer de la section Synchroniser. Si vous ne disposez pas des autorisations de fichiers correctes, il vous le dira.

MikeD
la source
0

Comment automatiser le paramétrage de l'uuid system.site avant l'importation de la configuration

Pour les gens qui en ont assez de tout recommencer. J'ai enfin eu un correctif sur la façon de faire cela automatiquement. Vous devrez ajouter une pré-commande pour config: import with drush pour définir le uuid. Vous trouverez toutes les informations à ce sujet ici: https://stefvanlooveren.me/blog/fixing-systemsite-uuid-config-import-problem-drupal-8

Stef Van Looveren
la source