ฉันจะนำเข้าการกำหนดค่าบนไซต์อื่นได้อย่างไร


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

ด้วยเหตุผลดังกล่าวคุณต้องเปลี่ยนค่าของ Site UUID โดยใช้คำสั่ง Drush ต่อไปนี้:

drush cedit system.site

คำสั่งด้านบนช่วยให้คุณสามารถใช้เท็กซ์เอดิเตอร์ที่คุณโปรดปรานเพื่อตั้งค่า UUID เดียวกันที่มีอยู่ในไฟล์ staging config

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 จะปฏิบัติต่อทุกฟิลด์ / โหนดประเภท / view / ... ที่มี UUID ที่แตกต่างกันเป็นสิ่งที่แตกต่างกันและจะลบเก่าแล้ว สร้างอีกครั้งซึ่งจะเป็นการลบเนื้อหาทั้งหมดของคุณ
Berdir

ตกลงขอบคุณ แต่มันไม่เป็นมิตรกับผู้ใช้สำหรับผู้ใช้ที่ไม่มีเซิร์ฟเวอร์เฉพาะและความรู้เกี่ยวกับลินุกซ์มีวิธีแก้ปัญหาสำหรับผู้ใช้ขั้นพื้นฐาน / ผู้เริ่มต้น (ไม่มี ssh และบรรทัดคำสั่งเฉพาะเซิร์ฟเวอร์ ftp) ใช่ไหม Drush ต้องการบรรทัดคำสั่งและไม่เป็นมิตรต่อผู้ใช้สำหรับลูกค้าของฉัน
Axel Briche

จะเกิดอะไรขึ้นถ้าฉันเปลี่ยนเว็บไซต์ 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 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
ฉันคิดว่านี่ควรเป็นคำตอบที่ยอมรับได้
Badri

7

คุณสามารถรับ UUID ของไซต์โดยไม่ต้องเข้าถึงไซต์หรือฐานข้อมูล

หากคุณไม่มีสิทธิ์เข้าถึงไซต์ / ฐานข้อมูลดั้งเดิมคุณยังคงสามารถซิงค์จากไฟล์ปรับแต่งที่ให้มาได้ การกำหนดค่าจะมี UUID ของเว็บไซต์ของคุณดังนั้นคุณต้องตั้งค่าก่อน

  1. ค้นหา config / ไดเรกทอรีการซิงค์ของคุณ: 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. ถ้าคุณได้รับข้อผิดพลาดอ่านพวกเขา ฉันมี:

    • โมดูลขาดหายไป (ซึ่งฉันต้องดาวน์โหลดและเปิดใช้งาน)
    • เนื้อหาจากโมดูลทางลัดซึ่งฉันต้องลบก่อนที่:
    • ผู้ดูแลระบบ> config> การแทรกแซงของผู้ใช้> ทางลัด

เมื่อฉันทำอย่างนั้นฉันจะเรียกใช้ 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

หากคุณทำตามคำแนะนำในคำตอบของ Gucho Ca และยังมีปัญหาอยู่โปรดตรวจสอบว่าคุณมีสิทธิ์ในการเขียนในไดเรกทอรีกำหนดค่าการซิงค์ของคุณ มันจะให้ข้อความแสดงข้อผิดพลาดเดียวกันนี้ถึงแม้ว่า uuids ของคุณจะเหมือนกัน แต่ระบบของคุณไม่มีสิทธิ์ในการเขียน

วิธีที่ดีในการตรวจสอบคือคลิกที่แท็บนำเข้าของส่วนซิงโครไนซ์ หากคุณไม่มีสิทธิ์ของไฟล์ที่ถูกต้องระบบจะแจ้งให้คุณทราบ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.