รัดเข็มขัดไว้ นักพัฒนา Django ผู้กล้าหาญ! เรากำลังจะเริ่มการเดินทางครั้งยิ่งใหญ่เพื่อพิชิตการจราจรอันมหาศาลที่หลอกหลอนแอป Django อันเป็นที่รักของเรา ลองนึกภาพสิ่งนี้: โลกที่วุ่นวายซึ่งการจราจรติดขัดและปัญหาคอขวดสร้างความหายนะ ส่งผลให้ผู้ใช้หงุดหงิดและเซิร์ฟเวอร์สั่นสะท้าน แต่อย่ากลัวเลย เพราะเราถือกุญแจสู่ความรอด — การผจญภัยที่สมดุลของภาระงานของ Nginx ที่จะฟื้นฟูความสงบเรียบร้อยและความสามัคคี

ลองนึกภาพแอป Django ของคุณในฐานะมหานครที่พลุกพล่าน เต็มไปด้วยผู้ใช้ที่กระตือรือร้นและคำขอที่มีความต้องการสูง การจราจรหนาแน่นอย่างต่อเนื่อง และขู่ว่าจะทำให้แอปของคุณต้องหยุดชะงัก แต่ท่ามกลางความสับสนวุ่นวาย ก็ยังมีความหวัง — การทำสมดุลภาระงาน มันคือเสื้อคลุมซูเปอร์ฮีโร่ที่ช่วยให้แอปของคุณรับมือกับสัตว์ประหลาดจราจรที่ดุร้ายที่สุดได้อย่างง่ายดาย ด้วยการกระจายคำขอที่เข้ามาไปยังเซิร์ฟเวอร์หลายเครื่อง การปรับสมดุลโหลดทำให้มั่นใจได้ว่าแอปของคุณยังคงตอบสนอง ยืดหยุ่น และไม่มีใครหยุดยั้งได้

ตอนนี้คุณอาจสงสัยว่าทำไมต้อง Nginx? เหตุใดจึงเลือกให้เป็นเพื่อนสนิทที่ไว้ใจได้ของเราในการผจญภัยนี้ นักพัฒนาที่รัก Nginx เปรียบเสมือนนักรบผู้กล้าหาญที่ต้องต่อสู้กับการจราจรติดขัด ประสิทธิภาพที่รวดเร็วปานสายฟ้า การกำหนดค่าที่ยืดหยุ่น และความสามารถในการบาลานซ์โหลดที่แข็งแกร่ง ทำให้มันเป็นอาวุธที่ดีที่สุดสำหรับการควบคุมสัตว์ร้ายที่คอยหลอกหลอนแอป Django

ในคู่มือนี้ เราจะเปิดเผยความลับในการใช้โหลดบาลานเซอร์ Nginx สำหรับแอป Django ของคุณ เราจะนำทางผ่านทะเลแห่งการจัดการเซิร์ฟเวอร์ที่ทรยศโดยควบคุมพลังของ Nginx เพื่อสร้างป้อมปราการที่ยืดหยุ่นซึ่งจะปกป้องแอปของคุณจากฝันร้ายของการจราจร ดังนั้น รัดเข็มขัดนิรภัยของคุณ คว้าดาบเข้ารหัสของคุณ และเริ่มต้นการเดินทางอันน่าตื่นเต้นนี้เพื่อเอาชนะสัตว์ประหลาดจราจรและทวงคืนความสงบสุขและความเจริญรุ่งเรืองของอาณาจักร Django ของคุณ

ยิงจังโก้🔥💥

ก่อนที่เราจะดำดิ่งสู่โลกแห่งการปรับสมดุลโหลดด้วย Nginx เราต้องแน่ใจว่าเรามีแอป Django ที่พร้อมที่จะควบคุมพลังของมัน อย่ากลัวเลย เพราะเวทมนตร์ของ Django จะช่วยให้เราสร้างรากฐานที่แข็งแกร่งได้ในเวลาอันรวดเร็ว ทำตามขั้นตอนเหล่านี้เพื่อเริ่มต้นแอป Django ของคุณ:

👉 ตั้งค่าสภาพแวดล้อมเสมือนจริง (venv):

Create a virtual environment: 
> python -m venv env
Activate the virtual environment:
For Windows: 
> env\Scripts\activate.
For macOS/Linux: 
> source env/bin/activate.

👉 ติดตั้ง Django & สร้างแอป Django:

> pip install django
Create the Django Project:
> django-admin startproject your_project_name .
Create a Django App: 
> python manage.py startapp your_app_name

แล้วก็เอาล่ะ! ตอนนี้แอป Django ของคุณเริ่มต้นใช้งานแล้วและพร้อมที่จะเปิดรับพลังของการทำโหลดบาลานซ์ด้วย Nginx

ในหัวข้อต่อๆ ไป เราจะรวม Nginx เข้ากับแอป Django ของเรา และปลดล็อกความสามารถในการปรับขนาดและความยืดหยุ่น ดังนั้น เรามาก้าวไปข้างหน้าในโอดิสซีย์ของเราเพื่อเอาชนะสัตว์ประหลาดจราจรกันเถอะ!

Nginx และเพื่อนคนอื่นๆ🤝

ในขณะที่เราเริ่มต้นการผจญภัยในการปรับสมดุลโหลดของ Nginx เป็นเรื่องที่น่าสังเกตว่า Nginx ไม่ใช่ผู้เล่นเพียงคนเดียวในเกม แม้ว่า Nginx จะมีชื่อเสียงในด้านความสามารถในการจัดสรรภาระงานอันทรงพลัง แต่ก็มีเซิร์ฟเวอร์อื่นๆ ที่สามารถใช้เป็นตัวจัดสรรภาระงานสำหรับแอป Django ได้เช่นกัน มาดูสองทางเลือกยอดนิยมกันอย่างรวดเร็ว: HAProxy และ uWSGI

HAProxy:

  1. HAProxy เป็นโหลดบาลานเซอร์ที่เชื่อถือได้และมีประสิทธิภาพสูง ซึ่งมีความยอดเยี่ยมในการกระจายการรับส่งข้อมูลไปยังเซิร์ฟเวอร์หลายเครื่อง
  2. มีอัลกอริธึมการปรับสมดุลโหลดขั้นสูง การตรวจสอบสภาพ และการคงอยู่ของเซสชันเพื่อเพิ่มประสิทธิภาพการกระจายคำขอ
  3. HAProxy ขึ้นชื่อในด้านความยืดหยุ่นและชุดฟีเจอร์ที่หลากหลาย ทำให้เป็นตัวเลือกที่ยอดเยี่ยมสำหรับการทำโหลดบาลานซ์ของ Django

uWSGI:

  1. uWSGI เป็นแอปพลิเคชันเซิร์ฟเวอร์ยอดนิยมที่สามารถทำหน้าที่เป็นตัวโหลดบาลานซ์สำหรับแอป Django ได้
  2. โดยมีวิธีปรับสมดุลโหลดต่างๆ รวมถึงการวนรอบ การเชื่อมต่อน้อยที่สุด และแฮช IP เพื่อกระจายคำขออย่างมีประสิทธิภาพ
  3. uWSGI นำเสนอคุณสมบัติเพิ่มเติม เช่น คอนเทนเนอร์แอปพลิเคชันและการจัดการกระบวนการ ทำให้เป็นเครื่องมืออเนกประสงค์ในระบบนิเวศของ Django

แม้ว่าทั้ง HAProxy และ uWSGI จะเป็นโหลดบาลานเซอร์ที่มีความสามารถ แต่เราจะมุ่งเน้นไปที่การใช้ประโยชน์จากประสิทธิภาพของ Nginx ในคู่มือนี้ ความเร็ว ความสามารถในการปรับขนาด และความง่ายในการกำหนดค่าของ Nginx ทำให้ Nginx เป็นที่ชื่นชอบในหมู่นักพัฒนา Django ในด้านการทำโหลดบาลานซ์และการทำพร็อกซีแบบย้อนกลับ

