ฉันถามคำถามนี้เมื่อหนึ่งปีก่อนและในช่วงเวลานั้นเราได้เพิ่มผู้คนเข้ามาในทีมของเรามากขึ้นและพัฒนาเว็บไซต์จำนวนมากขึ้นใน WordPress ฉันต้องการที่จะเดินผ่านกระบวนการของเราในกรณีที่มันอาจช่วยให้คนอื่น
ทุกอย่างใน Git
นี่คือสิ่งที่ฉันทำแม้ว่าฉันจะถามคำถาม แต่มันก็ดีที่จะเรียกประเด็นนี้ออกมา การใช้ Git ไม่เพียง แต่ช่วยให้เรามีประสิทธิผลมากขึ้นเท่านั้น แต่ยังช่วยลาร่วมของเราหลายต่อหลายครั้ง
คุณเคยต้องการที่จะทำการปรับปรุงโครงสร้างครั้งใหญ่ในเว็บไซต์หรือไม่และได้รับการอนุมัติสำหรับการปรับปรุงเหล่านั้นจากลูกค้าและในขณะเดียวกันก็ทำการอัพเดทเล็กน้อยสำหรับเวอร์ชั่นที่ไม่ได้รับการปรับปรุงใหม่? เรามีและ Git ปล่อยให้เราทำ การอธิบายการตั้งค่านี้จะยืดยาว แต่พื้นฐานคือเราสร้างสาขาใหม่ดึงสาขานั้นไปยังเซิร์ฟเวอร์และแนบโดเมนย่อยเข้ากับสาขานั้น
นอกจากนี้เรายังได้รับการบันทึกโดย Git แน่นอนว่ามันช่วยให้เราสามารถย้อนกลับการเปลี่ยนแปลงได้ซึ่งยอดเยี่ยม แต่ก็ช่วยให้เราสามารถนำไฟล์เวอร์ชันเก่ากลับมาได้ ซึ่งหมายความว่าหากลูกค้าถามว่า "โปรดจำไว้ว่าส่วนหนึ่งของเว็บไซต์นี้ทำงานเกี่ยวกับปีที่แล้วได้หรือไม่เราสามารถนำสิ่งนั้นกลับมาได้หรือไม่" คำตอบคือใช่ - แม้ว่าบุคคลที่ถูกถามไม่ได้อยู่ในโครงการหนึ่งปี มาแล้ว
ข้างจุดเหล่านี้ก็หมายความว่าเราไม่เคยติดขัดโดยไม่มีไฟล์ที่เราต้องการ เราสามารถดึงเว็บไซต์รุ่นล่าสุดลงมาจากเครื่องใดก็ได้และเริ่มทำการเปลี่ยนแปลง
ใช้ Git เพื่อปรับใช้
เราทำโฮสติ้ง WordPress ของเราบนMedia Templeและเราชอบพวกเขามาก พวกเขาไม่ใช่ผู้ให้บริการที่ถูกที่สุด แต่บริการของพวกเขานั้นยอดเยี่ยมและเซิร์ฟเวอร์ของพวกเขานั้นติดตั้งได้ดีจริงๆ นอกจากนี้ยังให้ Git ตามค่าเริ่มต้น ซึ่งหมายความว่าเราสามารถตั้งค่าเซิร์ฟเวอร์เป็นที่เก็บ Git และดึงการเปลี่ยนแปลงในแบบนั้นแทนที่จะใช้ SFTP นอกจากนี้ยังหมายความว่าการทำงานบนเซิร์ฟเวอร์นั้นไม่ได้อยู่ในอันตรายที่จะถูกเขียนทับ (เนื่องจากการเปลี่ยนแปลงเหล่านั้นสามารถรวมเข้าด้วยกันและผลักดันข้อมูลกลับไป)
เนื่องจากเราใช้BitBucketเป็นโฮสต์ Git ของเราจึงมีงานพิเศษเล็กน้อยที่นี่ ก่อนอื่นเราใช้ไฟล์. ssh / configเพื่อให้เราสามารถพิมพ์สิ่งต่าง ๆ เช่นssh sitename
ล็อกอินเข้าสู่เซิร์ฟเวอร์ของเรา (เรายังใช้รหัสผ่าน SSH ที่ไม่มีรหัสซึ่งทำให้สิ่งนี้ง่ายสุด ๆ ) นอกจากนี้เรายังให้แน่ใจว่าใช้วลีรหัสผ่าน sshเสมอ(Mac OS X ทำให้ง่ายมากโดยอนุญาตให้คุณเก็บข้อความรหัสผ่านของคุณใน Keychain.app ) สุดท้ายเราเพิ่มบรรทัด ForwardAgent ไปยังรายการ. ssh / config บนโฮสต์ที่เราต้องการดึงออกมา ซึ่งหมายความว่าเราต้องการคีย์สาธารณะ SSH ของแต่ละคนใน BitBucket เท่านั้นไม่ใช่กุญแจสาธารณะของแต่ละเซิร์ฟเวอร์ เราตรวจสอบให้แน่ใจว่าเก็บ.git
ไดเรกทอรีหนึ่งไดเรกทอรีเหนือไดเรกทอรี HTML สาธารณะ
ฐานข้อมูลอัตโนมัติทิ้ง
เมื่อเซิร์ฟเวอร์อยู่ในโหมดการผลิตเราให้แน่ใจว่าจะโดยอัตโนมัติสำรองฐานข้อมูลของเราเพียงในกรณีที่
ทุกคนมี wp-config ของตัวเอง
เนื่องจากเราทุกคนมีชื่อผู้ใช้และรหัสผ่านฐานข้อมูลท้องถิ่นของเราและเนื่องจากเราสามารถใช้ชื่อและกลไกการแสดงผลที่แตกต่างกันเราแต่ละคนเก็บไฟล์ wp-config ของเราเอง แต่ละรายการเหล่านี้จะถูกเก็บไว้ใน Git ด้วยชื่อที่ชอบwp-config-gavin.php
และเมื่อเราต้องการใช้การกำหนดค่านั้นเราจะเชื่อมโยงไปยังwp-config.php
(ซึ่ง Git ใช้ละเว้น. gitignore )
นอกจากนี้ยังช่วยให้เราสามารถแทนที่siteurl
ตัวเลือกในwp_options
ตารางฐานข้อมูลเช่น:
define('WP_SITEURL', 'http://sitename.localhost');
define('WP_HOME', 'http://sitename.localhost');
สิ่งนี้จะป้องกัน WordPress จากการดูฐานข้อมูลสำหรับที่ตั้งเซิร์ฟเวอร์และหมายความว่าไม่มีความแตกต่างที่แปลกประหลาดระหว่างการติดตั้งภายในและการติดตั้งเซิร์ฟเวอร์
หมายเหตุสุดท้ายเกี่ยวกับไฟล์ wp-config.php: ตรวจสอบให้แน่ใจว่าได้เก็บไว้เหนือไดเรกทอรี HTML สาธารณะและให้การอนุญาตสำหรับผู้ใช้เว็บเท่านั้น สิ่งนี้สร้างความแตกต่างอย่างมากในการรักษาความปลอดภัย WordPress
ปัญหาฐานข้อมูล
ในที่สุดเนื้อของเรื่อง
สิ่งที่ฉันต้องยอมรับคือเมื่อใช้ WordPress ไม่มีวิธีที่ดีในการเปลี่ยนแปลงฐานข้อมูล "ผสาน" แต่เราจำเป็นต้องพัฒนากฎความประพฤติเพื่อแก้ปัญหานี้ กฎค่อนข้างง่ายและให้บริการเราดีจนถึงตอนนี้
ในระหว่างการพัฒนามีบุคคลเพียงคนเดียวที่ "เป็นเจ้าของ" ไซต์ บุคคลนั้นมักจะทำการติดตั้ง (รับแพคเกจโฮสติ้งด้วยกันเริ่มโครงการ Basecamp, แบ่งการออกแบบ, สิ่งนั้น) เมื่อบุคคลนั้นถึงจุดที่เหมาะสมแล้วให้ทำการถ่ายโอนฐานข้อมูลสำหรับ WordPress ติดตั้งและใส่ลงใน Git จากจุดนั้นไปข้างหน้าทุกคนที่ทำการพัฒนาใช้การถ่ายโอนข้อมูลฐานข้อมูลนั้นและเจ้าของเป็นเพียงคนเดียวที่ทำการเปลี่ยนแปลงฐานข้อมูล
เมื่อสร้างเว็บไซต์ได้รับเพิ่มเติมเล็กน้อยพร้อมเว็บไซต์จะวางบนเซิร์ฟเวอร์ จากจุดนั้นเป็นต้นไปฐานข้อมูลของเซิร์ฟเวอร์เป็นที่ยอมรับ ทุกคน (รวมถึงเจ้าของ) ต้องทำการเปลี่ยนแปลงฐานข้อมูลทั้งหมดบนเซิร์ฟเวอร์และดึงการเปลี่ยนแปลงสำหรับการพัฒนาและทดสอบในท้องถิ่น
กระบวนการนี้ไม่สมบูรณ์แบบ ยังคงเป็นไปได้ที่บางคนอาจต้องทำการเปลี่ยนแปลงในแบ็กเอนด์ WordPress ในพื้นที่ระหว่างการพัฒนาแล้วต้องทำการเปลี่ยนแปลงเหล่านั้นอีกครั้งในการผลิต อย่างไรก็ตามเราพบว่าสิ่งที่หายากและกระบวนการนี้ใช้งานได้ดีสำหรับเรา