Apache2 का उपयोग करके Apache2 और libapache2-mod-wsgi-py3 का उपयोग Ubuntu 14.04 (पायथन 3.4) पर करें


10

Ubuntu 14.04 पर, Apache2 को पैकेज libapache2-mod-wsgi-py3 के साथ प्रयोग करने से /var/log/apache2/error.log में त्रुटियां होती हैं

प्रजनन करने का तरीका सीधा है:

sudo apt-get install apache2
sudo service apache2 restart
# /var/log/apache2/error.log is "clean"
sudo apt-get install libapache2-mod-wsgi-py3
sudo service apache2 restart

/var/log/apache2/error.log निम्नलिखित त्रुटि देता है:

[Mon Jan 05 16:51:53.641332 2015] [:error] [pid 3141:tid 140703516379008] Exception ignored in: <module 'threading' from '/usr/lib/python3.4/threading.py'>
[Mon Jan 05 16:51:53.643563 2015] [:error] [pid 3141:tid 140703516379008] Traceback (most recent call last):
[Mon Jan 05 16:51:53.643633 2015] [:error] [pid 3141:tid 140703516379008]   File "/usr/lib/python3.4/threading.py", line 1288, in _shutdown
[Mon Jan 05 16:51:53.644350 2015] [:error] [pid 3141:tid 140703516379008]     assert tlock is not None
[Mon Jan 05 16:51:53.643449 2015] [:error] [pid 3140:tid 140703516379008] Exception ignored in: <module 'threading' from '/usr/lib/python3.4/threading.py'>
[Mon Jan 05 16:51:53.644456 2015] [:error] [pid 3140:tid 140703516379008] Traceback (most recent call last):
[Mon Jan 05 16:51:53.644514 2015] [:error] [pid 3140:tid 140703516379008]   File "/usr/lib/python3.4/threading.py", line 1288, in _shutdown
[Mon Jan 05 16:51:53.645052 2015] [:error] [pid 3140:tid 140703516379008]     assert tlock is not None
[Mon Jan 05 16:51:53.645119 2015] [:error] [pid 3141:tid 140703516379008] AssertionError: 
[Mon Jan 05 16:51:53.647513 2015] [:error] [pid 3140:tid 140703516379008] AssertionError: 

इसे कार्य-त्रुटि मुक्त कैसे प्राप्त करें?

जवाबों:


15

Ubuntu 14.04 mod_wsgi 3.4 के साथ आता है। Https://code.djangoproject.com/ticket/22948#comment:2 के अनुसार हमें Python 3.4 के लिए mod_wsgi संस्करण 4.2+ का उपयोग करना होगा।

Mod_wsgi को नवीनतम संस्करण में स्थापित करने का सबसे अच्छा तरीका यह है कि इसे पाइप के साथ प्राप्त करें (वर्चुअन में हो सकता है) और फिर इसके मॉड्यूल को अपाचे सिस्टम-वाइड में स्थापित करें। मेरे मामले में मैं virtualenv सेट का उपयोग करता हूं /venv_path

1) समस्याग्रस्त पैकेज निकालें और निर्भरता स्थापित करें

sudo apt-get remove libapache2-mod-wsgi-py3
sudo apt-get install apache2-dev

2) पाइप के साथ virtualenv में mod_wsgi स्थापित करें

. /venv_path/bin/activate
pip install mod_wsgi

3) अपाचे में स्थापित करें (सिस्टम-वाइड)

sudo /venv_path/bin/mod_wsgi-express install-module
sudo vi /etc/apache2/mods-available/wsgi_express.load /etc/apache2/mods-available/wsgi_express.conf

की सामग्री /etc/apache2/mods-available/wsgi_express.load

LoadModule wsgi_module /usr/lib/apache2/modules/mod_wsgi-py34.cpython-34m.so

की सामग्री /etc/apache2/mods-available/wsgi_express.conf

WSGIPythonHome /venv_path

4) मॉड्यूल को सक्षम करें और अपाचे को पुनरारंभ करें।

sudo a2enmod wsgi_express
sudo service apache2 restart

5) जांचें कि इसमें कोई त्रुटि नहीं है /var/log/apache2/error.log


1
आप उल्लेख करना चाह सकते हैं कि वर्चुअन बनाने के लिए कमांड virtualenv -p python3.4 DIRECTORYया 3.4+ के लिए बेहतर है pyvenv-3.4 DIRECTORY:।
nyuszika7h

1
यह सही है ... लेकिन मैंने mod_wsgi सवाल पर ध्यान केंद्रित रखने के लिए इसका उल्लेख नहीं किया।
साम्ब

1
लेकिन जब से आप पहले से ही अपने उदाहरण में virtualenv का उपयोग कर रहे हैं, तो यह भी उल्लेख नहीं करें कि इसे कैसे बनाया जाए?
न्यसजिका

यदि किसी और cannot open shared object file: No such file or directoryको यह करने की कोशिश करते समय कोई त्रुटि ( ) मिलती है , तो संस्करण 3 को चरण 3 में बदलना याद रखें। मैं पायथन 3.5, 64-बिट का उपयोग कर रहा था। mod_wsgi-py35.cpython-35m-x86_64-linux-gnu.so। यदि आपको नहीं पता कि आपके पास कौन सा संस्करण है, तो फ़ोल्डर पर जाएं ( /usr/lib/apache2/modules/) और देखें। यह उत्तर 32-बिट अजगर 3.4 पर आधारित लगता है।
4

यह विधि अजगर-संस्करण-अज्ञेयवादी है और sudo /venv_path/bin/mod_wsgi-express install-moduleचरण 3 में python3.6 के साथ मेरे लिए काम किया है, आपको उन रास्तों को प्रिंट करना होगा जिन्हें आपको wsgi_expressफाइलों में डालने की आवश्यकता है
gevra

0

बस सांब द्वारा प्रदान किए गए स्वीकृत उत्तर में कुछ जोड़ना चाहते थे।

कॉन्फ़िगरेशन की वास्तविक पंक्तियाँ जिन्हें आपको मॉड्यूल कॉन्फ़िगरेशन में जोड़ने की आवश्यकता है वे mod_wsgi-express install-moduleकमांड द्वारा आउटपुट किए गए हैं (यह स्वीकृत उत्तर में स्पष्ट नहीं था)।

इसके अलावा, मेरे मामले में (और mod_wsgi pkg प्रलेखन के अनुसार - शायद यह तब नहीं था जब स्वीकृत उत्तर लिखा गया था) मुझे कोई wsgi_express.*फाइल नहीं मिली mods-available, लेकिन केवल wsgi.*, और यह wsgi.loadफ़ाइल के साथ प्रतिस्थापित करने के लिए पर्याप्त था नया कॉन्फिग चलाकर

mod_wsgi-express install-module > /etc/apache2/mods-available/wsgi.load

बेशक, यह पूरी फ़ाइल को अधिलेखित कर देगा, इसलिए यदि आपके पास इसमें कोई और निर्देश होने की स्थिति में देखें।

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