Deploying WordPress – Part 2: Deploying WordPress with Capistrano

Capistrano

ในตอนที่แล้วได้พูดถึงการจัดการซอร์ซโค้ดของ WordPress ด้วย Git และในตอนท้ายได้พูดถึงการ deploy WordPress โดยใช้ Git hook เอาไว้เล็กน้อย ลำพังตัว Git เองสามารถนำมาประยุกต์ใช้เพื่อ deploy WordPress ได้ก็จริง แต่ก็มีข้อจำกัดค่อนข้างมาก เช่นไม่สามารถเลือกได้ว่าจะ deploy ไปที่เซิร์ฟเวอร์ตัวไหน ไม่สามารถ rollback กลับไปที่รีลีสก่อนหน้าในกรณีเกิดปัญหาที่ไม่คาดคิดเป็นต้น การใช้ Capistrano เข้ามาช่วยในการะบวนการ deploy จะช่วยทำให้การ deploy ง่ายขึ้น และมีความยืดหยุ่นมากขึ้น โดยที่เราสามารถแทรกซอร์ซโค้ดที่ต้องการ พัฒนาส่วนขยายเพิ่มเติม หรือใช้ส่วนขยายที่มีคนพัฒนาเอาไว้แล้วก็ได้ Capistrano เป็นเครื่องมือที่ใช้ในการช่วย deploy ซอร์ซโค้ดของแอปพลิเคชันไปที่เซิร์ฟเวอร์ ซึ่งเดิมทีพัฒนามาเพื่อใช้กับแอปพลิเคชันที่พัฒนาด้วย Ruby on Rails แต่ก็สามารถเอามาประยุกต์ใช้กับแอปพลิเคชันที่พัฒนาด้วยภาษาอื่นๆได้

การทำงานของ Capistrano

 

capistrano

 

Capistrano จะถูกติดตั้งอยู่ในเครื่องของนักพัฒนา (Dev) ซึ่งใช้ Git เป็นซอฟต์แวร์ในการควบคุมรุ่นของซอฟต์แวร์ ซึ่งเราใช้ในการควบคุมรุ่นของ WordPress ซึ่งมี remote repository อยู่ที่ github การใช้งาน Capistrano จะทำผ่านคำสั่ง cap ทาง command line เมื่อเราใช้คำสั่ง cap โปรแกรม Capistrano จะเข้าไปอ่านไฟล์คอนฟิกเกอเรชั่นในไดเรกทอรี config ซึ่งอยู่ภายใต้โปรเจค (mysite) จากนั้นจะทำ remote execution ผ่านทาง ssh ไปที่เซิร์ฟเวอร์ production เพื่อใช้คำสั่ง git ในการดึงซอร์ซโค้ดจาก github มาไว้ที่เซิร์ฟเวอร์ production โดยจะเก็บซอร์ซโค้ดของการ deploy แต่ละครั้งแยกออกจากกันและใช้ symbolic link ชื่อว่า current เพื่อชี้ไปที่ซอร์ซโค้ดที่ถูก deploy ครั้งล่าสุดเสมอ

ด้วยวิธีการนี้ทำให้เราสามารถ rollback ไปที่การ deploy ก่อนหน้าได้ นอกจากนั้นยังอาศัยความสามารถของการทำ remote execution ผ่าน ssh ในการทำงานหลายๆอย่างบนเซิร์ฟเวอร์  เช่น restart  deploy ฐานข้อมูล MySQL ทำการสำรองข้อมูล และสร้างไฟล์คอนฟิกเกอเรชั่นสำหรับ WordPress ที่เหมาะสมสำหรับใช้ในจุดประสงค์ที่ต่างกันได้

ยกตัวอย่างวิธีการใช้งานคร่าวๆเพื่อให้เห็นภาพชัดเจนขึ้น เช่นถ้าเราต้องการที่จะ deploy development branch ของ repo ไปที่เซิร์ฟเวอร์สามารถทำโดยใช้คำสั่ง

$ cap deploy

ถ้าเราต้องการ rollback แอปพลิเคชันจากรีลีสปัจจุบันสู่รีลีสก่อนหน้า สามารถทำโดยใช้คำสั่ง

$ cap deploy:rollback

Continue reading “Deploying WordPress – Part 2: Deploying WordPress with Capistrano”

Deploying WordPress – Part I: Version Controlling WordPress with Git

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

ลองไปไล่อ่านดูว่าคนอื่นเค้ามีขบวนการจัดการและพัฒนาบล็อกอย่างไรก็พบว่า ส่วนใหญ่ใช้ version control system อย่าง Git เข้ามาช่วยในการจัดการซอร์ซโค้ดของปลักอินและเทมเพลต นอกจากนั้นเห็นหลายคนยังใช้เครื่องมือหลายๆตัวมาช่วยในขบวนการ deploy WordPress อีกด้วย Git มาจัดการ WordPress โดยเน้นที่การจัดการซอร์ซโค้ดของปลักอินและเทมเพลต ส่วนซอร์ซโค้ดหลักของ WordPress จะไม่ถูกแก้ไข การใช้ version control system เข้ามาจัดการซอร์ซโค้ดมีประโยชน์หลายอย่าง เช่น

  • สามารถแก้ไขซอร์ซโค้ดของโครงการร่วมกันกับทีมพัฒนาหลายๆคนได้ การทำงานร่วมกันหลายคนบนซอร์ซโค้ดเดียวกันจำเป็นต้องมี workflow โดยสามารถลองศึกษาได้จากบทความ Simple Git workflow is simple
  • ง่ายต่อการอ้างอิงเวอร์ชันต่างๆของซอร์ซโค้ด เนื่องจากมีที่เก็บซอร์ซโค้ดที่ตกลงกันอย่างเป็นทางการภายในทีมพัฒนา
  • เป็นการสำรองข้อมูลของซอร์ซโค้ดไปในตัว
  • สามารถติดตามประวัติของการเปลี่ยนแปลง รวมถึงสามารถกู้คืนซอร์ซโค้ดได้ในกรณีเกิดความผิดพลาดที่ไม่คาดคิด

Continue reading “Deploying WordPress – Part I: Version Controlling WordPress with Git”