Live-Verified #1: เทคนิคอัปเดต PHP บนเว็บโฮสติ้ง cPanel
เจาะลึกรูปแบบ worker ไฟล์ PHP เดียวแบบ self-deleting สำหรับเว็บไซต์ขนาด 1,000 หน้าบนโฮสติ้ง cPanel ที่ไม่มี SSH และ CI/CD pipeline

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
- เหมาะสำหรับเว็บไซต์ PHP ขนาดเล็กบน cPanel ที่ไม่มีสิทธิ์ SSH
- ใช้ไฟล์ PHP เดี่ยวอัปโหลดผ่านเว็บและเรียกใช้งานด้วยรหัสลับ
- มีระบบตรวจสอบเงื่อนไขล่วงหน้า 18 ข้อก่อนรันโค้ดจริง
- ไฟล์สคริปต์จะลบตัวเองทันทีหลังทำงานเสร็จเพื่อความปลอดภัย
การแก้ไขโค้ดบนเว็บไซต์จริงโดยตรงผ่านตัวจัดการไฟล์บนเบราว์เซอร์มักเป็นจุดเริ่มต้นของความหายนะ สำหรับนักพัฒนาที่ดูแลเว็บไซต์ The DJ Calendar ซึ่งมีหน้าเว็บด้วย PHP และ MySQL ประมาณ 1,000 หน้าบนโฮสติ้ง cPanel แบบแชร์ โดยไม่มีสิทธิ์เข้าถึง shell, ไม่มี SSH และไม่มีระบบ deploy pipeline การปรับปรุงระบบจึงต้องอาศัยแนวทางเฉพาะตัวเพื่อความอยู่รอด
เพื่อแก้ปัญหานี้ จึงได้พัฒนาสถาปัตยกรรม worker pattern ขึ้นมาจากการใช้งานจริงหลายเดือน พร้อมกับเปิดโอเพนซอร์สให้ใช้งานในชื่อ guarded-deploy-workers โดยระบบดังกล่าวถูกออกแบบมาเพื่อให้การอัปเดตโค้ดบนเซิร์ฟเวอร์จริงมีความเสี่ยงน้อยที่สุด และป้องกันข้อผิดพลาดที่อาจทำให้เว็บไซต์ล่ม
หลักการทำงานของ worker ตัวนี้คือการใช้ไฟล์ PHP เพียงไฟล์เดียว อัปโหลดไปยังไดเรกทอรีรากของเว็บไซต์ (web root) แล้วเรียกใช้งานผ่านเบราว์เซอร์พร้อมใส่รหัสลับ (secret token) โครงสร้างพื้นฐานของสคริปต์มีความยาวประมาณ 100 บรรทัด โดยมีรายการตรวจสอบเงื่อนไขก่อนเริ่มทำงาน (pre-flight checklist) ทั้งหมด 18 ข้ออยู่ในคลังโค้ด

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
แนวคิดการทำ deployment แบบพึ่งพาตนเองบนโฮสติ้งจำกัดสิทธิ์เช่น cPanel สะท้อนให้เห็นว่านักพัฒนาจำนวนมากยังคงต้องเผชิญกับข้อจำกัดด้านโครงสร้างพื้นฐาน แม้ว่าวงการซอฟต์แวร์สมัยใหม่จะขับเคลื่อนด้วยระบบ automation และ CI/CD ขั้นสูงแล้วก็ตาม การใช้กลไก pre-flight check ร่วมกับการทำลายไฟล์ตัวเองทิ้งหลังใช้งาน (self-deleting pattern) ช่วยปิดช่องโหว่ด้านความปลอดภัยจากการลืมลบไฟล์สคริปต์ทิ้งไว้บนเซิร์ฟเวอร์ ซึ่งเป็นเทคนิคที่ประยุกต์ใช้ได้ดีกับระบบที่ไม่มีทีมไอทีคอยดูแลเบื้องหลัง
แม้ว่าระบบนี้จะไม่สามารถเทียบเท่ากับ deployment pipeline แบบมืออาชีพได้ แต่ถูกสร้างขึ้นมาเพื่อโลกความเป็นจริงที่หลายคนต้องเผชิญ นั่นคือกล่อง cPanel, ข้อมูลล็อกอิน FTP, เว็บไซต์ที่ต้องหารายได้ และไม่มีทีมโครงสร้างพื้นฐานคอยช่วยเหลือ โค้ดทั้งหมดใช้สัญญาอนุญาตแบบ MIT และเปิดให้ใช้งานผ่าน GitHub (github.com/bryanhamiltondev/guarded-deploy-workers)
ที่มา: Dev.to
พบข้อมูลผิดพลาดในบทความนี้? แจ้งปัญหาบทความนี้
ความคิดเห็น
แสดงความคิดเห็น