Ubuntu पर Python के लिए Mod_WSGI कैसे सेट करें


25

मैं अपने Ubuntu बॉक्स पर MOD_WSGI सेटअप करने का प्रयास कर रहा हूं। मुझे ऐसे कदम मिले हैं जिनमें कहा गया है कि मुझे http://ubuntuforums.org/showthread.php?t=833766 पर निम्न चरणों को करने की आवश्यकता है

  1. sudo apt-get install libapache2-mod-wsgi
  2. सुडो a2enmod मॉड- wsgi
  3. sudo /etc/init.d/apache2 पुनरारंभ करें
  4. sudo gedit / etc / apache2 / sites-available / default और डायरेक्टरी को अपडेट करें
<Directory /var/www/>
  Options Indexes FollowSymLinks MultiViews ExecCGI

  AddHandler cgi-script .cgi
  AddHandler wsgi-script .wsgi

  AllowOverride None
  Order allow,deny
  allow from all
</Directory>
  1. sudo /etc/init.d/apache2 पुनरारंभ करें
  2. के साथ बनाया गया

    def application(environ, start_response):
        status = '200 OK' 
        output = 'Hello World!'    
        response_headers = [('Content-type', 'text/plain'),
                            ('Content-Length', str(len(output)))]
        start_response(status, response_headers)
    
        return [output]
    

चरण 2 विफल हो जाता है क्योंकि यह कहता है कि यह mod-wsgi नहीं पा सकता है, भले ही इसे मिला। अगर मैं चरणों के साथ अजगर एप्लिकेशन को एक ब्राउज़र में सादे पाठ के रूप में दिखाता हूं।

कोई भी विचार जो मैंने गलत किया है?


EDIT: पूछे गए प्रश्नों के परिणाम

automatedtester@ubuntu:~$ dpkg -l libapache2-mod-wsgi
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Cfg-files/Unpacked/Failed-cfg/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                                   Version                                Description
+++-======================================-======================================-============================================================================================
ii  libapache2-mod-wsgi                    2.5-1                                  Python WSGI adapter module for Apache
automatedtester@ubuntu:~$ dpkg -s libapache2-mod-wsgi
Package: libapache2-mod-wsgi
Status: install ok installed
Priority: optional
Section: python
Installed-Size: 376
Maintainer: Ubuntu MOTU Developers <ubuntu-motu@lists.ubuntu.com>
Architecture: i386
Source: mod-wsgi
Version: 2.5-1
Depends: apache2, apache2.2-common, libc6 (>= 2.4), libpython2.6 (>= 2.6), python (>= 2.5), python (<< 2.7)
Suggests: apache2-mpm-worker | apache2-mpm-event
Conffiles:
 /etc/apache2/mods-available/wsgi.load 06d2b4d2c95b28720f324bd650b7cbd6
 /etc/apache2/mods-available/wsgi.conf 408487581dfe024e8475d2fbf993a15c
Description: Python WSGI adapter module for Apache
 The mod_wsgi adapter is an Apache module that provides a WSGI (Web Server
 Gateway Interface, a standard interface between web server software and
 web applications written in Python) compliant interface for hosting Python
 based web applications within Apache. The adapter provides significantly
 better performance than using existing WSGI adapters for mod_python or CGI.
Original-Maintainer: Debian Python Modules Team <python-modules-team@lists.alioth.debian.org>
Homepage: http://www.modwsgi.org/
automatedtester@ubuntu:~$ sudo a2enmod libapache2-mod-wsgi
ERROR: Module libapache2-mod-wsgi does not exist!
automatedtester@ubuntu:~$ sudo a2enmod mod-wsgi
ERROR: Module mod-wsgi does not exist!

RMYates के लिए अन्य संस्करण

