บันทึกสั้นๆ กับการลองของบน Windows Azure Web Sites ที่ตั้งให้ทำงานร่วมกับ MySQL บน Windows Azure Virtual Machines

Windows Azure Web Sites เป็นระบบคล้ายๆ กับ Shared Hosting สำเร็จรูปสำหรับใส่เว็บ PHP (เลือกได้ว่าจะเอา 5.3 หรือ 5.4) หรือ ASP.NET ได้ แต่ระบบนั้นสามารถ scale up/down ได้โดยจ่ายเท่าที่ใช้งานจริง โดยภายในมี SQL หรือ MySQL ทำงานด้วย (ใช้พื้นที่เยอะหรือมี load เยอะก็จ่ายตามจริง) แต่ถ้าใช้ MySQL มันจะทำงานกับ ClearDB ที่เป็น Cloud MySQL database ที่ราคาแพงสุดกู่เลยถ้าเอาไปใช้งาน production (มันดีที่ scale ได้ และเป็น Cloud แต่ราคามันก็แพงไป) ด้วยราคาที่แพง ผมจึงปรับแผน ไปใช้ MySQL ที่ผมติดตั้งเองบน Windows Azure Virtual Machines โดยลง Ubuntu Server 12.04 LTS แทน แล้วติดตั้ง MySQL 5.5 บนนั้น โดยการติดตั้งทั้งหมดทำผ่าน SSH แล้วทำการเปิด Firewall Endpoint ที่ port 3306 ให้ Windows Azure Web Sites ติดต่อเข้ามาโดยผมจับ netstat เอาว่าวิ่งเข้ามา IP อะไร แล้ว allow สิทธิ์ตาม IP ที่วิ่งเข้ามา (จากที่เช็คเหมือนไม่ dynamic IP นะ)

การใช้ Windows Azure Web Sites ทำให้เราย้าย Instance ไป regional อื่นๆ หรือเพิ่ม Instance ในกรณีที่ Compute เริ่มตันได้ง่ายๆ ภายในเวลาไม่นานนัก ซึ่งมันง่ายมากๆ สำหรับงานที่ใช้กับเว็บที่รองรับคนเข้าจากหลายๆ พื้นที่บนโลก

โดยรวมตอนนี้ก็โอเคนะ ลองดูที่เว็บที่ลองใช้ตัวอย่างที่ว่าคือ WordPress นั้นเอง (เดี่ยวลอง Drupal อีกตัว)

จากการสำรวจหลังลองของแล้วนั้น บน Windows Azure Web Sites ใช้ Windows Server 2008 R2 Enterprise Edition Service Pack 1 ติดตั้ง IIS 7.1.0761.0, PHP Version 5.3.13 ผ่าน Server API บน CGI/FastCGI ตั้ง memory_limit ที่ 128M ค่าเริ่มต้นของ post_max_size อยู่ที่ 8MB, upload_max_filesize อยู่ที่ 2MB และมี display_errors เป็น Off แต่ 3 ตัวหลังนี้ตั้งค่าเพิ่มเติมได้จาก .user.ini ด้วย

สำหรับ rewrite rule สามารถใช้ได้ โดยผ่าน web.config แต่การตั้งค่าแตกต่างจาก Apache ตรงนี้ต้องศึกษาสักนิดนึง

สำหรับการส่งเมลนั้น ไม่สามารถใช้งานผ่าน mail function บน PHP ไม่ได้ แต่ต้องใช้งานผ่าน 3rd party mail server ข้างนอกแทน (ผ่านพวก SMTP อะไรพวกนั้น) หรือจะใช้ server ที่พ่วงขายร่วมกันก็ได้ (จ่ายเงินเพิ่ม)

Ref.