ฉันจะปรับใช้ / จัดการไซต์ที่คล้ายกันจากโปรไฟล์ที่ไม่ซ้ำได้โดยไม่ทิ้งได้อย่างไร


15

ฉันไม่ชอบโซลูชัน "เว็บไซต์โคลนนิ่ง " ที่บอกเป็นนัยถึงการทุ่มตลาดฐานข้อมูลและนำเข้าการถ่ายโอนข้อมูลนี้ในสภาพแวดล้อมอื่น สิ่งนี้ดูเหมือนจะไม่เหมือนโลกแห่งการปรับใช้อินสแตนซ์ต่าง ๆ ของเว็บไซต์เดียวกัน (staging / prod / dev / etc)

ด้วย D7 เรามักจะใช้โปรไฟล์ที่กำหนดเองและใช้ drush เพื่อติดตั้งเว็บไซต์จากโปรไฟล์เหล่านี้ (และอาจใช้ฟีเจอร์สำหรับการซิงโครไนซ์ไซต์ในภายหลัง) สิ่งนี้ทำให้เรามีการติดตั้งใหม่ไม่มีเนื้อหาการทดสอบ แต่การแชร์การตั้งค่าที่สำคัญ การซิงโครไนซ์เนื้อหาทั่วไปจะทำได้ด้วยการโอนย้ายตัวอย่างเช่น

ฉันพยายามจัดการอินสแตนซ์ D8 หลายตัวที่ใช้โปรไฟล์การติดตั้งร่วมกัน เป้าหมายสุดท้ายคือการแบ่งปันและซิงค์การกำหนดค่าไซต์ และการติดตั้งทุกครั้งจะมี UUID ของไซต์ที่แตกต่างกัน ฉันไม่ประสบความสำเร็จในการบังคับใช้system.site uuidตัวแปร config ในเวลาติดตั้ง (แน่นอนว่าฉันสามารถเปลี่ยนค่าได้ในภายหลัง แต่สำหรับฉันดูเหมือนว่ามันสายเกินไปและวัตถุทั้งหมดถูกสร้างขึ้นด้วย UUID ที่แตกต่างกันซึ่งทำให้การประสานครั้งแรกเป็นฝันร้ายซึ่งเนื้อหาเริ่มต้นบางอย่างต้องถูกลบหรือภาษาเริ่มต้นขัดข้องการซิงค์เนื่องจากไม่สามารถลบออกได้ ฯลฯ )

