ฉันมีเซ็ตอัพฉันค่อนข้างภูมิใจและมันทำงานได้ดีมากสำหรับทีมของฉัน
โครงสร้างทั่วไป
ฉันเก็บการติดตั้งทั้งหมดภายใต้คอมไพล์ การเปลี่ยนแปลงทั้งหมดไม่ว่าจะเป็นการอัปเดตระบบการเพิ่ม / อัปเดตปลั๊กอินการเพิ่ม / อัปเดตธีมไปตามเวิร์กโฟลว์เดียวกัน การเปลี่ยนแปลงสามารถย้อนกลับได้ทันที ฉันมีการใช้งานเซิร์ฟเวอร์ (เดสก์ทอป P4 เก่า) ที่ทำงานgitosisแต่คุณสามารถได้อย่างง่ายดายเพียงใช้ GitHub หรือgitolite ในคอมไพล์ฉันมีสองสาขา "พิเศษ" master
และdevelop
(อธิบายเพิ่มเติมด้านล่าง) เซิร์ฟเวอร์การผลิตและการจัดเตรียมของฉันใช้ระบบคลาวด์
สภาพแวดล้อมการพัฒนา
นักพัฒนาทุกคนใช้งานเซิร์ฟเวอร์การพัฒนาของตัวเองบนเครื่องของตัวเอง ในแง่ของฐานข้อมูลการใช้ข้อมูลสดนั้นแทบจะไม่เคยมีปัญหามาก่อน เราส่วนใหญ่ใช้ข้อมูลการทดสอบหน่วยธีม มิฉะนั้นการส่งออกและนำเข้าจะครอบคลุมทุกอย่าง หากชิ้นส่วน DB มีความสำคัญคุณสามารถตั้งค่าการจำลองแบบหรือตั้งค่าบางอย่างสำหรับการซิงค์ตามต้องการ เมื่อฉันเริ่มตั้งค่าโครงสร้างนี้ฉันคิดว่าสิ่งนี้จะสำคัญมากดังนั้นฉันจึงเริ่มเขียนชุดเครื่องมือเพื่อทำสิ่งนี้ แต่ฉันไม่แปลกใจเลยที่พวกเขาไม่จำเป็นต้องใช้มันเลย (หมายเหตุ: เนื่องจากพวกเขาไม่จำเป็นฉันไม่ได้ขัดพวกเขาดังนั้นจึงมีข้อบกพร่องเช่นมันจะแทนที่โดเมนในข้อมูลต่อเนื่อง)
การจัดเตรียมสภาพแวดล้อม
เมื่อความมุ่งมั่นถูกผลักจากdevelop
สาขาสู่ gitosis พวกมันจะถูกปรับใช้โดยอัตโนมัติไปยังเซิร์ฟเวอร์การแสดงละครของเรา ฐานข้อมูลการแสดงละครเป็นทาสของฐานข้อมูลการผลิต
สภาพแวดล้อมการผลิต
เมื่อความมุ่งมั่นถูกผลักไปที่ gitosis ในmaster
สาขามันจะถูกปรับใช้โดยอัตโนมัติไปยังเซิร์ฟเวอร์การผลิต
ปัญหา wp-config.php
คุณต้องการแตกต่างwp-config.php
จากเซิร์ฟเวอร์หนึ่งไปอีกเซิร์ฟเวอร์ แต่คุณต้องการให้อยู่ภายใต้การควบคุมเวอร์ชัน วิธีแก้ปัญหาของฉันคือใช้.gitignore
เพื่อละเว้นwp-config.php
และเก็บเวอร์ชัน staging และ production เป็นไฟล์ที่มีชื่อต่างกัน จากนั้นในแต่ละเซิร์ฟเวอร์ผม symlink wp-config.php -> wp-config-production.php
เช่น จากนั้นผู้ใช้แต่ละคนจะรักษาฐานข้อมูลของตนเองไว้ด้วยข้อมูลประจำตัวของตนเองพร้อมการตั้งค่า wp-config.php ของตนเอง (ไม่ได้ติดตาม)
หมายเหตุอื่น ๆ
ฉันใช้Rackspace Cloudซึ่งเป็นปรากฎการณ์และราคาไม่แพง ฉันสามารถใช้เซิร์ฟเวอร์ staging และเซิร์ฟเวอร์ผลิตเหมือนกันได้ ฉันยังเขียนปลั๊กอินตอนนี้ที่ใช้ API ของพวกเขาเพื่อให้ฉันสามารถควบคุมบริการของฉันได้จากภายใน WordPress มันยอดเยี่ยมมาก
ไดเรกทอรีแคช, ไดเรกทอรีอัปโหลดไฟล์ ฯลฯ จะถูกเพิ่มไปยัง. gitignore หากคุณต้องการคุณสามารถตั้งค่างาน cron เพื่อตรวจสอบการอัปโหลดเป็นประจำและผลักดันพวกเขาไปที่ gitosis แต่นั่นไม่จำเป็นสำหรับฉัน
ต้นแบบ / โครงสร้างการพัฒนาเป็นชุดที่จะเลียนแบบบางส่วนรูปแบบการแตกแขนงของวินเซนต์ Driessen ฉันยังใช้ส่วนขยายgit git-flowและฉันขอแนะนำอย่างนั้นเช่นกัน
ฉันมีนักพัฒนา 10 คนหรือมากกว่าที่ทำงานโครงสร้างนี้มานานกว่าหนึ่งปีแล้วและมันก็เป็นความฝันที่จะได้ทำงานด้วย เชื่อถือได้ปลอดภัยรวดเร็วใช้งานได้และคล่องตัวคุณไม่สามารถขออะไรได้อีกมากมาย!