Ubuntu 16.04 पर Django और nginx के साथ काम करने के लिए वायरिंग uWSGI


14

मैं के साथ और पर सेटअप करने के लिए इस ट्यूटोरियल का पालन करने की कोशिश कर रहा हूं ।uWSGIDjangonginxUbuntu16.04

यह बहुत अंतिम चरण तक ठीक काम करता है (ओह विडंबना ...) जहां मैं इस कमांड को निष्पादित करने का प्रयास करता हूं:

sudo service uwsgi start

यदि निम्न त्रुटि के साथ विफल रहता है:

Uwsgi.service शुरू करने में विफल: यूनिट uwsgi.service नहीं मिली।

दूसरों को एक समान त्रुटि मिलती है:

Uwsgi.service शुरू करने में विफल: यूनिट uwsgi.service लोड करने में विफल: ऐसी कोई फ़ाइल या निर्देशिका नहीं।

समस्या उबंटू के संस्करण से संबंधित प्रतीत होती है। कि ट्यूटोरियल Ubuntu 14.04 के उद्देश्य से किया जाता है, ऐसा लगता है कि यह नए संस्करणों के लिए काम नहीं करेगा क्योंकि संस्करण 15 में उबंटू से बदल upstartकरने के लिए init डेमॉन systemdinit डेमॉन

मैं systemduWSGI को लॉन्च करने के लिए कैसे उपयोग कर सकता हूं ताकि यह नगीनेक्स और Django के साथ काम करे?

जवाबों:


27

पहले संशोधन की जरूरत है /etc/uwsgi/sites/firstsite.iniफ़ाइल। केवल आवश्यक परिवर्तन से अनुमतियों को प्रतिस्थापित किया 664जा रहा है 666। स्क्रिप्ट इस तरह दिखाई देगी:

[uwsgi]
project = firstsite
base = /home/user

chdir = %(base)/%(project)
home = %(base)/Env/%(project)
module = %(project).wsgi:application

master = true
processes = 5

socket = %(base)/%(project)/%(project).sock
chmod-socket = 666
vacuum = true

दूसरे , जैसा कि हम इसके systemdबजाय उपयोग कर रहे हैं upstart, निम्न फ़ाइल की आवश्यकता नहीं है और इसे हटाया जा सकता है:/etc/init/uwsgi.conf

तीसरा , हम निम्नलिखित systemdस्क्रिप्ट बनाते हैं /etc/systemd/system/uwsgi.service:

[Unit]
Description=uWSGI Emperor service
After=syslog.target

[Service]
ExecStart=/usr/local/bin/uwsgi --emperor /etc/uwsgi/sites
Restart=always
KillSignal=SIGQUIT
Type=notify
StandardError=syslog
NotifyAccess=all

[Install]
WantedBy=multi-user.target

बोर्ड पर इस नए uWSGI सेवा के साथ सिस्टमिट इनिट सिस्टम की स्थिति को ताज़ा करें

sudo systemctl daemon-reload

स्क्रिप्ट को शुरू करने के लिए आपको निम्नलिखित काम करने होंगे:

sudo systemctl start uwsgi

uWSGIरिबूट पर शुरू करने के लिए , आपको भी आवश्यकता होगी:

sudo systemctl enable uwsgi

आप इसकी स्थिति की जांच करने के लिए निम्नलिखित का उपयोग कर सकते हैं:

systemctl status uwsgi

कुछ और विवरण यहां देखे जा सकते हैं


1
आप एक अजगर virtualenv का उपयोग कैसे करते हैं? जब मैं दौड़ता systemctl status uwsgiहूं तो मुझे मिलता है ImportError: No module named site
tlng05

2
महाकाव्य ..... मैं इसके साथ इतने लंबे समय से संघर्ष कर रहा था .... आपके द्वारा यहां लिखे गए सीधे-सीधे आसान कदम-दर-चरण समाधान के लिए धन्यवाद। +1
रकीब

1
मैंने इसका कई बार इस्तेमाल किया, बहुत ही उपयोगी जवाब
jozi

0

उस त्रुटि को प्राप्त करने के लिए: sudo systemctl daemon-reloadनए बनाए गए uwsgi.service फ़ाइल को लोड करने के लिए।

प्रत्येक रिबूट पर सेवा शुरू करने के लिए sudo systemctl enable uwsgi:।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.