Як я можу імпортувати конфігурацію на інший сайт?


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-сервера) існує рішення? Другові потрібні командні рядки, і це не зручно для моїх клієнтів.
Аксель Бріче

Що саме станеться, якщо я зміню 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 }')
ya.teck

10

Використання консолі Drupal

Ви можете досягти того ж за допомогою консолі Drupal , змінивши клавішу 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. Знайдіть каталог конфігурації / синхронізації: якщо він переміщений, ви можете знайти, де він був встановлений settings.php. Шукайте:, $config_directories['sync']який перелічить шлях.

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

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

  4. Синхронізуйте конфігурацію за допомогою друку drush cim -y

  5. Якщо ви отримаєте помилки, прочитайте їх . Я мав:

    • відсутній модуль (який мені довелося завантажити та включити)
    • вміст із модуля ярликів, який мені довелося спочатку видалити, за адресою:
    • admin> config> Інтерфейс користувача> Ярлики

Одного разу я це зробив, я перекинув сим, і все спрацювало як шарм!

Я встановив локальний екземпляр D8, перш ніж намагатися відновити з наданої конфігурації.


4

Ви можете змінити UUID для місця призначення за допомогою cush drush і 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

Якщо ви дотримуєтесь вказівок у відповіді Гучо Ка і все-таки відчуваєте проблему, не забудьте перевірити, чи є у вашому довіднику налаштування синхронізації права доступу на запис. Він дасть вам те саме повідомлення про помилку, навіть якщо ваші удеї однакові, але ваша система не має дозволу на запис.

Хороший спосіб перевірити - натиснути на вкладку «Імпорт» розділу «Синхронізувати». Якщо у вас немає правильних дозволів на отримання файлів, вони вам це покажуть.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.