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


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/


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  
------------------- -------------------------------------- -------------------------------------- 

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, прежде чем пытаться восстановить из предоставленного конфига.


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

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

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


0

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.