【发布时间】:2011-09-21 05:24:44
【问题描述】:
我正在尝试使用 apache 部署 mod_wsgi 以运行 django 应用程序,但我收到错误 500 internal server error apache 日志显示:
[Thu Jun 23 14:01:47 2011] [error] [client 152.78.95.64] mod_wsgi (pid=16142): Exception occurred processing WSGI script '/home/user/bms/apache/django.wsgi'.
[Thu Jun 23 14:01:47 2011] [error] [client 152.78.95.64] Traceback (most recent call last):
[Thu Jun 23 14:01:47 2011] [error] [client 152.78.95.64] File "/home/user/bms/apache/django.wsgi", line 13, in <module>
[Thu Jun 23 14:01:47 2011] [error] [client 152.78.95.64] import django.core.handlers.wsgi
[Thu Jun 23 14:01:47 2011] [error] [client 152.78.95.64] ImportError: No module named django.core.handlers.wsgi
我的apache虚拟主机如下:
<VirtualHost *:80>
DocumentRoot /home/user/bms
<Directory /home/user/bms>
Order allow,deny
Allow from all
</Directory>
WSGIDaemonProcess bms user=user group=user processes=2 threads=25 python-path=/usr/local/lib/python2.7/site-packages
WSGIProcessGroup bms
WSGIScriptAlias / /home/user/bms/apache/django.wsgi
</VirtualHost>
并且在我的应用目录中引用的wsgi文件具有0777权限:
import os
import sys
path = '/home/user/bms'
if path not in sys.path:
sys.path.append(path)
os.environ['DJANGO_SETTINGS_MODULE'] = 'bms.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
听说这可能是因为apache用户没有正确的权限。但是我不知道如何解决这个问题。我还尝试使用 www-data 用户启动守护程序,但这并没有解决问题。
编辑:
我通过将虚拟主机文件复制到默认文件中来解决这个问题,然后使用 a2dissite 禁用旧文件。我不知道如何“正确”完成并设置它,以便 apache 转到我想要的虚拟主机。
【问题讨论】:
-
在您的 WSGI 应用配置脚本中缺少
site.addsitedir('/path/to/your/venv/python2.7/site-packages/')?
标签: python django apache mod-wsgi wsgi