উবুন্টুতে পাইথনের জন্য কীভাবে Mod_WSGI সেট আপ করবেন


25

আমি আমার উবুন্টু বাক্সে MOD_WSGI সেটআপ করার চেষ্টা করছি। আমি http://ubuntuforums.org/showthread.php?t=833766 এ নিম্নলিখিত পদক্ষেপগুলি করার দরকার বলেছিল এমন পদক্ষেপগুলি পেয়েছি

  1. sudo apt-get libapache2-mod-wsgi ইনস্টল করুন
  2. sudo a2enmod mod-wsgi
  3. sudo /etc/init.d/apache2 পুনরায় চালু করুন
  4. sudo gedit / ইত্যাদি / apache2 / সাইট-উপলব্ধ / ডিফল্ট এবং ডিরেক্টরি আপডেট করুন
<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. তৈরি করেছেন test.wsgi দিয়ে

    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 ব্যর্থ হয়েছে কারণ এটি বলছে যে এটি মোড-ডাব্লুএসজি খুঁজে পাবে না যদিও এপট-গেটটি এটি খুঁজে পেয়েছে। যদি আমি পদক্ষেপগুলি সাথে চালিয়ে যাই তবে অজগর অ্যাপটি কেবল একটি ব্রাউজারে সরল পাঠ্য হিসাবে দেখায়।

কোন ধারণা আমি কি ভুল করেছি?


সম্পাদনা: জিজ্ঞাসিত প্রশ্নের ফলাফল

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!

আরএমইটসের জন্য আরও সম্পাদনা করুন

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:~$ 

মোড_উজি, অ্যাপাচি বা পাইথন কী খুঁজে পাবে না?
দানা দ্য সনে

1
a2enmod কমান্ডটি mod_wsgi খুঁজে পেল না
অটোমেটেড

উত্তর:


6

আমি খুঁজে পেয়েছি যে এটি মোড_উজি এপ-গেট প্যাকেজ সহ একটি পরিচিত বাগ যা এক বছরেরও বেশি পুরানো! Http://www.mail-archive.com/ubuntu-bugs@lists.ubuntu.com/msg1147225.html এ বিশদ । অ্যাপটি-গেট প্যাকেজটিতে wsgi.load ফাইল নেই যাতে উপরের লিঙ্কে পদক্ষেপগুলি তৈরি করে তৈরি করা দরকার।

ধন্যবাদ যে সবাইকে ধন্যবাদ!


5

মডিউলটি এটির সাথে সঠিকভাবে লোড হয়েছে কিনা তা দেখুন:

apache2ctl -t -D DUMP_MODULES

দেখে মনে হচ্ছে এটি ঠিকমতো লোড হয়েছে
অটোমেটেড

4

আমি যতদূর দেখতে পাচ্ছি, আপনি নিজের মধ্যে মোড_উজি মডিউলটি লোড করেননি httpd.conf

আমি প্রথমে ডাব্লুএসজি ফাইলগুলি mods-enabledঅ্যাপাচের ডিরেক্টরিতে যুক্ত করার চেষ্টা করব ।

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

প্রথমে নিশ্চিত করুন যে ডাব্লুএসজিআই মডিউলটি আসলে ইনস্টলড রয়েছে:

dpkg -l libapache2-mod-wsgi

নাম, সংস্করণ ইত্যাদি সহ এটি আপনাকে আউটপুট দেয় the নামের বামে বর্ণগুলি সন্ধান করুন এটি প্যাকেজের বর্তমান অবস্থা নির্দেশ করে। ম্যানুয়ালি পরীক্ষা করতে, / ইত্যাদি / অ্যাপাচি 2 / মোডগুলি-উপলব্ধ / দেখুন এবং আপনার wsgi.conf এবং wsgi.load উভয়ই দেখতে হবে । যদি এগুলি বিদ্যমান থাকে তবে তাদের / etc / apache2 / mods- সক্ষম / তে যথাযথ প্রতিযোগীতা থাকতে হবে ।

হয় যদি অস্তিত্ব থাকে না , প্রথমে এটি ঠিক করে শুরু করুন - যদি অ্যাপাচি দোভাষী খুঁজে না পান তবে আপনি অ্যাপাচের মাধ্যমে পাইথন কোডটি ব্যাখ্যা করতে পারবেন না। এছাড়াও, আপনার টেস্ট.পি স্ক্রিপ্টটি আপনি কনফিগার করেছেন এমন অ্যাডহ্যান্ডলার নির্দেশাবলী দিয়ে কাজ করবে না - সেই নির্দেশটি অ্যাপাচিকে নির্দিষ্ট হস্তান্তরকারীটিকে নির্দিষ্ট এক্সটেনশনের ফাইলগুলি প্রেরণ করতে বলে । আপনার স্ক্রিপ্টটি পরীক্ষা করুন.ওগজি করুন বা অ্যাডহ্যান্ডলার নির্দেশিকা পরিবর্তন করুন ।


