2015-06-05 3 views
7

पर पायथन 3 के लिए mod_wsgi स्थापित करना क्या कोई मुझे पाइथन 3 के लिए उबंटू पर mod_wsgi स्थापित करने के लिए निर्देशों का एक स्पष्ट सेट दे सकता है?उबंटू

मुझे पाइथन & mod_wsgi सफलतापूर्वक पायथन 3 का उपयोग करके मिला, और एक संक्षिप्त क्षण के लिए खुश महसूस हुआ।

... जब तक मैं अपाचे के लॉग को देखा और महसूस किया कि मैं इस समस्या हुई: https://askubuntu.com/questions/569550/assertionerror-using-apache2-and-libapache2-mod-wsgi-py3-on-ubuntu-14-04-python

apt-getlibapache2-mod-wsgi-py3 के पुराने संस्करण का बाहर स्थापित करने की है और इस अपाचे के लॉग में त्रुटियों खड़ी कर रहा है। (क्या मुझे इसकी रिपोर्ट करनी चाहिए और यदि ऐसा है तो?)

लिंक में, इंजीनियर pip का उपयोग कर रहा है ताकि एक अधिक अद्यतित संस्करण स्थापित किया जा सके।

दिलचस्प बात यह है कि वह इसे वर्चुअल पायथन 3 वातावरण में स्थापित कर रहा है। (इस प्रणाली pip3 का उपयोग करने से किसी भी अलग होगा?)

इसके अलावा वह pip3 install mod_wsgi का उपयोग करता है, लेकिन pip3 search mod_wsgi रिटर्न:

(संपादित करें: नहीं वह नहीं करता है, वह पिप pip3 नहीं का उपयोग करता है सही हो सकता है। ? है वह अपने गड़बड़ी हो गई? तथ्य यह है कि वह अपने py3venv में है की अनदेखी करने और बस सिस्टम के py2 स्थापना का उपयोग करें? लेकिन वैसे भी है कि भ्रम की स्थिति का समाधान नहीं होता जा रहा रंज नहीं है ...)

mod_wsgi-metrics   - Metrics package for Apache/mod_wsgi. 
cykooz.recipe.pastewsgi - Buildout recipe to create paste.deploy entry points for mod_wsgi or uwsgi 
mod_wsgi-httpd   - Installer for Apache httpd web server. 
apachemiddleware   - Useful Python middleware for use with mod_wsgi deployments 
tranchitella.recipe.wsgi - Buildout recipe to create paste.deploy entry points for mod_wsgi 
mod_wsgi     - Installer for Apache/mod_wsgi. 

तो mod_wsgi-httpd क्या है? और क्या यह निश्चित है कि यह वह नहीं है जिसे मैं चाहता हूं?

अंत में, क्या कोई भी स्रोत से mod_wsgi स्थापित करने के लिए एक लिंक प्रदान कर सकता है?

संपादित करें: मुझे नहीं लगता कि इंजीनियर के बजाय pip install mod_wsgi का उपयोग क्यों कर रहा है। निश्चित रूप से यह सही नहीं हो सकता है? लेकिन अगर मैं pip3 प्रयोग करते हैं, मैं मिलता है:

[email protected]:~$ cd web/piFlask 

[email protected]:~/web/piFlask$ source ./venv3/bin/activate 
(venv3) 
[email protected]:~/web/piFlask$ pip3 install mod_wsgi 
Downloading/unpacking mod-wsgi 
    Downloading mod_wsgi-4.4.12.tar.gz (991kB): 991kB downloaded 
    Running setup.py (path:/home/pi/web/piFlask/venv3/build/mod-wsgi/setup.py) egg_info for package mod-wsgi 
    Traceback (most recent call last): 
     File "<string>", line 17, in <module> 
     File "/home/pi/web/piFlask/venv3/build/mod-wsgi/setup.py", line 141, in <module> 
     'missing Apache httpd server packages.' % APXS) 
    RuntimeError: The 'apxs' command appears not to be installed or is not executable. Please check the list of prerequisites in the documentation for this package and install any missing Apache httpd server packages. 
    Complete output from command python setup.py egg_info: 
    Traceback (most recent call last): 

    File "<string>", line 17, in <module> 

    File "/home/pi/web/piFlask/venv3/build/mod-wsgi/setup.py", line 141, in <module> 

    'missing Apache httpd server packages.' % APXS) 

RuntimeError: The 'apxs' command appears not to be installed or is not executable. Please check the list of prerequisites in the documentation for this package and install any missing Apache httpd server packages. 

