Python Flask MySQL Nginx uWSGI
หลังจากที่ก้มหน้าก้มตา ลองผิดลองถูกกับการพยายามสร้างเว็บ โดยที่ไม่ต้องพึ่งโปรแกรมสำเร็จรูป จำพวก CMS (Content Management System) อย่างเช่น Joomla หรือ Wordpress อยากจะทำเว็บที่เบาๆ โหลดไว และที่สำคัญต้องรันด้วย Python หลังจากลองมาหลายอย่างก็ได้ข้อสรุปว่า
Python Flask MySQL Nginx
นี่แหละกำลังดี .... โดยการใช้
Nginx เป็นเว็บเซิร์ฟเวอร์
uWSGI เป็นเว็บเซิร์ฟเวอร์
uWSGI เป็นเว็บเซิร์ฟเวอร์
Flask เป็นเฟรมเวิร์ค
MySQL เป็นระบบฐานข้อมูล
Python เป็นภาษาสคริปต์ ที่ Flask ใช้
อันที่จริงผู้เขียนได้ลองพยายามใช้ Django เป็นเฟรมเวิร์คมาก่อน แต่ก็ไปไม่รอด ดูค่อนข้างซับซ้อน และน่าจะยังไม่เหมาะกับมือใหม่อย่างเรา ก็เลยหันมาใช้ Flask ดีกว่าพื้นๆดี ไม่ซับซ้อน ตัว Django เอาไว้ให้เก่งซะก่อนค่อยกลับไปใช้ใหม่
เซิร์ฟเวอร์ ที่ใช้ทดสอบ ก็เป็นของ DigitalOcean ในราคาเดือนละ 5 $ ก็ราวๆ 150 บาท ก็พอจ่ายไหว นะ มีบทความแนะนำ(เป็นภาษาอังกฤษ) เกี่ยวกับการติดตั้งเยอะเลย บทความการติดตั้งเว็บเซิร์ฟเวอร์ ที่ลองทำตามแล้วได้ผลก็นี่เลย How To Install Nginx on Ubuntu 18.04
เซิร์ฟเวอร์ ที่ใช้ทดสอบ ก็เป็นของ DigitalOcean ในราคาเดือนละ 5 $ ก็ราวๆ 150 บาท ก็พอจ่ายไหว นะ มีบทความแนะนำ(เป็นภาษาอังกฤษ) เกี่ยวกับการติดตั้งเยอะเลย บทความการติดตั้งเว็บเซิร์ฟเวอร์ ที่ลองทำตามแล้วได้ผลก็นี่เลย How To Install Nginx on Ubuntu 18.04
ลงเว็บเซิร์ฟเวอร์ได้แล้ว ต่อไปก็เป็นขั้นตอนที่ค่อนข้างยาก ก็คือการลง Flask แล้วเซทค่าให้มาเชื่อมกับ Nginx โดยผ่าน uWSGI ซึ่งเป็นอะไรที่ยุ่งยากมาก ตามอ่านบทความแต่ละที่ ก็มีวิธีเซทค่าที่ต่างกันออกไป ก็เลยยิ่ง งง กันไปใหญ่
สำหรับคนที่คุ้นเคยกับการใช้ เว็บเซิร์ฟเวอร์ Apache + PHP + MySQL ไม่เห็นจำเป็นต้องมารู้เรื่องพวกนี้เลย แต่ถ้าจะหันมาใช้ เว็บที่เขียนด้วย Python ละก็จำเป็นอย่างแรง ที่จะต้องเข้าใจ ....
สำหรับคนที่คุ้นเคยกับการใช้ เว็บเซิร์ฟเวอร์ Apache + PHP + MySQL ไม่เห็นจำเป็นต้องมารู้เรื่องพวกนี้เลย แต่ถ้าจะหันมาใช้ เว็บที่เขียนด้วย Python ละก็จำเป็นอย่างแรง ที่จะต้องเข้าใจ ....
ขอบคุณภาพจาก Towards Data Science
อันที่จริง ทั้ง Nginx uWSGI Flask แต่ละตัว สามารถทำตัวเป็นเว็บเซิร์ฟเวอร์ได้เลย (ตอนเซทค่าไปทีละตัว จะเข้าใจได้เอง) โดยที่ uWSGI และ Flask ทำตัวเป็นเว็บเซิร์ฟเวอร์ ได้ในระดับแบบเด็กๆ คือรับงานหนักๆ แบบว่ามีคนเข้าใช้เว็บแบบมากๆไม่ได้ ล่มแน่นอน
ตัวที่เป็นพระเอกในการเป็นเว็บเซิร์ฟเวอร์คือ Nginx สามารถรับภาระหนักๆ จาการเข้าใช้งานเว็บๆหลายๆคนพร้อมกันได้ แต่ Nginx ก็ให้บริการได้เฉพาะเนื้อหาจำพวก Text รูปภาพ ... แต่ถ้าอยากจะใช้บริการคิดคำนวณ บริการค้นข้อมูล บลาๆๆๆ.... ระดับนี้ต้องใช้ภาษาสคริปต์อย่าง Python เข้ามาช่วย
ซึ่งก็คือ Flask นั้นเอง (Flask เป็นเฟรมเวิร์ค เขียนด้วย Python) ในการติดต่อกับ Database server อย่าง MySQL เราก็ใช้ Flask อีกเหมือนกัน
ปัญหาคือเว็บเซิร์ฟเวอร์ Nginx จะติดต่อทำงานกับ Flask ได้ก็ต้องใช้บริการ uWSGI ก็เลยค่อนข้างจะมีงานต้องทำมากหน่อย ถ้าคิดจะใช้บริการเว็บ Python
ไม่เหมือนกับฝั่ง Apache + PHP ค่อนข้างง่ายกว่ามาก ในการเซทระบบ .... แต่ก็อย่างว่า เขียน Python มันส์กว่า PHP เยอะเลย :-)
ความคิดเห็น
แสดงความคิดเห็น