我正在部署我的第一个 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>
Run Code Online (Sandbox Code Playgroud)
到目前为止一切顺利,wsgi.py 中的“hello world”脚本运行得很好。当我使用 Django doc-recommended 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()
Run Code Online (Sandbox Code Playgroud)
这会导致 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.
Run Code Online (Sandbox Code Playgroud)
我在错误中看到的所有支持都与 apache 中的错误安装有关,没有找到模块等,如果“hello world”正在运行,则情况并非如此。
有任何想法吗?
更新
在新服务器上重新启动后,我设法稍微向前推进了一步。好消息是 python 和 WSGI 似乎运行良好,坏的是我现在遇到了不同类型的 500 错误。
我在日志中返回的唯一错误是:“[Mon Dec 05 18:22:45 2011] [error] [client ip] mod_wsgi (pid=19804):处理 WSGI 脚本时发生异常 '/home/miketnc/前端/tncsite/apache/wsgi.py'。”
Hello World 脚本仍然运行良好,错误的触发器是最后一行:
application = django.core.handlers.wsgi.WSGIHandler()
Run Code Online (Sandbox Code Playgroud)
我已将包含项目的所有目录从 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>
Run Code Online (Sandbox Code Playgroud)
任何人都可以就如何使其工作提供进一步的建议?
在你的情况下:
WSGIPythonPath /home/miketnc/frontend/tncsite
Run Code Online (Sandbox Code Playgroud)
是多余的,因为您正在 WSGI 脚本文件中设置 sys.path。
您缺少的是添加站点的父目录:
sys.path.append('/home/miketnc/frontend')
Run Code Online (Sandbox Code Playgroud)
这是添加“/home/miketnc/frontend/tncsite”的现有行的补充。
读:
http://code.google.com/p/modwsgi/wiki/IntegrationWithDjango
并观看:
http://code.google.com/p/modwsgi/wiki/WhereToGetHelp?tm=6#Conference_Presentations
其中谈论路径和权限。
| 归档时间: |
|
| 查看次数: |
20237 次 |
| 最近记录: |