最近,我想把我的一个WSGI应用程序放到一个子目录中,这样其他包含各种脚本的目录就像以前一样工作。 为了做到这一点,我在全局命名空间的httpd.conf
中添加了下面的指令(也试图把它放在VirtualHost
,它给出了相同的效果):
WSGIScriptAlias /hello/ /var/www/hello/hello.wsgi
然后,我跑了django-admin startproject hello
。 重新加载Apacheconfiguration后,我可以确认http://localhost/hello/
指向一个Django的“欢迎”屏幕。 然后,我编辑了hello/urls.py
在urlpatterns
元组中添加下面一行:
url(r'^hello/', 'hello.views.home'),
接下来,我创build了具有以下内容的hello / views.py:
from django.http import HttpResponse def hello(request): return HttpResponse("Hello world")
不幸的是,当我尝试访问http://localhost/hello/hello
,我得到一个标准的Apache 404消息,并在错误日志中input以下内容:
[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
。 第二个hello
是URL中/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()
我做错什么了吗? 我如何解决它?
/var/www/hello/hello.wsgi
的文件语法困惑了我。 显然,如果指向/var/www/hello/hello.wsgi/
,configuration工作正常。