Как я могу импортировать конфигурацию на другой сайт?

49

У меня есть эта ошибка, когда я пытаюсь импортировать конфигурацию другого сайта:

Этапная конфигурация не может быть импортирована, потому что она происходит с сайта, отличного от этого сайта. Вы можете синхронизировать конфигурацию только между клонированными экземплярами этого сайта.

У меня 10 клиентов, и мне нужно синхронизировать конфигурацию моего сайта с 10 разными сайтами.
Сайт UUID является проблемой для обмена конфигурацией с другим сайтом. Есть ли решение?

Аксель Брише
источник
1
Еще один хороший ответ здесь drupal.stackexchange.com/q/152584/39617
digitgopher

Ответы:

55

Вы можете получить UUID с:

drush config-get "system.site" uuid

И вы можете изменить это с

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

При этом у вас должны быть одинаковые сайты.

Гучо Ка
источник
Работал на меня ... три года спустя. Спасибо!
mrlexington
17

Управление конфигурацией позволяет только синхронизировать конфигурацию между одним сайтом или проектом, чтобы избежать проблем с импортом конфигурации с сайта a.com на b.com, чтобы выполнить эту проверку, Drupal 8 генерирует UUID для каждого сайта.

Вы можете получить текущий UUID сайта, выполнив следующую команду:

drush cget system.site

Команда выше у нас будет похожий вывод к следующему листингу:

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

Импорт конфигурации имеет другой UUID, вы можете подтвердить UUID с помощью следующей команды

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

По этой причине вам необходимо изменить значение UUID сайта с помощью следующей команды Drush:

drush cedit system.site

Команда выше позволяет вам использовать ваш любимый текстовый редактор, чтобы установить тот же UUID, который присутствует в промежуточных файлах конфигурации.

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

После изменения UUID и изменения разрешений, если вы снова посетите страницу example.com/admin/config/development/configuration, вы увидите все изменения, удаления, переименования и дополнения.

источник: http://enzolutions.com/articles/2014/08/27/understanding-configuration-management-in-drupal-8/

rpayanm
источник
9
Правильно, но имейте в виду, что изменение UUID сайта без изменения каких-либо других означает, что drupal будет обрабатывать каждое поле / тип узла / представление / ..., которое имеет другой UUID, как отдельную вещь и сначала удаляет старый, а затем повторно создайте его снова, что по существу удалит весь ваш контент.
Бердир
Хорошо, спасибо, но это не удобно для пользователя без выделенного сервера и знаний Linux, решение существует для базовых / начинающих пользователей (без ssh и командных строк, только ftp-сервер), пожалуйста? Drush нужны командные строки, и это не удобно для моих клиентов.
Аксель Брише
Что произойдет, если я изменю UUID сайта существующего сайта Drupal (новая установка), чтобы он соответствовал экспортированной конфигурации (с drush config-set system.site uuid "abcdef-...")?
GiDo
1
Однострочная команда для копирования UUID сайта обновления. drush -y cset system.site uuid $(cat /path/to/config/system.site.yml | awk '/uuid/ { print $2 }')
я.тек
10

Использование Drupal Console

Вы можете достичь того же с помощью Drupal Console , переопределив клавишу system.site- uuid.

$ drupal config:override

Затем введите имя system.siteконфигурации, ключ конфигурации uuidи соответствующее значение при появлении запроса.

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
источник
1
Я думаю, что это должен быть принятый ответ.
Бадри
7

Вы можете получить UUID сайта без доступа к сайту или базе данных.

Если у вас нет доступа к исходному сайту / базе данных, вы все равно можете выполнить синхронизацию из предоставленных файлов конфигурации. Конфиг будет содержать UUID вашего сайта, поэтому вам нужно сначала его установить.

  1. Найдите каталог config / sync: если он перемещен, вы можете найти, где он был установлен settings.php. Ищите:, $config_directories['sync']который перечислит путь.

  2. Перейдите по этому пути конфигурации и найдите файл: system.site.yml в этом файле найдите uuid: 86b376c5-385e-4d13-bf00-e5e5443540e3(очевидно , у вас будет другое значение). Скопируйте это значение.

  3. В drush установите для вашего сайта тот же uuid, который мы только что обнаружили: drush cset system.site uuid 86b376c5-385e-4d13-bf00-e5e5443540e3

  4. Синхронизировать конфигурацию, используя drush drush cim -y

  5. Если вы получили ошибки, прочитайте их . Я имел:

    • отсутствующий модуль (который мне пришлось скачать и включить)
    • содержимое из модуля ярлыков, который я должен был сначала удалить, по адресу:
    • admin> config> User Interfact> Ярлыки

Как только я это сделал, я перезапустил CIM, и все заработало как шарм!

Я установил локальный экземпляр D8, прежде чем пытаться восстановить из предоставленного конфига.

Atomox
источник
4

Вы можете изменить UUID для сайта назначения, используя drush cset и drush cget.

Сначала получите исходный 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 

Замените целевой UUID

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

Теперь вы можете:

  1. Перейдите на целевой сайт в вашем браузере по адресу admin / config / development / configuration / full / import
  2. выберите архив конфигурации и выберите загрузку
  3. Вы увидите список всех элементов конфигурации
  4. Прокрутите вниз и нажмите кнопку импортировать все
Селвин Полит
источник
0

Если вы следуете инструкциям в ответе Гучо Ка и по-прежнему имеете проблему, убедитесь, что у вас есть права на запись в каталоге настроек синхронизации. Он выдаст вам то же сообщение об ошибке, даже если ваши идентификаторы совпадают, но у вашей системы нет прав на запись.

Хороший способ проверить это - щелкнуть вкладку «Импорт» в разделе «Синхронизировать». Если у вас нет правильных прав доступа к файлам, он сообщит вам об этом.

MikeD
источник
0

Как автоматизировать настройку system.site uuid перед импортом конфигурации

Для людей, уставших делать это снова и снова. Я наконец получил решение о том, как сделать это автоматически. Вы должны добавить предварительную команду для config: import с drush, чтобы установить uuid. Прочитайте все об этом здесь: https://stefvanlooveren.me/blog/fixing-systemsite-uuid-config-import-problem-drupal-8

Стеф Ван Луверен
источник