---------------------------------------- 
Cleaning up... 
Command python setup.py egg_info failed with error code 1 in /home/pi/web/piFlask/venv3/build/mod-wsgi 
Storing debug log for failure in /home/pi/.pip/pip.log 

और अब मैं pip3 install mod_wsgi-httpd कोशिश, इसके बारे में पाँच मिनट के संकलित करने के लिए ले जाता है:

(venv3) 
[email protected]:~/web/piFlask$ pip3 install mod_wsgi-httpd 
Downloading/unpacking mod-wsgi-httpd 
    Downloading mod_wsgi-httpd-2.4.12.5.tar.gz 
    Running setup.py (path:/home/pi/web/piFlask/venv3/build/mod-wsgi-httpd/setup.py) egg_info for package mod-wsgi-httpd 
    apr-1.5.2/ 
    apr-1.5.2/config.layout 
    apr-1.5.2/build.conf 
    apr-1.5.2/emacs-mode 
    : 

तो अब मैं चिंतित हूँ मैं एक दूसरे मिल गया है Apache मेरे Py3 virtualenv में बैठे।

हालांकि यह त्रुटि से छुटकारा पाता है; pip3 install mod_wsgi अब सफलतापूर्वक पूरा हो गया है।

संपादित करें: लेकिन अब मैं पूरी तरह से अपने निर्देशों का पालन करने की कोशिश कर रहा हूं: मेरे पास /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.load

फिर से प्रौद्योगिकी के क्षेत्र में डूब की क्या ज़रूरत है?

उत्तर

4

यदि उन्होंने पायथन 3 वर्चुअल वातावरण को सक्रिय किया था और इसकी बिन निर्देशिका वहां पथ में थी, तो संभवतः वे 'पीपी 3' की बजाय 'पाइप' चला सकते थे। आपको यह सत्यापित करने के लिए 'कौन सी पीआईपी' चलनी चाहिए कि यह आपके द्वारा अपेक्षित वर्चुअल वातावरण से आ रहा है या नहीं।

'mod_wsgi-httpd' पैकेज विशेष रूप से अपाचे के एक विशिष्ट उदाहरण को स्थापित करने के लिए है, जहां सिस्टम व्यापक अपाचे पुराना है या विकास हेडर फाइलों को याद कर रहा है, या अन्यथा सिस्टम विस्तृत कॉन्फ़िगरेशन को संशोधित नहीं कर सकता । यह आमतौर पर अधिक प्रासंगिकता है जब आपके पास सिस्टम व्यापक मुद्दों को ठीक करने के लिए रूट पहुंच नहीं है और केवल एक अप्रतिबंधित बंदरगाह पर चलने में रुचि रखते हैं और इसलिए रूट पहुंच की आवश्यकता नहीं है। आपको 'mod_wsgi-express' से 'mod_wsgi-express' का उपयोग करना होगा जो 'mod_wsgi-httpd' के बाद स्थापित 'पीआईपी' स्थापित किया गया था क्योंकि अपाचे के 'mod_wsgi-httpd' स्थापित संस्करण का उपयोग करने का यही एकमात्र तरीका है ।

तो, 'mod_wsgi-httpd' के लिए आप वास्तव में इसे अनदेखा करना चाहते हैं। यदि आपने इसे पहले ही इंस्टॉल कर लिया है, तो 'पीआईपी' इसे और 'mod_wsgi' दोनों को अनइंस्टॉल करें। उत्तरार्द्ध को अनइंस्टॉल करने की आवश्यकता है क्योंकि यह 'mod_wsgi-httpd' अपाचे संस्करण से जुड़ा होगा और 'mod_wsgi.so' सिस्टम के साथ काम नहीं करेगा।

कड़ी में अलग उपयोगकर्ताओं कदम के रूप में, वे सही लग रही है, हालांकि मैं कहूंगा कि चरण 3 में, यह प्रकाश डाला जाना चाहिए कि LoadModule और WSGIPythonHome लाइनों जोड़े जाने के लिए कर रहे हैं कि क्या उत्पादन होता है जब mod_wsgi-express install-module आदेश चलाकर। आउटपुट को आपके इंस्टॉलेशन के अनुरूप होने के लिए अनुकूलित किया गया है। तो मूल्यों को न बनाएं, केवल उस कमांड आउटपुट का उपयोग करें।

यदि आपके पास wsgi.load फ़ाइल अभी भी है, तो इसे छुटकारा पाने के लिए sudo a2dismod wsgi चलाएं या अन्यथा मैन्युअल रूप से इसे हटा दें। यह पुराने सिस्टम पैक mod_wsgi से एक बायीं ओर है।

