วิธี Deploy โปรแกรมที่พัฒนาจาก PHP

28. March 2009

เพิ่งได้จับ Linux-Apache-MySQL-PHP เร็วๆนี้ (ไปอยู่ไหนมา ?) ขอจดย่อวิธีติดตั้ง (Deploy) โปรแกรม PHP ที่ไม่ใช่แบบ copy วาง ตามที่อ่านมาสองแบบดังนี้ ทั้งสองแบบจำเป็นจะต้องมี server ที่เข้าไปใช้ shell ได้ (หรือในอีกแง่ยุ่งกับตัว server ได้มากกว่าแค่ใช้ FTP กับ web-based control panel) โชคดีที่ host มีให้แฮะ

สลับ soft link (symlink)

ปกติถ้า copy ไปวางทับตรงๆบน environment ของ server เราอาจจะไม่แน่ใจว่ามันจะทำงานได้จริงรึเปล่า อาจจะอยากลองทดสอบดูก่อนที่จะเอาไปใช้จริง โดยระหว่างทดสอบก็ให้ระบบจริงยังทำงานได้อยู่

ขั้นแรกต้องทำให้ directory ที่เป็น www เป็น soft link ไปยัง directory ที่เก็บ script จริงๆก่อน ใช้คำสั่งสร้าง soft link ชื่อ public_html ให้ชี้ไปที่ real_www แบบนี้

ln –s real_www public_html 

แล้วสร้าง directory ขึ้นมาอีกอันหนึ่งสำหรับทดสอบระบบใหม่ เช่นชื่อ ver2_www อัพโหลดไฟล์ขึ้นไป แล้วอาจจะ config ให้มี subdomain ซักอันชี้ไป หลังจากนั้นก็เอาระบบใหม่ไปวางที่ directory ที่ว่านี้

พอตรวจสอบจนพอใจแล้วว่ามันทำงานได้ ก็ทำการสลับ soft link ให้ชี้มาที่นี้แทน

ln –sfn ver2_www public_html

ระบบใหม่ก็จะถูกเอามาแทนเหมือนไม่มีอะไรเกิดขึ้น ลบ real_www อันเก่าทิ้ง

ใช้ Subversion

ปกติถ้า Project อยู่ถูกทำ version control ไว้ด้วย SVN มันจะมี sub dir เป็น .svn มากมายเหลือเกินครับ จะอัพโหลดพวกนี้ขึ้นไปด้วยก็เปลืองเวลา จึงต้องทำการ export ออกมาก่อน (ไม่มี .svn ตามา) แล้วค่อยอัพโหลดไปติดตั้ง

แต่วิธีการที่จะกำลังจะพูดถึงเป็นการ checkout มาวางที่ server เลย ผมก็แก้ไฟล์บางไฟล์ที่เป็นพวก configuration (พวกติดต่อ DB , usr/pwd, base URL) พอพัฒนาบน dev machine เสร็จ ก็ commit ซะ แล้วก็ไปสั่ง update ที่ server มันก็จะจัดการเอาเฉพาะไฟล์ที่แก้ไขมาให้เอง ส่วนพวกไฟล์ config ที่แก้ไปก็จะมีสถานะเป็น M (Modified) ไม่ต้องไปยุ่งกับมัน ยกเว้นมีการแก้ไฟล์พวกนี้แล้ว commit ขึ้นไปจะทำให้มันมีสถานะเป็น C (Conflicted) ค่อยตามแก้อีกที

สะดวกสบายแต่คงมีเรื่องน่าคิดเรื่อง security อยู่พอสมควร ถ้าไม่จัดการทำให้ dir .svn มันเข้าถึงไม่ได้ :-o ตอนนี้ใช้วิธีนี้อยู่ครับ

General , , ,

Comments are closed