【发布时间】:2016-01-23 20:24:53
【问题描述】:
我已经阅读了类似的问题/答案,但我无法解决这种情况。所以我已经安装了 WSGI 并想从 Apache 提供我的 django 应用程序。
我最初所做的是使用 virtualenv 创建包含 python 相关内容的文件夹 testing。所以我做到了
virtualenv environment
我的虚拟主机文件如下所示:
<VirtualHost *:8001>
WSGIDaemonProcess myapp python-path=/var/www/vhosts/myapp.com/:/var/www/vhosts/myapp.com/environment/lib/python2.7/:/var/www/vhosts/myapp.com/environment/lib/python2.7/sites-available
WSGIScriptAlias / /var/www/vhosts/myapp/testing/wsgi.py
...
...
我的 wsgi.py 是:
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "testing.settings")
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
访问网页后,我收到服务器内部错误,error.log 基本上显示 2 条错误消息:
[wsgi:error] [pid 31165] [client 192.168.0.3:31337] mod_wsgi (pid 31165): Target WSGI script '/var/www/vhosts/myapp.com/testing/wsgi.py' cannot be loaded as Python Module
在几行结束后:
[wsgi:error] [pid 31165] [client 192.168.0.3:31337] mod_wsgi (pid 31165): ImportError: Could not import settings 'testing.settings' (is it on sys.path? Is there an import error in the settings file?)
我发现关于Target WSGI script cannot be loaded as Python module 的第一个错误消息,但是我无法解决问题。我得到的是这个错误并没有阻止 Apache 尝试加载我的 python (django) 项目,因为下一个错误是我认为导致 500 响应的原因。对于第二个错误,我发现这是添加路径的问题(我对我的 vhost 文件所做的事情!?)
我尝试了其他解决方案,例如在我的 apache.conf 中添加 WSGIPythonPath,但没有奏效。
我的wsgi.py文件如下:
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "testing.settings")
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
我也试过添加
import sys
os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'
sys.path.append('/var/www/vhosts/myapp/testing')
import mysite.settings
没用。
【问题讨论】:
-
如果您在目录 /var/www/vhosts/myapp/testing/ 中执行
python wsgi.py,是否会收到任何错误消息? -
是的。我收到与 Import-Error 相同的错误。这绝对是一个路径问题,但我不明白我做错了什么.. :(
-
如果您有更新版本的 wsgi.py(带有
sys.path.append等),最好编辑问题。此外,拥有完整的堆栈回溯可能会有所帮助。
标签: python django apache path mod-wsgi