ตกลงเนื่องจากทุกคนลงคะแนนคำตอบที่ฉันเขียนไว้เมื่อปี 2008 * ...
ฉันจะบอกคุณว่าเราทำมันอย่างไรในปี 2014 เราไม่ได้ใช้เว็บไซต์อีกต่อไปเพราะเราใช้ ASP.NET MVC อยู่ในขณะนี้
แน่นอนว่าเราไม่จำเป็นต้องใช้ตัวโหลดบาลานเซอร์และเซิร์ฟเวอร์สองเครื่องในการทำเช่นนั้นก็ใช้ได้ดีถ้าคุณมีเซิร์ฟเวอร์ 3 เครื่องสำหรับทุกเว็บไซต์ที่คุณดูแล แต่มันเกินความจำเป็นทั้งหมดสำหรับเว็บไซต์ส่วนใหญ่
นอกจากนี้เรายังไม่พึ่งพาตัวช่วยล่าสุดจาก Microsoft - ช้าเกินไปและมีเวทมนตร์ที่ซ่อนอยู่มากเกินไปและมีแนวโน้มที่จะเปลี่ยนชื่อด้วย
นี่คือวิธีที่เราทำ:
เรามีขั้นตอนการสร้างโพสต์ที่คัดลอก DLL ที่สร้างขึ้นไปยังโฟลเดอร์ "bin-pub"
เราใช้ Beyond Compare (ซึ่งยอดเยี่ยมมาก **) เพื่อตรวจสอบและซิงค์ไฟล์ที่เปลี่ยนแปลง (ผ่าน FTP เนื่องจากได้รับการสนับสนุนอย่างกว้างขวาง) จนถึงเซิร์ฟเวอร์ที่ใช้งานจริง
เรามี URL ที่ปลอดภัยบนเว็บไซต์ที่มีปุ่มซึ่งคัดลอกทุกอย่างใน "bin-pub" ไปยัง "bin" (ทำการสำรองข้อมูลก่อนเพื่อเปิดใช้งานการย้อนกลับอย่างรวดเร็ว) ณ จุดนี้แอปจะรีสตาร์ทเอง จากนั้น ORM ของเราจะตรวจสอบว่ามีตารางหรือคอลัมน์ใดบ้างที่ต้องเพิ่มและสร้างขึ้นมา
นั่นคือการหยุดทำงานเพียงมิลลิวินาทีเท่านั้น การรีสตาร์ทแอปอาจใช้เวลาหนึ่งหรือสองวินาที แต่ในระหว่างการร้องขอการรีสตาร์ทจะถูกบัฟเฟอร์ดังนั้นจึงไม่มีเวลาหยุดทำงานอย่างมีประสิทธิภาพ
ขั้นตอนการปรับใช้ทั้งหมดใช้เวลาตั้งแต่ 5 วินาทีถึง 30 นาทีขึ้นอยู่กับจำนวนไฟล์ที่มีการเปลี่ยนแปลงและจำนวนการเปลี่ยนแปลงที่ต้องตรวจสอบ
วิธีนี้ทำให้คุณไม่ต้องคัดลอกเว็บไซต์ทั้งหมดไปยังไดเร็กทอรีอื่น แต่มีเพียงโฟลเดอร์ bin นอกจากนี้คุณยังสามารถควบคุมกระบวนการได้อย่างสมบูรณ์และรู้ว่าอะไรกำลังเปลี่ยนแปลง
** เรามักจะมองเห็นการเปลี่ยนแปลงที่เรากำลังปรับใช้อย่างรวดเร็ว - เป็นการตรวจสอบอีกครั้งในนาทีสุดท้ายดังนั้นเราจึงรู้ว่าจะทดสอบอะไรและหากมีสิ่งใดขัดข้องเราพร้อม เราใช้ Beyond Compare เพราะช่วยให้คุณแตกต่างไฟล์ผ่าน FTP ได้อย่างง่ายดาย ฉันจะไม่ทำสิ่งนี้หากไม่มี BC คุณไม่รู้ว่าคุณเขียนทับอะไร
* เลื่อนลงไปด้านล่างเพื่อดู :( BTW ฉันไม่อยากแนะนำเว็บไซต์อีกต่อไปเพราะสร้างได้ช้ากว่าและอาจพังได้ไม่ดีกับไฟล์ temp ที่คอมไพล์แล้วครึ่งหนึ่งเราเคยใช้พวกเขาในอดีตเนื่องจากอนุญาตให้ใช้ไฟล์ทีละไฟล์ที่คล่องตัวมากขึ้น การปรับใช้แก้ไขปัญหาเล็กน้อยได้รวดเร็วมากและคุณสามารถเห็นสิ่งที่คุณกำลังปรับใช้อย่างชัดเจน (หากใช้ Beyond Compare แน่นอนมิฉะนั้นก็อย่าลืม)