0

Mac osx のデフォルトの Apache サーバーに mod_wsgi モジュールをインストールしようとしています。私はこの男のチュートリアルに従っています。モジュールを apache config に追加する部分にたどり着き、次の 2 行を挿入します。

$ sudo nano /private/etc/apache2/httpd.conf
...
LoadModule wsgi_module libexec/apache2/mod_wsgi.so
WSGIScriptAlias / /Library/WebServer/Documents/
...

ターミナルに戻り、次のように入力します。

sudo /usr/sbin/apachectl restart

ブラウザで localhost/testpy.py にアクセスすると、ローカル ホストに接続できないというエラーが表示されます。これは私のtestpy.pyファイルです:

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 行のコードを追加しても、Apache エラー ログには何も生成されません。それらを取り出して、エラーログにこれを取得する前に機能していたことがわかっている URL に移動すると、次のようになります。

caught SIGTERM, shutting down
Init: Session Cache is not configured [hint: SSLSessionCache]
httpd: Could not reliably determine the server's fully qualified domain name, using my-machine.local for ServerName
Digest: generating secret for digest authentication ...
Digest: done
Apache/2.2.22 (Unix) DAV/2 PHP/5.3.15 with Suhosin-Patch mod_ssl/2.2.22 OpenSSL/0.9.8r configured -- resuming normal operations
4

2 に答える 2

0

WSGIScriptAlias を DocumentRoot と同じディレクトリに設定することはお勧めできません。

ただし、実際の問題は、次のようにする必要があることです。

WSGIScriptAlias / /Library/WebServer/Documents

つまり、ディレクトリ パスから末尾のスラッシュを削除します。

次の mod_wsgi の公式ドキュメントもお読みください。

ターゲットを WSGI スクリプト ファイルのディレクトリにすることは、必ずしも最適な方法ではないため、ドキュメントで他のオプションを確認してください。

任意の人のブログ投稿を使用しても、公式ドキュメントの代わりになることはほとんどありません。

于 2013-05-16T00:30:11.607 に答える
0

残念ながら、従ったチュートリアルは役に立ちません。WSGI は実際には、Python ファイルをブラウズして実行するだけの方法ではありません。すでに CGI を使用して直接実行できます。WSGI を使用する通常の方法は、wsgi ファイルを実行して、特定のプレフィックス (空の場合もあります) の下にあるすべての URL を処理するアプリケーションを作成することです。

つまり、3 つの問題があります。まず、WSGIScriptAlias が実際のファイル (この場合は自分のtestpy.pyファイル) を指す必要があります。

WSGIScriptAlias / /Library/WebServer/Documents/testpy.py

次に、そのファイルは有効な Python である必要があります。つまり、Python ではインデントが重要であるため、正しくインデントされている必要があります。

3 番目に、エイリアスが を指しているため/、それがアクセス先の URL です。

于 2013-05-15T20:04:06.373 に答える