automatedtester@ubuntu:~$ apache2ctl -t -D DUMP_MODULES
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
Loaded Modules:
 core_module (static)
 log_config_module (static)
 logio_module (static)
 mpm_worker_module (static)
 http_module (static)
 so_module (static)
 alias_module (shared)
 auth_basic_module (shared)
 authn_file_module (shared)
 authz_default_module (shared)
 authz_groupfile_module (shared)
 authz_host_module (shared)
 authz_user_module (shared)
 autoindex_module (shared)
 cgid_module (shared)
 deflate_module (shared)
 dir_module (shared)
 env_module (shared)
 mime_module (shared)
 negotiation_module (shared)
 python_module (shared)
 setenvif_module (shared)
 status_module (shared)
Syntax OK
automatedtester@ubuntu:~$ 

Mod_wsgi, Apache या Python क्या नहीं मिल सकता है?
दना द साने

1
a2enmod कमांड mod_wsgi नहीं पा सकी
AutomatedTester

जवाबों:


6

मैंने पाया है कि यह mod_wsgi apt-get पैकेज वाला एक ज्ञात बग है जो एक वर्ष से अधिक पुराना है! Http://www.mail-archive.com/ubuntu-bugs@lists.ubuntu.com/msg1147225.html पर विवरण । Apt-get पैकेज में wsgi.load फ़ाइल नहीं थी ताकि ऊपर दिए गए लिंक में चरणों को करके बनाया जाना आवश्यक हो।

मदद की है कि हर किसी के लिए धन्यवाद!


5

देखें कि क्या मॉड्यूल वास्तव में ठीक से लोड किया गया है:

apache2ctl -t -D DUMP_MODULES

ऐसा नहीं लगता है कि यह ठीक से लोड किया गया है
AutomatedTester

4

जहाँ तक मैं देख सकता हूँ, आपने mod_wsgi मॉड्यूल को अपने में लोड नहीं किया है httpd.conf

मैं पहली बार mods-enabledअपाचे की निर्देशिका में wsgi फ़ाइलों को जोड़ने की कोशिश करूँगा ।

sudo ln -s /etc/apache2/mods-available/wsgi.load /etc/apache2/mods-enabled
sudo ln -s /etc/apache2/mods-available/wsgi.conf /etc/apache2/mods-enabled

फिर अपाचे को पुनरारंभ करें और इसे काम करना चाहिए


2

पहले पुष्टि करें कि WSGI मॉड्यूल वास्तव में स्थापित है:

dpkg -l libapache2-mod-wsgi

यह आपको नाम, संस्करण, आदि सहित आउटपुट देना चाहिए - नाम के बाईं ओर अक्षरों की तलाश करें, यह पैकेज की वर्तमान स्थिति को इंगित करता है। मैन्युअल रूप से जांचने के लिए, / etc / apache2 / mods-available / में देखें और आपको wsgi.conf और wsgi.load दोनों को देखना चाहिए । यदि ये मौजूद हैं, तो उनके पास / etc / apache2 / mods- सक्षम / में समान समरूपता होनी चाहिए ।

या तो मौजूद नहीं होना चाहिए , उस पहले को ठीक करके शुरू करें - यदि आप दुभाषिए को नहीं ढूंढ सकते हैं तो आप अपाचे के माध्यम से अजगर कोड की व्याख्या नहीं कर सकते। इसके अलावा, आपकी टेस्ट- स्क्रिप्ट स्क्रिप्ट आपके द्वारा कॉन्फ़िगर किए गए AddHandler निर्देशों को देखते हुए काम नहीं करेगी - यह निर्देश संबंधित हैंडलर को एक निश्चित एक्सटेंशन की फाइलें पास करने के लिए अपाचे को बताता है । अपनी स्क्रिप्ट बनाने test.wsgi या बदलने AddHandler निर्देश।


test.py प्रश्न में एक टाइपो था। मेरा मतलब था टेस्टवॉगी लगाना।
ऑटोमेटेडटेस्टर

ठीक है, लेकिन क्या आपने पुष्टि की है कि मॉड्यूल स्थापित है और सही ढंग से उपरोक्त निर्देशों के अनुसार जुड़ा हुआ है?
ज़ेने एस हल्सल

मैंने आपके द्वारा पूछी गई जानकारी को प्रश्न में डाल दिया है।
ऑटोमेटेडटेस्टर

