Setup django with WSGI and apache
我是在mod wsgi和apache上销售的,而不是mod_python。我已经安装了所有的部件(django、apache、mod wsgi),但是部署时遇到了问题。
我在OSX 10.5上,有Apache2.2和Django1.0b2,mod_wsgi-2.3
我的申请叫Tred。
以下是相关文件:httpd vhosts(包含在httpd conf中)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | NameVirtualHost tred:80 ServerName tred Alias /admin_media /usr/lib/python2.5/site-packages/django/contrib/admin/media Order allow,deny Allow from all Alias /media /Users/dmg/Sites/tred/media Order allow,deny Allow from all Alias / /Users/dmg/Sites/tred/ Order allow,deny Allow from all WSGIScriptAlias / /Users/dmg/Sites/tred/mod_wsgi-handler.wsgi WSGIDaemonProcess tred user=dmg group=staff processes=1 threads=10 WSGIProcessGroup tred |
mod wsgi-handle.wsgi
1 2 3 4 5 6 7 8 9 | import sys import os sys.path.append(os.path.dirname(os.path.abspath(__file__)) + '/..') os.environ['DJANGO_SETTINGS_MODULE'] = 'tred.settings' import django.core.handlers.wsgi application = django.core.handlers.wsgi.WSGIHandler() |
当我访问http://tred时,我会得到一个目录列表,而不是呈现的网站。我认为我已经正确地学习了这些教程,但显然是不对的。我该怎么做才能使这个工作成功?
请注意,alias和wsgiscriptaalias指令的优先级不同。因此,它们不会按写入的文件顺序进行处理。相反,所有别名指令都优先于wsgiscriptaalias指令。因此,如果"/"的别名出现在wsgiscriptaalias之后,它就不重要了,它仍然具有优先权。
如果删除
It works. I have no idea why, but it does.
供将来参考:
它工作是因为Apache按顺序处理别名指令,并使用第一个匹配项。它总是击中
从
First, all Redirects are processed before Aliases are processed, and therefore a request that matches a
Redirect orRedirectMatch will never have Aliases applied. Second, the Aliases and Redirects are processed in the order they appear in the configuration files, with the first match taking precedence.
尝试遵循本教程-http://singlas.in/5-step-tutorial-for-using-django-with-apache-and-mod_wsgi/
您正在尝试在根目录(/)上托管apache/var/www/folder和django应用程序。由于alias指令优先于wsgiscriptaalias,因此它正在呈现apache目录。
您可以尝试在/app托管django应用程序。或者将/var/www/folder托管在其他位置,如/public