Python Flask MySQL Nginx uWSGI


หลังจากที่ก้มหน้าก้มตา ลองผิดลองถูกกับการพยายามสร้างเว็บ โดยที่ไม่ต้องพึ่งโปรแกรมสำเร็จรูป  จำพวก  CMS (Content Management System)  อย่างเช่น    Joomla  หรือ  Wordpress   อยากจะทำเว็บที่เบาๆ โหลดไว และที่สำคัญต้องรันด้วย Python   หลังจากลองมาหลายอย่างก็ได้ข้อสรุปว่า

Python  Flask  MySQL  Nginx


นี่แหละกำลังดี .... โดยการใช้

Nginx        เป็นเว็บเซิร์ฟเวอร์
uWSGI    เป็นเว็บเซิร์ฟเวอร์
Flask         เป็นเฟรมเวิร์ค
MySQL   เป็นระบบฐานข้อมูล
Python    เป็นภาษาสคริปต์ ที่ Flask ใช้

อันที่จริงผู้เขียนได้ลองพยายามใช้  Django  เป็นเฟรมเวิร์คมาก่อน  แต่ก็ไปไม่รอด ดูค่อนข้างซับซ้อน และน่าจะยังไม่เหมาะกับมือใหม่อย่างเรา  ก็เลยหันมาใช้  Flask  ดีกว่าพื้นๆดี  ไม่ซับซ้อน  ตัว Django  เอาไว้ให้เก่งซะก่อนค่อยกลับไปใช้ใหม่



เซิร์ฟเวอร์ ที่ใช้ทดสอบ ก็เป็นของ  DigitalOcean  ในราคาเดือนละ  5 $  ก็ราวๆ 150 บาท ก็พอจ่ายไหว นะ   มีบทความแนะนำ(เป็นภาษาอังกฤษ)  เกี่ยวกับการติดตั้งเยอะเลย  บทความการติดตั้งเว็บเซิร์ฟเวอร์ ที่ลองทำตามแล้วได้ผลก็นี่เลย  How To Install Nginx on Ubuntu 18.04 

ลงเว็บเซิร์ฟเวอร์ได้แล้ว ต่อไปก็เป็นขั้นตอนที่ค่อนข้างยาก ก็คือการลง Flask แล้วเซทค่าให้มาเชื่อมกับ  Nginx    โดยผ่าน  uWSGI  ซึ่งเป็นอะไรที่ยุ่งยากมาก ตามอ่านบทความแต่ละที่ ก็มีวิธีเซทค่าที่ต่างกันออกไป ก็เลยยิ่ง งง กันไปใหญ่


สำหรับคนที่คุ้นเคยกับการใช้ เว็บเซิร์ฟเวอร์ Apache + PHP + MySQL  ไม่เห็นจำเป็นต้องมารู้เรื่องพวกนี้เลย  แต่ถ้าจะหันมาใช้ เว็บที่เขียนด้วย Python ละก็จำเป็นอย่างแรง ที่จะต้องเข้าใจ ....



ขอบคุณภาพจาก Towards Data Science



จากรูปข้างบน จะเห็นว่าเวลาเราเข้าเว็บไซต์ โดยผ่าน  Browser   ตัว Browser ดังรูปข้างบนจะติดต่อกับ เว็บเซิร์ฟเวอร์  Nginx  ก่อน  แล้ว  Nginx  จึงติดต่อกับ Flask โดยผ่าน  uWSGI

อันที่จริง ทั้ง Nginx  uWSGI  Flask แต่ละตัว สามารถทำตัวเป็นเว็บเซิร์ฟเวอร์ได้เลย (ตอนเซทค่าไปทีละตัว จะเข้าใจได้เอง)  โดยที่    uWSGI  และ Flask ทำตัวเป็นเว็บเซิร์ฟเวอร์ ได้ในระดับแบบเด็กๆ คือรับงานหนักๆ แบบว่ามีคนเข้าใช้เว็บแบบมากๆไม่ได้ ล่มแน่นอน

ตัวที่เป็นพระเอกในการเป็นเว็บเซิร์ฟเวอร์คือ  Nginx   สามารถรับภาระหนักๆ จาการเข้าใช้งานเว็บๆหลายๆคนพร้อมกันได้  แต่   Nginx  ก็ให้บริการได้เฉพาะเนื้อหาจำพวก Text  รูปภาพ ...  แต่ถ้าอยากจะใช้บริการคิดคำนวณ  บริการค้นข้อมูล  บลาๆๆๆ....  ระดับนี้ต้องใช้ภาษาสคริปต์อย่าง Python เข้ามาช่วย

ซึ่งก็คือ  Flask  นั้นเอง (Flask เป็นเฟรมเวิร์ค เขียนด้วย Python)   ในการติดต่อกับ Database server อย่าง MySQL เราก็ใช้ Flask อีกเหมือนกัน

ปัญหาคือเว็บเซิร์ฟเวอร์ Nginx จะติดต่อทำงานกับ Flask ได้ก็ต้องใช้บริการ  uWSGI    ก็เลยค่อนข้างจะมีงานต้องทำมากหน่อย ถ้าคิดจะใช้บริการเว็บ  Python

ไม่เหมือนกับฝั่ง Apache + PHP  ค่อนข้างง่ายกว่ามาก ในการเซทระบบ .... แต่ก็อย่างว่า เขียน Python มันส์กว่า PHP เยอะเลย :-)






ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

Putty WinSCP Visual Code