+0

मैं हटा दिया है 'mod_wsgi' और' mod_wsgi-httpd' का उपयोग कर पिप। अब मैं अटक गया हूँ। अगर मैं mod_wsgi स्थापित करता हूं, तो मुझे अपनी पोस्ट में वही त्रुटि मिलती है, जहां मैं 'pip3 ...' का प्रयास कर रहा हूं।एकमात्र चीज जिसे मैं सोच सकता हूं, इंस्टॉलेशन करने के लिए सिस्टम पाइप का उपयोग करना है, उम्मीद है कि मुझे सिस्टम अपाचे मिल जाएगा ...? –

+1

क्षमा करें, एपीएक्स मुद्दे को पूरी तरह नजरअंदाज कर दिया गया है। ऐसा इसलिए है क्योंकि आपने उबंटू पैकेज रिपॉजिटरीज़ से अपाचे के लिए उचित 'देव' पैकेज स्थापित नहीं किया है। Mod_wsgi के लिए पीपीआई पेज पर यह आवश्यक है। उस पैकेज के बिना आप अपाचे हेडर फाइलें और इसके निर्माण टूल को 'एपीएक्स' कहते हैं। –

+0

मुझे पृष्ठ https://pypi.python.org/pypi/mod_wsgi मिला - यह निराशाजनक है क्योंकि यह कहता है * "उदाहरण के लिए, ..., अगर आप अपाचे प्रीफ़ोर एमपीएम का उपयोग कर रहे थे तो आपको ... इसके बजाय आप अपाचे कार्यकर्ता एमपीएम का उपयोग कर रहे थे, आपको इसकी आवश्यकता होगी ... "* लेकिन मैंने इन शर्तों के बारे में कभी नहीं सुना है। क्या अपाचे के ये अलग-अलग स्वाद हैं? तो किसी भी तरह मुझे यह पता लगाना है कि मेरा अपाचे क्या स्वाद है और संबंधित देव फ़ाइल क्या होगी ...? –

12

मैं इस जवाब को "स्वयं को नोट करें जो दूसरों के लिए उपयोग किया जा सकता है" के रूप में इस जवाब का इरादा रख रहा हूं।

apt-get लेखन के समय mod_wsgi का पुराना संस्करण स्थापित करता है।

pip एक अद्यतित संस्करण स्थापित करता है। यह स्रोत कोड डाउनलोड करके और इसे संकलित करके करता है।

एक पायथन 3 वर्चुअलएन्व सेट करें और इसे source ./venv3/bin/activate के साथ सक्रिय करें, सत्यापित करें कि which pip पुष्टि करता है कि यह अब इस वातावरण का उपयोग कर रहा है। ऐसा लगता है कि पीआईपी और पीपी 3 अदलाबदल योग्य हैं।

मेरे मामले में मेरे ./venv3 मेरे फ्लास्क फ़ोल्डर के अंदर है। और mod_wsgi का एकमात्र उद्देश्य अपाचे मार्ग http://myfoo.org/flask मेरे फ्लास्क ऐप के लिए अनुरोध है। इसलिए mod_wsgi को venv3 में स्थापित करना समझ में आता है।

हालांकि, pip के लिए इसे सफलतापूर्वक संकलित करने के लिए, मुझे पहले sudo apt-get install apache2-dev की आवश्यकता है जो आवश्यक शीर्षलेख फ़ाइलें प्रदान करता है। तब मुझे एक रिबूट की आवश्यकता थी। फिर pip install mod_wsgi ठीक है।

तो मूल लिंक से निर्देशों का पालन:

(venv3) 
$ sudo venv3/bin/mod_wsgi-express install-module 
LoadModule wsgi_module /usr/lib/apache2/modules/mod_wsgi-py34.cpython-34m.so 
WSGIPythonHome /home/pi/web/piFlask/venv3 

तब मैं क्रमशः इन 2 लाइनों युक्त /etc/apache2/mods-available/wsgi_express.{load,conf} बनाना होगा।

अंत में मॉड्यूल को सक्षम और जाँच अपाचे के त्रुटि लॉग:

a2enmod wsgi 
sudo service apache2 restart 
cat /var/log/apache2/error.log 
+2

'sudo apt-apache2-dev' इंस्टॉल करें, फिर 'pip इंस्टॉल mod_wsgi' मुझे बस इतना करना था; कोई रीबूट आवश्यक नहीं – Nick

+0

'a2enmod wsgi' आपके निर्देशों के बाद काम नहीं करना चाहिए। हालांकि 'a2enmod wsgi_express' होगा। –