首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >目标WSGI脚本无法作为Python模块加载

目标WSGI脚本无法作为Python模块加载
EN

Stack Overflow用户
提问于 2011-06-23 21:11:40
回答 14查看 134.5K关注 0票数 70

我正在尝试使用apache部署mod_wsgi来运行django应用程序,但是apache日志显示了一个error500内部服务器错误:

代码语言:javascript
复制
[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虚拟主机如下所示:

代码语言:javascript
复制
<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>

和我的app目录中引用的具有0777权限的wsgi文件:

代码语言:javascript
复制
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转到我想要的虚拟主机上。

EN

回答 14

Stack Overflow用户

发布于 2015-01-24 04:34:32

对我来说,问题是wsgi python版本不匹配。我使用的是python 3,所以:

代码语言:javascript
复制
$ sudo apt-get remove libapache2-mod-python libapache2-mod-wsgi
$ sudo apt-get install libapache2-mod-wsgi-py3

在复制/粘贴这些命令之前,来自@alxs 的警告:

如果有python 2项目运行在使用wsgi和apache的服务器上,上述命令将有效地关闭它们。

票数 77
EN

Stack Overflow用户

发布于 2013-11-01 18:10:07

对我来说,问题是WSGI脚本不可执行。

代码语言:javascript
复制
sudo chmod a+x django.wsgi

或者只是

代码语言:javascript
复制
sudo chmod u+x django.wsgi

只要你有正确的所有者

票数 22
EN

Stack Overflow用户

发布于 2015-04-09 02:17:12

我也有同样的问题,一开始我没有意识到我可以进一步向下滚动查看实际的错误消息。在我的例子中,这是一个导入错误:

代码语言:javascript
复制
ImportError: No module named bootstrap3

在通过pip (pip install django-bootstrap3)安装之后,我重新启动了Apache,它工作了。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6454564

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档