सभी जानकारी नहीं - कृपया मैन्युअल रूप से जांचें कि फाइलें wsgi.conf और wsgi.load / in / etc / apache2 / mods-available / में प्रतीकात्मक रूप से / etc / apache2 / mods- सक्षम के रूप में लिंक किए गए हैं । निर्देशिका की एक सरल लंबी सूची पर्याप्त होनी चाहिए (यानी ls -alh / etc / apache2 / mods-enable / )।
ज़ायने एस हल्सल

1

क्या आपने LoadModule लाइन को वास्तव में mod_wsgi लोड होने का कारण बनाया था? वास्तविक त्रुटि संदेश क्या है और यह कहां से आ रहा है? देख:

http://code.google.com/p/modwsgi/wiki/QuickInstallationGuide

निम्न स्तर के निर्देशों के लिए। चूंकि आप बाइनरी पैकेज का उपयोग कर रहे हैं, इसलिए आप संकलन को छोड़ सकते हैं, लेकिन आपको अभी भी mod_wsgi को लोड करने की आवश्यकता है। आप कहाँ / कैसे कर सकते हैं यह आपके लिनक्स वितरण द्वारा एक हद तक निर्धारित किया जा रहा है। उस गाइड के आधार पर जो आपके पास चलाने के लिए होती है:

sudo a2enmod mod-wsgi
sudo /etc/init.d/apache2 restart

क्या आपने वास्तव में ऐसा किया था?


संपादित करें

अपने प्रश्न को फिर से पढ़ना स्पष्ट है। आपने कहा कि .wsgi एक्सटेंशन वाली फाइलें mod_wsgi द्वारा नियंत्रित की जाती हैं, लेकिन तब आपने फ़ाइल को .py एक्सटेंशन दिया था। इसके बजाय .gi का उपयोग करें।


test.py प्रश्न में एक टाइपो था। मेरा मतलब था टेस्टवॉगी लगाना। मैंने a2enmod चलाया, लेकिन यह कहा कि यह mod_wsgi नहीं पा रहा था जैसा कि मैंने अपने प्रश्न के अंत में रखा था
AutomatedTester

1

आप पहले अपने अजगर के वाक्य विन्यास को देख सकते हैं। जांचें कि क्या आपके पास फ़ंक्शन परिभाषा के बाद वास्तव में 4 स्थान हैं। पहले टर्मिनल के माध्यम से इसे चलाकर अजगर फ़ाइल की जाँच करें

$ python /var/www/py/wsgi_handler.wsgi

फिर यदि कोई त्रुटि नहीं दिखती है, तो उसे वेब ब्राउज़र के माध्यम से चलाएं।

http: // localhost / WSGI /

और वैसे भी, आपको लगता है कि आपके अपाचे कॉन्फ़िगरेशन / virtualhost फ़ाइल के लिए कुछ छूट गया है। इसे टैग्स के अंदर डालें

WSGIScriptAlias /wsgi /var/www/py/wsgi_handler.py

वैसे, wsgi मॉड्यूल को स्थापित करते समय apt को कोई समस्या नहीं होती है। मैंने अभी-अभी इसका परीक्षण किया है और अपने वेब ब्राउज़र पर एक अजगर स्क्रिप्ट को सफलतापूर्वक चलाया है।


0

यकीन नहीं है कि यह प्रासंगिक है, लेकिन चलाने के बाद:

apt-get install libapache2-mod-wsgi

... निम्न फ़ाइलें मौजूद नहीं थीं:

/etc/apache2/mods-available/wsgi.conf
/etc/apache2/mods-available/wsgi.load

लापता फ़ाइलों को बदलने के लिए रीइंस्टॉल करना प्रतीत नहीं हुआ। अजीब! हालांकि, purgeलगता है कि चाल के लिए करते हैं:

apt-get install libapache2-mod-wsgi
apt-get purge libapache2-mod-wsgi
apt-get install libapache2-mod-wsgi

# ls /etc/apache2/mods-available/ | grep wsgi
wsgi.conf
wsgi.load
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.