我正在部署我的第一个 Django 项目,我感觉我已经非常接近了,但只是需要一些帮助来跨越界限。问题是这样的:
我的 httpd.conf 更改如下所示:
WSGIScriptAlias / /home/miketnc/frontend/tncsite/wsgi.py
WSGIPythonPath /home/miketnc/frontend/tncsite
<Directory /home/miketnc/frontend/tncsite>
<Files wsgi.py>
Order deny,allow
Allow from all
</Files>
</Directory>
到目前为止一切顺利,wsgi.py 中的“hello world”脚本运行得很好。当我使用 Django 文档推荐的 wsgi 脚本时,问题就出现了:
import os, sys
sys.path.append('/home/miketnc/frontend/tncsite')
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "tncsite.settings")
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
这会导致 500 错误:
File "/home/miketnc/frontend/tncsite/wsgi.py", line 10, in ?
mod_wsgi (pid=15494): Exception occurred processing WSGI script '/home/miketnc/frontend/tncsite/wsgi.py'.
mod_wsgi (pid=15494): Target WSGI script '/home/miketnc/frontend/tncsite/wsgi.py' cannot be loaded as Python module.
我在该错误上看到的所有支持都与 apache 中的错误安装、未找到模块等有关,如果“hello world”正在运行,则不会出现这种情况。
有什么想法吗?
更新
在新服务器上重新启动后,我已经成功地将事情稍微向前推进了一些。好消息是 python 和 WSGI 似乎运行良好,坏消息是我现在遇到了不同类型的 500 错误。
我在日志中得到的唯一错误是: “[2011 年 12 月 5 日星期一 18:22:45] [错误] [客户端 ip] mod_wsgi (pid=19804): 处理 WSGI 脚本 '/home/miketnc/frontend/tncsite/apache/wsgi.py' 时发生异常。"
Hello World 脚本仍然运行良好,错误的触发因素是最后一行:
application = django.core.handlers.wsgi.WSGIHandler()
我已经将包含该项目的所有目录从 frontend/向下设置为 777,并且我自己添加了一个守护进程:
LoadModule wsgi_module /usr/local/apache/extramodules/mod_wsgi.so
AddHandler wsgi-script .wsgi
WSGIDaemonProcess miketnc processes=2 maximum-requests=500 threads=1
WSGIProcessGroup miketnc
WSGIScriptAlias / /home/miketnc/frontend/tncsite/apache/wsgi.py
<Directory /home/miketnc/frontend/tncsite>
<Files wsgi.py>
Order deny,allow
Allow from all
</Files>
</Directory>
任何人都可以就如何使其正常工作提供进一步的建议吗?
最佳答案
就您而言:
WSGIPythonPath /home/miketnc/frontend/tncsite
是多余的,因为您正在 WSGI 脚本文件中设置 sys.path。
您缺少的是添加网站的父目录:
sys.path.append('/home/miketnc/frontend')
这是对添加“/home/miketnc/frontend/tncsite”的现有行的补充。
阅读:
http://code.google.com/p/modwsgi/wiki/IntegrationWithDjango
并观看:
http://code.google.com/p/modwsgi/wiki/WhereToGetHelp?tm=6#Conference_Presentations
其中讨论路径和权限。
关于django - Django 中的 WSGI 出现 500 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8349582/