サブディレクトリ内の Django WSGI アプリケーション?

サブディレクトリ内の Django WSGI アプリケーション?

最近、さまざまなスクリプトを含む他のディレクトリが以前と同じように動作するように、WSGI アプリケーションの 1 つをサブディレクトリに配置したいと考えました。そのために、httpd.confグローバル名前空間の に次のディレクティブを追加しました ( にも配置してみましたVirtualHostが、同じ効果が得られました)。

WSGIScriptAlias /hello/ /var/www/hello/hello.wsgi

次に、 を実行しましたdjango-admin startproject hello。Apache 構成を再ロードすると、 がhttp://localhost/hello/Django の「ようこそ」画面を指していることを確認できます。次に、タプルhello/urls.pyに次の行を追加するように編集しましたurlpatterns

url(r'^hello/', 'hello.views.home'),

次に、次の内容の hello/views.py を作成しました。

from django.http import HttpResponse

def hello(request):
    return HttpResponse("Hello world")

残念ながら、 にアクセスしようとするとhttp://localhost/hello/hello、標準の Apache 404 メッセージが表示され、エラー ログに次のエントリが記録されます。

[Mon Dec 23 19:49:44 2013] [error] [client 31.182.131.38] Target WSGI script not found or unable to stat: /var/www/hello/hello.wsgihello

に注意してくださいhello.wsgihello。2 番目はURL 内で のhello後に表示されるテキストです。 の場合は になります。私の は次のとおりです。/hello/http://localhost/hello/unknownhello.wsgiunknownhello.wsgi

import os
import sys

os.environ['DJANGO_SETTINGS_MODULE'] = 'hello.settings'

path = '/var/www/hello'
if path not in sys.path:
    sys.path.append(path)

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

何か間違ったことをしましたか? どうすれば修正できますか?

答え1

ファイルの構文が/var/www/hello/hello.wsgiわかりにくかったです。どうやら、/var/www/hello/hello.wsgi/代わりに を指定すると、構成は正常に機能するようです。

関連情報