Django 2.1 - How to use Django with uWSGI

DjWSGI के साथ Django का उपयोग कैसे करें




django

DjWSGI के साथ Django का उपयोग कैसे करें

uWSGI एक तेज, आत्म-चिकित्सा और डेवलपर / sysadmin-friendly एप्लिकेशन कंटेनर सर्वर है जो शुद्ध C में कोडित है।

यह भी देखें

UWSGI डॉक्स Django, nginx, और uWSGI (कई का एक संभावित तैनाती सेटअप) को कवर करने वाला एक tutorial प्रदान करता है। नीचे दिए गए दस्तावेज़ों पर ध्यान दिया गया है कि कैसे Django को uWSGI के साथ एकीकृत किया जाए।

शर्त: uWSGI

UWSGI विकी कई इंस्टॉलेशन प्रक्रियाओं का वर्णन करता है। पाइप, पायथन पैकेज मैनेजर का उपयोग करके, आप किसी भी कमांड के साथ कोई भी यूडब्ल्यूएसजीआई संस्करण स्थापित कर सकते हैं। उदाहरण के लिए:

# Install current stable version.
$ pip install uwsgi

# Or install LTS (long term support).
$ pip install https://projects.unbit.it/downloads/uwsgi-lts.tar.gz

uWSGI मॉडल

uWSGI क्लाइंट-सर्वर मॉडल पर काम करता है। आपका वेब सर्वर (जैसे, nginx, Apache) गतिशील सामग्री परोसने के लिए एक django-uwsgi "कार्यकर्ता" प्रक्रिया के साथ संचार करता है।

Django के लिए uWSGI सर्वर को कॉन्फ़िगर करना और शुरू करना

uWSGI प्रक्रिया को कॉन्फ़िगर करने के कई तरीकों का समर्थन करता है। UWSGI का कॉन्फ़िगरेशन दस्तावेज़ देखें।

यहां uWSGI सर्वर शुरू करने के लिए एक उदाहरण कमांड दिया गया है:

uwsgi --chdir=/path/to/your/project \
    --module=mysite.wsgi:application \
    --env DJANGO_SETTINGS_MODULE=mysite.settings \
    --master --pidfile=/tmp/project-master.pid \
    --socket=127.0.0.1:49152 \      # can also be a file
    --processes=5 \                 # number of worker processes
    --uid=1000 --gid=2000 \         # if root, uwsgi can drop privileges
    --harakiri=20 \                 # respawn processes taking more than 20 seconds
    --max-requests=5000 \           # respawn processes after serving 5000 requests
    --vacuum \                      # clear environment on exit
    --home=/path/to/virtual/env \   # optional path to a virtualenv
    --daemonize=/var/log/uwsgi/yourproject.log      # background the process

यह मानता है कि आपके पास mysite नामक एक शीर्ष-स्तरीय प्रोजेक्ट पैकेज है, और इसके भीतर एक मॉड्यूल mysite/wsgi.py जिसमें एक WSGI application ऑब्जेक्ट है। यह वह लेआउट है जिसे आपने django-admin startproject mysite हालिया संस्करण के साथ django-admin startproject mysite ( django-admin startproject mysite स्थान पर अपने स्वयं के प्रोजेक्ट नाम का उपयोग करके) चलाया था। यदि यह फ़ाइल मौजूद नहीं है, तो आपको इसे बनाना होगा। इस फ़ाइल में आपको जो डिफ़ॉल्ट सामग्री डालनी चाहिए, उसके लिए WSGI प्रलेखन के साथ कैसे तैनाती करें देखें और आप इसमें और क्या-क्या जोड़ सकते हैं।

यहाँ Django- विशिष्ट विकल्प हैं:

  • chdir : निर्देशिका का पथ जिसे पायथन के आयात पथ पर होना चाहिए - यानी, निर्देशिका जिसमें mysite पैकेज है।
  • module : WSGI मॉड्यूल का उपयोग करने के लिए - शायद mysite.wsgi मॉड्यूल है कि startproject बनाता है।
  • env : शायद कम से कम DJANGO_SETTINGS_MODULE होना चाहिए।
  • home : अपनी परियोजना virtualenv के लिए वैकल्पिक पथ।

उदाहरण ini विन्यास फाइल:

[uwsgi]
chdir=/path/to/your/project
module=mysite.wsgi:application
master=True
pidfile=/tmp/project-master.pid
vacuum=True
max-requests=5000
daemonize=/var/log/uwsgi/yourproject.log

उदाहरण ini कॉन्फ़िगरेशन फ़ाइल का उपयोग:

uwsgi --ini uwsgi.ini

फ़ाइल अपलोड के लिए UnicodeEncodeError को ठीक UnicodeEncodeError

यदि आपको गैर-ASCII वर्ण वाली फ़ाइल नामों के साथ फाइल अपलोड करते समय एक UnicodeEncodeError मिलता है, तो सुनिश्चित करें कि uWSGI को आपके uwsgi.ini जोड़कर गैर-ASCII फ़ाइल नामों को स्वीकार करने के लिए कॉन्फ़िगर किया गया है:

env = LANG=en_US.UTF-8

विवरण के लिए यूनिकोड संदर्भ गाइड की Files अनुभाग देखें।

UWSGI कार्यकर्ताओं को शुरू करने, रोकने और पुनः लोड करने की जानकारी के लिए uWSGI प्रक्रिया का प्रबंधन करने के लिए uWSGI डॉक्स देखें।