UbuntuでPythonのMod_WSGIを設定する方法


25

UbuntuボックスでMOD_WSGIをセットアップしようとしています。http://ubuntuforums.org/showthread.php?t=833766で見つけた次のステップを実行する必要があると言っているステップを見つけました。

  1. sudo apt-get install libapache2-mod-wsgi
  2. sudo a2enmod mod-wsgi
  3. sudo /etc/init.d/apache2 restart
  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 restart
  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]
    

apt-getで見つかったにもかかわらずmod-wsgiが見つからないと言うため、ステップ2は失敗します。手順を続行すると、Pythonアプリはブラウザでプレーンテキストとして表示されます。

私が間違ったことをしたアイデアはありますか?


編集:質問の結果

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

回答:



5

モジュールが実際に正しくロードされているかどうかを確認するには:

apache2ctl -t -D DUMP_MODULES

適切にロードされていないように見える
AutomatedTester

4

私が見る限り、あなたはmod_wsgiモジュールをにロードしていませんhttpd.conf

最初に、wsgiファイルをmods-enabledApache のディレクトリに追加してみます。

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

その後、Apacheの再起動し、それがなければならない仕事。


2

最初に、WSGIモジュールが実際にインストールされていることを確認します。

dpkg -l libapache2-mod-wsgi

これにより、名前、バージョンなどを含む出力が得られます。名前の左側の文字を探します。これは、パッケージの現在のステータスを示します。手動で確認するには、/ etc / apache2 / mods-available /を調べて、wsgi.confwsgi.loadの両方が表示されるはずです。これらが存在する場合は、/ etc / apache2 / mods-enabled /に対応するシンボリックリンクが必要です。

いずれかのセット存在しない場合は、まずそれを修正することから始めます-apacheがインタープリターを見つけられない場合、apacheを介してPythonコードを解釈できません。また、設定したAddHandlerディレクティブを指定すると、test.pyスクリプトは機能しません。このディレクティブは、特定の拡張子のファイルを関連ハンドラーに渡すようにApacheに指示します。スクリプトをtest.wsgiにするか、AddHandlerディレクティブを変更します。


test.pyは質問のタイプミスでした。test.wsgiを配置するつもりでした。
AutomatedTester

結構ですが、上記の手順に従ってモジュールがインストールされ、正しくリンクされていることを確認しましたか?
ゼインS Halsall

あなたが尋ねた情報を質問に入れました。
AutomatedTester

いないすべての情報-ファイルの場合は、手動で確認してくださいwsgi.confwsgi.loadは/ etc / apache2の/改造-利用可能に/シンボリックにリンクされているの/ etc / apache2の/改造対応の要求通り。ディレクトリの単純な長いリストで十分です(つまり、ls -alh / etc / apache2 / mods-enabled /)。
ゼインS Halsall

1

実際にmod_wsgiをロードするためにLoadModule行を追加しましたか?実際のエラーメッセージは何で、どこから来たのですか?見る:

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

低レベルの指示。バイナリパッケージを使用しているため、コンパイルをスキップできますが、それでもmod_wsgiをロードする必要があります。これをどこで/どのように行うかは、Linuxディストリビューションによってある程度決まります。そのガイドに基づいて、次のことを実行することになっています。

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

実際にそれをしましたか?


編集

質問をもう一度読んでみると明らかです。.wsgi拡張子のファイルはmod_wsgiによって処理されると言いましたが、ファイルに.py拡張子を付けました。代わりに.wsgiを使用してください。


test.pyは質問のタイプミスでした。test.wsgiを配置するつもりでした。私はa2enmodを実行しましたが、質問の最後に書いたようにmod_wsgiが見つからないと言っていました
AutomatedTester

1

最初にpythonの構文を見ることができます。関数定義の後に本当に4つのスペースがあるかどうかを確認してください。最初にターミナル経由で実行して、Pythonファイルを確認します

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

エラーが表示されない場合は、Webブラウザーで実行します。

http:// localhost / wsgi /

ちなみに、あなたはあなたのApache設定/仮想ホストファイルの何かを見逃しているようです。これをタグ内に入れます

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

ちなみに、aptはwsgiモジュールのインストール時に問題ありません。私は今それをテストし、私のWebブラウザーでpythonスクリプトを正常に実行しました。


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.