ในการบังคับใช้ UUID นี้ฉันพยายามใช้ไฟล์ settings.php ที่สร้างขึ้นโดยมี$config['system.site']['uuid']ค่าอยู่ภายในนั้นล้มเหลวอย่างมาก (การตั้งค่านั้นถูกข้ามไปโดยสิ้นเชิง

ฉันยังดูโปรไฟล์การติดตั้งการกำหนดค่าซึ่งฉันไม่เข้าใจโดยเฉพาะอย่างยิ่งวิธีผสมโซลูชันนี้กับโปรไฟล์การติดตั้งอื่น

ดังนั้นคำถามคืออะไรเป็นวิธีที่ดีที่สุดในการปรับใช้ไซต์สดจากโปรไฟล์การติดตั้ง:

  • โดยไม่ต้อง "โคลนไซต์" และจัดการกับ SQL ทิ้งที่การสร้างไซต์ (เช่นในคำถามเกี่ยวกับไซต์ที่ถูกโคลน )
  • ด้วยการติดตั้งใหม่ทั้งหมด (ไม่มีเนื้อหาขยะของนักพัฒนา) โดยใช้การกำหนดค่าและรหัสที่ส่งออกเท่านั้น
  • ซึ่งสามารถจัดการทั้งค่าเริ่มต้นการกำหนดค่าการติดตั้งและการซิงโครไนซ์ในภายหลัง

คำตอบ:


3

คุณลักษณะสามารถช่วยหลีกเลี่ยงปัญหา UUID มันยังคงเป็นบั๊กกี้ซึ่งทำให้เราไม่สามารถดำเนินการอัตโนมัติได้อย่างเต็มที่ แต่อย่างน้อยที่สุดเราสามารถเลื่อนและบำรุงรักษาการกำหนดค่าด้วยตนเอง

คุณสมบัติยังคงสร้างโมดูลมันส่งออกการกำหนดค่าไปยังไดเรกทอรีการกำหนดค่า / ติดตั้งของโมดูลคุณสมบัติที่กำหนด สิ่งนี้จะถูกหยิบขึ้นมาเมื่อคุณติดตั้งฟีเจอร์และคุณสามารถอัปเดตการกำหนดค่าไซต์ของคุณได้ (คล้ายกับการเปลี่ยนฟีเจอร์ drush เก่า) เมื่อการส่งออกฟีเจอร์เปลี่ยนไป

นอกจากนี้คุณยังสามารถนำเข้าการกำหนดค่าโดยตรงผ่าน drush ตรวจสอบให้แน่ใจว่าใช้แฟล็ก - partial เพื่อหลีกเลี่ยงการแทนที่การกำหนดค่าที่ไม่อยู่ในโฟลเดอร์ config ใช้ --source drush cim --partial --source=docroot/modules/features/myfeature/config/installคุณยังสามารถกำหนดตำแหน่งของโฟลเดอร์การกำหนดค่าที่กำหนดเองเพื่อให้คุณสามารถทำสิ่งที่ชอบ


ok ถ้าผมเข้าใจมันได้ดีคุณใช้คุณลักษณะการกำหนดค่าเว็บไซต์ตรงกันบนแป้น soime คุณสมบัติ โดยไม่อนุญาตให้ซิงค์การตั้งค่าแบบเต็มของเว็บไซต์ที่ถูกโคลน
regilero

2
เผง สำหรับเราปัญหาพื้นฐานที่มีการกำหนดค่าแบบเต็มคือมันเพียงพอที่จะมีเพียงการตั้งค่าเดียวที่ผู้ดูแลระบบสามารถเปลี่ยนแปลงได้และคุณไม่สามารถซิงค์ได้อีกต่อไปเพราะจะทำให้การเปลี่ยนแปลงของพวกเขากลับคืนมา การแบ่งออกเป็นส่วนคุณลักษณะช่วยให้เราก) บำรุงรักษาชุดการกำหนดค่า (บางส่วนเนื่องจากเราเข้าใจว่ามันคืออะไร) และ b) ยังคงความยืดหยุ่นในส่วนที่เหลือของคุณสมบัติและวิธีการจัดการการกำหนดค่าของพวกเขา
Balazs Dianiska

ตกลงนี่อาจไม่ใช่คำตอบที่ชัดเจน แต่ฉันจะให้รางวัลแก่คุณ หากมีคนต้องการเพิ่มคำตอบที่ปรับปรุงในภายหลัง (ขณะที่สิ่งต่าง ๆ กำลังเคลื่อนไหว) ฉันอาจจะเปิดอีกครั้งสำหรับเงินรางวัลนั้น
regilero


1

จาก @Ivan Jaros hint คุณสามารถตั้งค่าตัวเลือกการกำหนดค่าบางอย่างเมื่อทำการติดตั้งโปรไฟล์ เห็นได้ชัดว่านี่ใช้งานได้กับการติดตั้งเท่านั้นไม่ใช่เมื่อมีการติดตั้งไซต์

ในไฟล์. install ของโปรไฟล์ของคุณคุณสามารถเพิ่มการตั้งค่าเริ่มต้นในhook_install():

\Drupal::configFactory()
  ->getEditable('system.site')
  ->set('uuid', 'this is my new uuid')
  ->save(TRUE);

ฉันลองสิ่งนี้ในเครื่องแล้วก็ใช้งานได้ ฉันสามารถดึงการกำหนดค่าจากไซต์อื่นไปยังไซต์ท้องถิ่นที่ติดตั้งใหม่โดยใช้รหัสด้านบน (ด้วยชุด UUID ที่เหมาะสม) โดยไม่ต้องใช้drush csetเพื่อเปลี่ยน UUID ของไซต์

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

ฉันหวังว่าจะทำสิ่งที่คล้ายกันจากsettings.phpแต่ConfigFactoryชั้นเรียนไม่พร้อมให้บริการและในขณะที่คุณชี้ให้เห็นในคำถามของคุณการตั้งค่าผ่านทาง$configในsettings.phpไม่มีผล

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