ดังนั้น มาร่วมเดินทางต่อไปโดยมี Nginx ในฐานะเพื่อนคู่ใจของเรา ในขณะที่เราไขความลับของการสร้างโหลดบาลานเซอร์ที่มีประสิทธิภาพสำหรับแอป Django ของคุณ เราจะร่วมกันควบคุมเจ้าสัตว์ประหลาดจราจรและรับรองว่าแอปของคุณจะประสบความสำเร็จแม้ต้องเผชิญกับความต้องการอย่างล้นหลาม

Nginx & Django: Localhost Load Balancing🌐🚀

  1. ดาวน์โหลด Nginx:
  • ไปที่หน้าดาวน์โหลด Nginx ที่ http://nginx.org/en/download.html
  • เลือกเวอร์ชันที่เหมาะสมสำหรับระบบปฏิบัติการของคุณ
  • ทำตามคำแนะนำที่ให้ไว้เพื่อดาวน์โหลด Nginx

<แข็งแกร่ง>2. ติดตั้ง Nginx:

  • แตกไฟล์โฟลเดอร์ Nginx ที่ดาวน์โหลดมา
  • เปิดพรอมต์คำสั่งหรือเทอร์มินัลแล้วไปที่โฟลเดอร์ Nginx
  • เริ่มเซิร์ฟเวอร์ nginx โดยรันคำสั่งต่อไปนี้:
> start nginx

<แข็งแกร่ง>3. ตรวจสอบเซิร์ฟเวอร์ Nginx:

  • เปิดเว็บเบราว์เซอร์และไปที่ "http://localhost" เพื่อให้แน่ใจว่า Nginx ทำงานอย่างถูกต้อง

<แข็งแกร่ง>4. การกำหนดค่า Nginx:

  • แก้ไขไฟล์ nginx.conf ที่อยู่ในโฟลเดอร์ conf โดยใช้โปรแกรมแก้ไขข้อความ เช่น Visual Studio Code
  • อัปเดตการกำหนดค่าตามความต้องการของคุณ รวมถึงบล็อกเซิร์ฟเวอร์ เซิร์ฟเวอร์อัปสตรีม และอัลกอริธึมการปรับสมดุลโหลด

ไฟล์ nginx.conf ก่อนการแก้ไข:

หลังจากเปลี่ยน คุณควรมีไฟล์ดังต่อไปนี้:

<แข็งแกร่ง>5. แก้ไขการตั้งค่า Django:

  • เปิดไฟล์ settings.py ของโปรเจ็กต์ Django ของคุณ
  • อัปเดตการตั้งค่า ALLOWED_HOSTS เพื่อรวมชื่อโฮสต์ของเซิร์ฟเวอร์อัปสตรีม
  • ติดตั้งแพ็คเกจ django-cors-headers หากคุณยังไม่ได้ติดตั้ง โดยใช้คำสั่ง pip install django-cors-headers (ไปที่ "หน้า" นี้เพื่อดูข้อมูลเพิ่มเติม)
  • เพิ่ม 'corsheaders' ลงในรายการ INSTALLED_APPS ในไฟล์ settings.py ของโปรเจ็กต์ Django
  • เพิ่ม 'corsheaders.middleware.CorsMiddleware' ลงในรายการ MIDDLEWARE ใน settings.py โดยวางไว้หลัง 'django.contrib.sessions.middleware.SessionMiddleware' หากต้องการข้อมูลเพิ่มเติมเกี่ยวกับมิดเดิลแวร์ใน Django โปรดอ่าน "บทความ" ที่ยอดเยี่ยมนี้
  • กำหนดการตั้งค่า CORS โดยเพิ่มบรรทัดต่อไปนี้ใน settings.py ของคุณ:
CORS_ALLOW_ALL_ORIGINS = True

CSRF_TRUSTED_ORIGINS = [
     "http://localhost",
]

settings.py ของคุณควรมีลักษณะดังนี้:

<แข็งแกร่ง>6. โหลดเซิร์ฟเวอร์ใหม่:

  • คุณควรโหลด nginx อีกครั้งเพื่อให้การแก้ไขมีผล โดยใช้คำสั่งต่อไปนี้:
> nginx -s reload

<แข็งแกร่ง>7. หมุนเซิร์ฟเวอร์ Django หลายตัว:

  • เปิดพรอมต์คำสั่งหรือเทอร์มินัลหลายรายการ ในแต่ละเทอร์มินัล ไปที่โฟลเดอร์โปรเจ็กต์ Django ของคุณ
  • รันคำสั่ง python Manage.py runserver เพื่อเริ่มเซิร์ฟเวอร์ Django หลายเซิร์ฟเวอร์บนพอร์ตที่แตกต่างกัน (เช่น 1111, 2222, 3333)

<แข็งแกร่ง>8. ทดสอบการปรับสมดุลโหลด:

หากต้องการตรวจสอบว่าโหลดมีความสมดุลระหว่างเซิร์ฟเวอร์หลายเครื่องหรือไม่ เราสามารถเพิ่มการตรวจสอบง่ายๆ โดยการพิมพ์ ID กระบวนการ (PID) บนหน้าแรก ซึ่งสามารถทำได้โดยการนำเข้าโมดูลระบบปฏิบัติการไปยังโปรเจ็กต์ Django ของคุณ

👉 เปิดไฟล์ views.py ในโปรเจ็กต์ Django ของคุณ จากนั้นนำเข้าโมดูลระบบปฏิบัติการที่ด้านบนของไฟล์และเพิ่มฟังก์ชันต่อไปนี้:

👉 สมมติว่าคุณมีเทมเพลต index.html ให้อัปเดตเพื่อแสดง PID ดังนี้:

👉 ตอนนี้เราไปที่หน้าแรกแล้วดูว่าเราได้ทำอะไรมาบ้างจนถึงตอนนี้

หากคุณรีเฟรชหน้า รหัสกระบวนการจะเป็น... (ลองนึกภาพเสียงกลองบ้าง) 🥁

และ Ta-da!🪄 เช่นเดียวกับเวทย์มนตร์ การกำหนดค่าการปรับสมดุลโหลดของเราทำงานได้อย่างไร้ที่ติ! การกระจายคำขอไปยังเซิร์ฟเวอร์หลายเครื่องเป็นสิ่งที่น่าจับตามอง นำประสิทธิภาพและความสามารถในการปรับขนาดมาสู่อาณาจักร Django ของเรา ประสบความสำเร็จแล้ว! 🎉🔥

<แข็งแกร่ง>9. หยุดเซิร์ฟเวอร์ Nginx:

ตอนนี้ถ้าคุณต้องการปิดเซิร์ฟเวอร์ nginx คุณสามารถเรียกใช้คำสั่งต่อไปนี้:

> nginx -s quit

บทสรุป🎉

เอาล่ะคุณได้มันแล้ว! ตอนนี้คุณเอาชนะสัตว์ประหลาดจราจรได้สำเร็จและรักษาอนาคตของแอป Django ของคุณแล้ว ด้วย Nginx ที่อยู่เคียงข้างคุณ คุณสามารถมั่นใจได้ว่าแอปของคุณจะสามารถรับมือกับปริมาณการรับส่งข้อมูลจำนวนเท่าใดก็ได้ ไม่ว่ามันจะเลวร้ายแค่ไหนก็ตาม

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

และที่สำคัญอย่าลืมมาสนุกกัน! การจัดสรรภาระงานอาจเป็นหัวข้อทางเทคนิคที่ซับซ้อน แต่ก็ไม่จำเป็นต้องเป็นเช่นนั้น ด้วยความคิดสร้างสรรค์เพียงเล็กน้อย คุณสามารถเปลี่ยนโหลดบาลานเซอร์ Nginx ของคุณให้เป็นอาวุธทรงพลังที่จะช่วยคุณพิชิตสัตว์ประหลาดจราจรและปกป้องแอป Django ของคุณจากอันตราย

ไว้คราวหน้า นักพัฒนา Django!😃

ในภาษาอังกฤษธรรมดา

ขอขอบคุณสำหรับการเป็นส่วนหนึ่งของชุมชนของเรา! ก่อนที่คุณจะไป: