ฉันจะรวมการเปลี่ยนแปลงจากสำเนาการพัฒนาของไซต์เป็นไซต์สดโดยไม่สูญเสียเนื้อหาใหม่ได้อย่างไร


40

ขั้นตอนที่ดีที่สุดสำหรับการรวมงานที่ทำไว้กับสำเนาการพัฒนาของไซต์เป็นสำเนาการผลิตจริงคืออะไร บ่อยครั้งที่มีการเพิ่มเนื้อหาใหม่จำนวนมากลงในไซต์นับตั้งแต่การพัฒนาเริ่มต้นด้วยคุณสมบัติใหม่ล่าสุด และส่วนเพิ่มเติมไปยังไซต์จะเกี่ยวข้องกับการเปลี่ยนแปลงฐานข้อมูล ดังนั้นการคัดลอกไฟล์ใหม่จึงเป็นเรื่องง่าย แต่ฐานข้อมูลล่ะ? คุณผสานการเปลี่ยนแปลงของคุณกับฐานข้อมูลการผลิตที่มีอยู่โดยไม่สูญเสียเนื้อหาใหม่ที่เพิ่มเข้ามาตั้งแต่ครั้งล่าสุดที่คุณปรับปรุงไซต์การผลิตได้อย่างไร มีโมดูลใดบ้างที่ช่วยในเรื่องนี้


2
ลบความสับสน: ผสานและย้ายข้อมูลเป็นคำที่ต่างกันสองคำ คุณใช้ทั้งคำถามของคุณ หากเว็บไซต์สดว่างเปล่าคุณต้องย้ายสำเนาการพัฒนาไปยังเว็บไซต์ / โฮสต์สด หากไซต์สดมีเนื้อหาอยู่แล้วจำเป็นต้องรวมเนื้อหาใหม่จากสำเนาการพัฒนาไปยังไซต์สด (การรวมกันค่อนข้างยาก) คุณต้องทำอะไร
user931

คำตอบ:


16

สำหรับชนิดเนื้อหามุมมองและการเปลี่ยนแปลงโครงสร้างบนไซต์ dev ดูที่การใช้คุณลักษณะเพื่อส่งออกฐานข้อมูลไปยังโค้ด

สำหรับการโยกย้ายเนื้อหามีตัวเลือกมากมาย แต่ไม่ใช่โซลูชันแบบทึบเดียว ตัวอย่างหนึ่งคือชุดการปรับใช้


ชุด Demployment ดูน่าสนใจอย่างแน่นอนแม้ว่ามันจะยังอยู่ใน Dev (ยังไม่ถึงเบต้าเลย) คุณใช้มันเองหรือ คุณรู้อะไรที่มันจะไม่ครอบคลุม?
Chaulky

2

ฉันได้นำเอาโรงเรียนความคิดสองแห่งที่นี่ (โรงเรียนแห่งความคิดที่ 3 โดยการทำฐานข้อมูลแตกต่างฉันจะไม่พูดถึงเพราะความซับซ้อนค่อนข้างสูง)

1) ปรับใช้โดยวางฐานข้อมูลการผลิตและนำเข้า mysqldump ของฐานข้อมูลการพัฒนา เลือกรัน regex find / replace ก่อนหน้านี้ในลิงก์สัมบูรณ์แบบ hard-coded ใด ๆ ที่อ้างอิง URL dev ใน SQL dump หลังจากนำเข้า dev db ไปยัง prod ให้เรียกใช้คำสั่ง SQL (โดยปกติผ่านทางสคริปต์) โดยอัตโนมัติเพื่อเปลี่ยนการตั้งค่าที่แตกต่างกันสำหรับ prod กว่า dev (เช่นคุณอาจมีตัวแปรในตารางที่การตั้งค่าการเชื่อมต่อสำหรับการเชื่อมต่อกับระบบภายนอก เปลี่ยนเป็นชี้ไปที่ระบบภายนอกที่แยงแทนที่เวอร์ชัน dev)

2) ใช้โมดูลคุณสมบัติตามที่ระบุไว้โดย budda สำหรับการตั้งค่าผู้ดูแลระบบและใช้โมดูลการส่งออกโหนดสำหรับการส่งออก / นำเข้าเนื้อหาร่วมกับโมดูลลบทั้งหมด ดังนั้นเวิร์กโฟลว์คือ:

  1. ใช้ node_export และคุณสมบัติเพื่อส่งออกโหนด / คุณสมบัติไปยังไฟล์
  2. การควบคุมเวอร์ชันทางเลือก (และหวังว่า)
  3. โหลดไฟล์บนระบบ prod
  4. ใช้ drush หรือส่วนต่อประสานผู้ดูแลระบบเพื่อโหลดคุณสมบัติ
  5. ใช้ drush delete-all หรือส่วนติดต่อผู้ดูแลระบบเพื่อลบโหนดทั้งหมดของประเภทที่คุณต้องการนำเข้า
  6. ใช้ drush ne-import หรือส่วนต่อประสานผู้ดูแลระบบเพื่อนำเข้าโหนดจากไฟล์โหนดที่คุณส่งออก

