当前位置: 首页 > 面试题库 >

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

丌官浩旷
2023-03-14
问题内容

我正在尝试用apache部署mod_wsgi来运行django应用程序,但出现了错误500内部服务器错误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>

并在我的应用程序目录中具有0777权限的引用的wsgi文件:

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 python版本不匹配。我使用的是python 3,因此:

$ sudo apt-get remove libapache2-mod-python libapache2-mod-wsgi
$ sudo apt-get install libapache2-mod-wsgi-py3

在复制/粘贴以下命令之前,@ alxs会发出警告:
如果在服务器上运行的使用wsgi和apache的python 2项目,上述命令将有效地将其关闭。



 类似资料:
  • 我试图通过mod_wsgi WSGIDaemon方法将虚拟主机django项目部署到apache2中,我使用的是ubuntu 16.04,我遇到了以下错误。 从apache2错误日志: [2018年12月11日星期二11:55:31.748517][wsgi:error][pid 14231:tid 139821891782400][remote::1:44748]mod_wsgi(pid=142

  • 问题内容: 根据我的错误日志,我的目标WSGI脚本无法作为Python模块加载,但是在我的日志末尾,我还收到一个 ImportError:No module named foodshop.settings 。我可以验证该模块是否存在。 这是我的错误日志: 另外,这是我的apache2.conf文件: 和我的000-default.conf文件: 最后,这是我的wsgi.py文件: 我已连接到EC2

  • 问题内容: 我不是通过gdxsetup.jar创建项目的,只是包含了gdx.jar和gdx-backend-android.jar。我将libgdx.so添加到libs / x86,但是它仍然引发异常。我该如何解决? Logcat: 如果有帮助,我正在运行32位Linux。 问题答案: 我发现这很简单:添加

  • 问题内容: 有没有办法让python脚本加载和使用环境模块?不起作用,因为它在子shell中执行它们(至少,我认为这是正在发生的事情)。 问题答案: 我知道这个问题有点陈旧,但是它仍然足够相关,以至于我一直在寻找答案,因此我发布了我发现同样有效的内容: 至少在3.2.9+版本的源代码中,您可以包含python“ init”文件来获取模块的python函数版本: 有人告诉我早期版本可以在没有.py扩

  • 我是初学者。我已经使用“反应本机运行Android”命令在Ubuntu上运行了反应本机项目。我在模拟器上收到错误“无法从资产“index.android.bundle”加载脚本。确保您的包包装正确,或者您正在运行包服务器。”

  • 我试图运行matplotlib留档中的contourf示例。当我从python shell运行它时,一切都运行良好,但是当我将其作为脚本(pythoncontourf_demo.py)运行时,会出现以下错误: 回溯(最近一次呼叫最后一次): 文件"matplotlib.py",第3行,在 导入matplotlib.pyplot 文件“/home/user/dir/contourf_demo.py”