最近、さまざまなスクリプトを含む他のディレクトリが以前と同じように動作するように、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/unknown
hello.wsgiunknown
hello.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/
代わりに を指定すると、構成は正常に機能するようです。