test.py প্রশ্নে একটি টাইপ ছিল। আমি টেস্ট.ওগিজি দিয়েছিলাম।
অটোমেটেড

ভাল, তবে আপনি কি নিশ্চিত করেছেন যে উপরের নির্দেশাবলী অনুসারে মডিউলটি ইনস্টল এবং সঠিকভাবে লিঙ্ক হয়েছে?
জায়েন এস হালসাল 17

আপনি প্রশ্নে যে তথ্য চেয়েছিলেন তা আমি রেখেছি।
অটোমেটেড

সব না তথ্য - দয়া করে ম্যানুয়ালি চেক যদি ফাইল wsgi.conf এবং wsgi.load মধ্যে , / etc / apache2 / mods,-উপলব্ধ / প্রতীকী সাথে লিঙ্ক করা হয় , / etc / apache2 / mods, সক্রিয় হিসাবে অনুরোধ করা হয়েছে। ডিরেক্টরিটির একটি দীর্ঘ দীর্ঘ তালিকা যথেষ্ট হওয়া উচিত (যেমন ls -alh / etc / apache2 / mods- সক্ষম / )।
জায়েনে এস হালসাল

1

মোড_উসজি লোড হওয়ার জন্য আপনি কি লোডমডুল লাইনটি যুক্ত করেছেন? প্রকৃত ত্রুটি বার্তাটি কী এবং এটি কোথা থেকে আসছে? দেখুন:

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

নিম্ন স্তরের নির্দেশাবলীর জন্য। যেহেতু আপনি বাইনারি প্যাকেজগুলি ব্যবহার করছেন আপনি সংকলনটি এড়িয়ে যেতে পারেন তবে আপনার এখনও মোড_উজি লোড হওয়ার কারণ প্রয়োজন। আপনি কোথায় এবং কীভাবে এটি করতে পারেন তা আপনার লিনাক্স বিতরণ দ্বারা একটি ডিগ্রিতে নির্ধারিত হতে চলেছে। সেই গাইডের ভিত্তিতে আপনাকে বোঝানো হয়েছে:

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

আপনি কি আসলে তা করেছিলেন?


সম্পাদনা

আপনার প্রশ্নটি পুনরায় পড়া এটি সুস্পষ্ট। আপনি বলেছিলেন যে .wsgi এক্সটেনশনের ফাইলগুলি মোড_উইজি দ্বারা পরিচালিত হয় তবে আপনি ফাইলটিকে একটি .পি এক্সটেনশন দিয়েছিলেন। পরিবর্তে .wsgi ব্যবহার করুন।


test.py প্রশ্নে একটি টাইপ ছিল। আমি টেস্ট.ওগিজি দিয়েছিলাম। আমি এ 2 এনএমড চালিয়েছি তবে এটি বলেছিল যে আমার প্রশ্নের শেষে আমি যেভাবে মোড_উসগি খুঁজে পাইনি
অটোমেটেড

1

আপনি প্রথমে আপনার অজগরটির বাক্য গঠনটি দেখতে পারেন। ফাংশন সংজ্ঞার পরে আপনার যদি সত্যিই 4 টি স্পেস রয়েছে তা পরীক্ষা করে দেখুন। পাইথন ফাইলটি টার্মিনালের মাধ্যমে প্রথমে চালিয়ে পরীক্ষা করে দেখুন

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

তারপরে যদি কোনও ত্রুটি না উপস্থিত হয় তবে ওয়েব ব্রাউজারের মাধ্যমে এটি চালান।

HTTP: // স্থানীয় হোস্ট / wsgi /

এবং যাইহোক, মনে হয় আপনি নিজের অ্যাপাচি কনফিগারেশন / ভার্চুয়ালহোস্ট ফাইলের জন্য কিছু মিস করেছেন। এটি ট্যাগের মধ্যে রাখুন

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

যাইহোক, ডাব্লুএসজি মডিউলটি ইনস্টল করার সময় অ্যাপের কোনও সমস্যা নেই। আমি এখনই এটি পরীক্ষা করেছি এবং সফলভাবে আমার ওয়েব ব্রাউজারে একটি অজগর স্ক্রিপ্ট চালিয়েছি।


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
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.