One note ฉันขอแนะนำให้ใช้เวิร์กโฟลว์มาตรฐานโดยที่เนื้อหามีทิศทางเดียวเท่านั้น Dev -> Prod or Prod -> Dev (ฉันชอบอันนี้)

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


ในตัวเลือก 1 คุณจะสร้างเนื้อหาที่เพิ่มลงในไซต์สดที่ไม่ได้อยู่ในไซต์ dev อย่างไร ดูเหมือนว่าคุณจะเขียนทับทั้งหมดด้วย dev db และอาจเปลี่ยนการตั้งค่า / ตัวแปรบางอย่าง นอกจากนี้คุณใช้โรงเรียนแห่งความคิดใดในเว็บไซต์ของคุณ ข้อดีและข้อเสียของแต่ละวิธี?
Chaulky

ในตัวเลือก 1 ตอนนี้เราใช้ node_export เพื่อส่งเนื้อหาเป็นประจำ (ลบเนื้อหาก่อนหน้านี้) เราเคยทำการเปลี่ยนแปลงเนื้อหาทั้งใน dev และผลิตภัณฑ์ อันที่จริงนี่เป็นสถานการณ์ทั่วไปในบางแห่งที่ฉันเคยเห็น แต่ก็ไม่เหมาะ นี่คือเหตุผลที่ฉันเพิ่มนำมาใช้ทิศทางและติดกับมันทั้งเนื้อหาไป dev -> prod หรือ prod -> dev แต่พยายามที่จะไม่ทำทั้งสองอย่าง และใช่โดยทั่วไปเราเขียนทับแม้ว่าจะมีการลบและสร้างใหม่ ที่งานใหม่ของฉันเราทำ # 2 ที่งานเก่าของฉันเราทำ # 1 แต่ย้ายไปที่ # 2 (ฉันยังคงให้คำปรึกษาสำหรับพวกเขา)
coderintherye

1

ฐานข้อมูลการถ่ายโอนข้อมูลของเว็บไซต์ถ่ายทอดสดและสำเนาของเว็บไซต์ในไฟล์ SQL (ใช้พารามิเตอร์และการตั้งค่าเดียวกันสำหรับการถ่ายโอนข้อมูลทั้งคู่)
จากนั้นเปรียบเทียบทั้งไฟล์ SQL โดยใช้เครื่องมือการเปรียบเทียบขนาดเล็กExamDiff มันจะแสดงความแตกต่างของไฟล์แบบเคียงข้างกันด้วยสีที่ต่างกัน คุณสามารถข้ามไปยังความแตกต่างได้โดยตรง (โดยไม่ต้องเลื่อน) ตรวจสอบความแตกต่าง & เพิ่ม / แก้ไขบรรทัดลงในไฟล์ SQL ของเว็บไซต์สด ตรวจสอบให้แน่ใจว่าไม่มีเส้นทาง / URL สัมบูรณ์ของสภาพแวดล้อมการพัฒนาในไฟล์นั้น เสร็จแล้ว! ใช้เวลาในการกู้คืนฐานข้อมูลสำหรับไซต์สด
ทำให้ชีวิตของคุณง่ายขึ้น:ในขั้นตอนแรกถ่ายโอนข้อมูลเฉพาะตารางที่มีการเปลี่ยนแปลง ตัวอย่างเช่นหากคุณแก้ไขโมดูลในสำเนาการพัฒนาซึ่งกำหนดเป้าหมายเป็นตารางแยกต่างหากให้ถ่ายโอนข้อมูลเฉพาะตารางนี้ หากคุณไม่แน่ใจเกี่ยวกับตารางเฉพาะดัมพ์ฐานข้อมูลทั้งหมดนั้นใช้ได้


เทคนิคนี้มีข้อ จำกัด รุนแรงในบางสถานการณ์ที่สำคัญ ตัวอย่างเช่นหากไซต์การพัฒนามีโหนดใหม่ทั้งสองฐานข้อมูลของคุณจะมีรายการที่มีรหัสไอโหนดเดียวกันและจะไม่สามารถแก้ไขการอ้างอิงและผสานจากการถ่ายโอนข้อมูลข้อความของฐานข้อมูล sql การดำเนินการประเภทนี้มีการจัดการที่ดีขึ้นผ่านคุณสมบัติและการปรับใช้ตามที่ระบุไว้ในคำตอบอื่น ๆ
greg_1_anderson
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.