最近,我想將我的 WSGI 應用程式之一放入子目錄中,以便包含各種腳本的其他目錄可以像以前一樣工作。為了做到這一點,我將以下指令添加到我的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
.第二個是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/
,配置工作正常。