首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django (mod_wsgi)异常处理WSGI脚本

Django (mod_wsgi)异常处理WSGI脚本
EN

Stack Overflow用户
提问于 2015-11-10 20:47:50
回答 1查看 4.3K关注 0票数 0

我是Apache和mod_wsgi的初学者。不过,我理解Apache服务器的基本思想。我需要一个救世主,因为我几乎没有人来寻求帮助。

我的问题如下:

  1. 我可以运行python manage.py runserver 0.0.0.0:8000,我的应用程序在服务器上运行良好。
  2. 但是,当我使用Apache服务器服务我的站点时。事情不太顺利。

返回的两个主要错误是:

代码语言:javascript
复制
 ImproperlyConfigured: Error loading psycopg2 module: /opt/payupjack/payupjack-env/lib/python2.7/site-packages/psycopg2/_psycopg.so: wrong ELF class: ELFCLASS32

代码语言:javascript
复制
  ImproperlyConfigured: Error importing middleware django_openid.consumer: "cannot import name utils"

文件夹结构

代码语言:javascript
复制
payupjack
  |-payupjack-env (virtualenv for payupjack)
      |- (virtualenv stuffs...)
      |- PayupJack (My application)
           |- All the code required by this application 

我已经尝试过的

  1. 将虚拟服务器的网站包文件夹中的文件夹django_openid的用户所有权更改为“www-data”。
  2. 将'www-data‘用户添加到'ubuntu’组(这样'www-data‘与’ubuntu‘共享相同的特权)
  3. 单独运行“wsgi.py”,运行良好。
  4. 运行python manage.py runserver也很好
  5. 试图注释掉在模块utils中导入consumer.py的行(在django_openid模块中),但我仍然得到相同的错误。这真的很奇怪,我不知道该如何理解。
  6. 对于这个问题的不同变体,遵循了许多堆栈溢出的建议。到目前为止,一切都不起作用。

附加信息

完整的Apache错误日志返回以下内容。

代码语言:javascript
复制
[Tue Nov 10 20:02:12.411960 2015] [:error] [pid 20821:tid 139665119233792] [remote 192.0.163.234:12632] mod_wsgi (pid=20821): Exception occurred processing WSGI script '/opt/payupjack/payupjack-env/PayupJack/wsgi.py'.
[Tue Nov 10 20:02:12.411987 2015] [:error] [pid 20821:tid 139665119233792] [remote 192.0.163.234:12632] Traceback (most recent call last):
[Tue Nov 10 20:02:12.412002 2015] [:error] [pid 20821:tid 139665119233792] [remote 192.0.163.234:12632]   File "/opt/payupjack/payupjack-env/lib/python2.7/site-packages/django/core/handlers/wsgi.py", line 250, in __call__
[Tue Nov 10 20:02:12.412091 2015] [:error] [pid 20821:tid 139665119233792] [remote 192.0.163.234:12632]     self.load_middleware()
[Tue Nov 10 20:02:12.412105 2015] [:error] [pid 20821:tid 139665119233792] [remote 192.0.163.234:12632]   File "/opt/payupjack/payupjack-env/lib/python2.7/site-packages/django/core/handlers/base.py", line 45, in load_middleware
[Tue Nov 10 20:02:12.412209 2015] [:error] [pid 20821:tid 139665119233792] [remote 192.0.163.234:12632]     mod = import_module(mw_module)
[Tue Nov 10 20:02:12.412224 2015] [:error] [pid 20821:tid 139665119233792] [remote 192.0.163.234:12632]   File "/opt/payupjack/payupjack-env/lib/python2.7/site-packages/django/utils/importlib.py", line 35, in import_module
[Tue Nov 10 20:02:12.412262 2015] [:error] [pid 20821:tid 139665119233792] [remote 192.0.163.234:12632]     __import__(name)
[Tue Nov 10 20:02:12.412272 2015] [:error] [pid 20821:tid 139665119233792] [remote 192.0.163.234:12632]   File "/opt/payupjack/payupjack-env/lib/python2.7/site-packages/django_openid/consumer.py", line 14, in <module>
[Tue Nov 10 20:02:12.412390 2015] [:error] [pid 20821:tid 139665119233792] [remote 192.0.163.234:12632]     from django.shortcuts import render_to_response
[Tue Nov 10 20:02:12.412403 2015] [:error] [pid 20821:tid 139665119233792] [remote 192.0.163.234:12632]   File "/opt/payupjack/payupjack-env/lib/python2.7/site-packages/django/shortcuts/__init__.py", line 10, in <module>
[Tue Nov 10 20:02:12.412467 2015] [:error] [pid 20821:tid 139665119233792] [remote 192.0.163.234:12632]     from django.db.models.manager import Manager
[Tue Nov 10 20:02:12.412477 2015] [:error] [pid 20821:tid 139665119233792] [remote 192.0.163.234:12632]   File "/opt/payupjack/payupjack-env/lib/python2.7/site-packages/django/db/__init__.py", line 78, in <module>
[Tue Nov 10 20:02:12.412525 2015] [:error] [pid 20821:tid 139665119233792] [remote 192.0.163.234:12632]     connection = connections[DEFAULT_DB_ALIAS]
[Tue Nov 10 20:02:12.412535 2015] [:error] [pid 20821:tid 139665119233792] [remote 192.0.163.234:12632]   File "/opt/payupjack/payupjack-env/lib/python2.7/site-packages/django/db/utils.py", line 93, in __getitem__
[Tue Nov 10 20:02:12.412595 2015] [:error] [pid 20821:tid 139665119233792] [remote 192.0.163.234:12632]     backend = load_backend(db['ENGINE'])
[Tue Nov 10 20:02:12.412615 2015] [:error] [pid 20821:tid 139665119233792] [remote 192.0.163.234:12632]   File "/opt/payupjack/payupjack-env/lib/python2.7/site-packages/django/db/utils.py", line 33, in load_backend
[Tue Nov 10 20:02:12.412630 2015] [:error] [pid 20821:tid 139665119233792] [remote 192.0.163.234:12632]     return import_module('.base', backend_name)
[Tue Nov 10 20:02:12.412640 2015] [:error] [pid 20821:tid 139665119233792] [remote 192.0.163.234:12632]   File "/opt/payupjack/payupjack-env/lib/python2.7/site-packages/django/utils/importlib.py", line 35, in import_module
[Tue Nov 10 20:02:12.412652 2015] [:error] [pid 20821:tid 139665119233792] [remote 192.0.163.234:12632]     __import__(name)
[Tue Nov 10 20:02:12.412659 2015] [:error] [pid 20821:tid 139665119233792] [remote 192.0.163.234:12632]   File "/opt/payupjack/payupjack-env/lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/base.py", line 24, in <module>
[Tue Nov 10 20:02:12.412726 2015] [:error] [pid 20821:tid 139665119233792] [remote 192.0.163.234:12632]     raise ImproperlyConfigured("Error loading psycopg2 module: %s" % e)
[Tue Nov 10 20:02:12.412743 2015] [:error] [pid 20821:tid 139665119233792] [remote 192.0.163.234:12632] ImproperlyConfigured: Error loading psycopg2 module: /opt/payupjack/payupjack-env/lib/python2.7/site-packages/psycopg2/_psycopg.so: wrong ELF class: ELFCLASS32
[Tue Nov 10 15:02:13.107340 2015] [:error] [pid 20821:tid 139665119233792] [remote 192.0.163.234:7512] mod_wsgi (pid=20821): Exception occurred processing WSGI script '/opt/payupjack/payupjack-env/PayupJack/wsgi.py'.
[Tue Nov 10 15:02:13.107383 2015] [:error] [pid 20821:tid 139665119233792] [remote 192.0.163.234:7512] Traceback (most recent call last):
[Tue Nov 10 15:02:13.107402 2015] [:error] [pid 20821:tid 139665119233792] [remote 192.0.163.234:7512]   File "/opt/payupjack/payupjack-env/lib/python2.7/site-packages/django/core/handlers/wsgi.py", line 250, in __call__
[Tue Nov 10 15:02:13.107426 2015] [:error] [pid 20821:tid 139665119233792] [remote 192.0.163.234:7512]     self.load_middleware()
[Tue Nov 10 15:02:13.107436 2015] [:error] [pid 20821:tid 139665119233792] [remote 192.0.163.234:7512]   File "/opt/payupjack/payupjack-env/lib/python2.7/site-packages/django/core/handlers/base.py", line 47, in load_middleware
[Tue Nov 10 15:02:13.107449 2015] [:error] [pid 20821:tid 139665119233792] [remote 192.0.163.234:7512]     raise exceptions.ImproperlyConfigured('Error importing middleware %s: "%s"' % (mw_module, e))
[Tue Nov 10 15:02:13.107467 2015] [:error] [pid 20821:tid 139665119233792] [remote 192.0.163.234:7512] ImproperlyConfigured: Error importing middleware django_openid.consumer: "cannot import name utils"
[Tue Nov 10 15:02:13.407277 2015] [:error] [pid 20821:tid 139665119233792] [remote 192.0.163.234:7512] mod_wsgi (pid=20821): Exception occurred processing WSGI script '/opt/payupjack/payupjack-env/PayupJack/wsgi.py'.
[Tue Nov 10 15:02:13.407306 2015] [:error] [pid 20821:tid 139665119233792] [remote 192.0.163.234:7512] Traceback (most recent call last):
[Tue Nov 10 15:02:13.407322 2015] [:error] [pid 20821:tid 139665119233792] [remote 192.0.163.234:7512]   File "/opt/payupjack/payupjack-env/lib/python2.7/site-packages/django/core/handlers/wsgi.py", line 250, in __call__
[Tue Nov 10 15:02:13.407343 2015] [:error] [pid 20821:tid 139665119233792] [remote 192.0.163.234:7512]     self.load_middleware()
[Tue Nov 10 15:02:13.407352 2015] [:error] [pid 20821:tid 139665119233792] [remote 192.0.163.234:7512]   File "/opt/payupjack/payupjack-env/lib/python2.7/site-packages/django/core/handlers/base.py", line 47, in load_middleware
[Tue Nov 10 15:02:13.407364 2015] [:error] [pid 20821:tid 139665119233792] [remote 192.0.163.234:7512]     raise exceptions.ImproperlyConfigured('Error importing middleware %s: "%s"' % (mw_module, e))
[Tue Nov 10 15:02:13.407381 2015] [:error] [pid 20821:tid 139665119233792] [remote 192.0.163.234:7512] ImproperlyConfigured: Error importing middleware django_openid.consumer: "cannot import name utils"
[Tue Nov 10 15:02:14.197060 2015] [:error] [pid 20821:tid 139665119233792] [remote 192.0.163.234:7512] mod_wsgi (pid=20821): Exception occurred processing WSGI script '/opt/payupjack/payupjack-env/PayupJack/wsgi.py'.
[Tue Nov 10 15:02:14.197098 2015] [:error] [pid 20821:tid 139665119233792] [remote 192.0.163.234:7512] Traceback (most recent call last):
[Tue Nov 10 15:02:14.197114 2015] [:error] [pid 20821:tid 139665119233792] [remote 192.0.163.234:7512]   File "/opt/payupjack/payupjack-env/lib/python2.7/site-packages/django/core/handlers/wsgi.py", line 250, in __call__
[Tue Nov 10 15:02:14.197136 2015] [:error] [pid 20821:tid 139665119233792] [remote 192.0.163.234:7512]     self.load_middleware()
[Tue Nov 10 15:02:14.197144 2015] [:error] [pid 20821:tid 139665119233792] [remote 192.0.163.234:7512]   File "/opt/payupjack/payupjack-env/lib/python2.7/site-packages/django/core/handlers/base.py", line 47, in load_middleware
[Tue Nov 10 15:02:14.197157 2015] [:error] [pid 20821:tid 139665119233792] [remote 192.0.163.234:7512]     raise exceptions.ImproperlyConfigured('Error importing middleware %s: "%s"' % (mw_module, e))
[Tue Nov 10 15:02:14.197174 2015] [:error] [pid 20821:tid 139665119233792] [remote 192.0.163.234:7512] ImproperlyConfigured: Error importing middleware django_openid.consumer: "cannot import name utils"
[Tue Nov 10 15:02:14.252928 2015] [:error] [pid 20821:tid 139665119233792] [remote 192.0.163.234:7512] mod_wsgi (pid=20821): Exception occurred processing WSGI script '/opt/payupjack/payupjack-env/PayupJack/wsgi.py'.
[Tue Nov 10 15:02:14.252946 2015] [:error] [pid 20821:tid 139665119233792] [remote 192.0.163.234:7512] Traceback (most recent call last):
[Tue Nov 10 15:02:14.252958 2015] [:error] [pid 20821:tid 139665119233792] [remote 192.0.163.234:7512]   File "/opt/payupjack/payupjack-env/lib/python2.7/site-packages/django/core/handlers/wsgi.py", line 250, in __call__
[Tue Nov 10 15:02:14.252975 2015] [:error] [pid 20821:tid 139665119233792] [remote 192.0.163.234:7512]     self.load_middleware()
[Tue Nov 10 15:02:14.252983 2015] [:error] [pid 20821:tid 139665119233792] [remote 192.0.163.234:7512]   File "/opt/payupjack/payupjack-env/lib/python2.7/site-packages/django/core/handlers/base.py", line 47, in load_middleware
[Tue Nov 10 15:02:14.252994 2015] [:error] [pid 20821:tid 139665119233792] [remote 192.0.163.234:7512]     raise exceptions.ImproperlyConfigured('Error importing middleware %s: "%s"' % (mw_module, e))
[Tue Nov 10 15:02:14.253006 2015] [:error] [pid 20821:tid 139665119233792] [remote 192.0.163.234:7512] ImproperlyConfigured: Error importing middleware django_openid.consumer: "cannot import name utils"

wsgi.py的名称为:

代码语言:javascript
复制
from django.core.handlers.wsgi import WSGIHandler


import os

import sys

import site

ALLDIRS = ['/opt/payupjack/payupjack-env/PayupJack']

# redirect sys.stdout to sys.stderr for bad libraries like geopy that uses

# print statements for optional import exceptions.

sys.stdout = sys.stderr

prev_sys_path = list(sys.path)

print prev_sys_path

site.addsitedir('/opt/payupjack/payupjack-env/lib/python2.7/site-packages')

sys.path.append('/opt')
sys.path.append('/opt/payupjack')
sys.path.append('/opt/payupjack/payupjack-env')
sys.path.append('/opt/payupjack/payupjack-env/PayupJack') 

# Reorder sys.path so new directories at the front.

new_sys_path = []

for item in list(sys.path):

    if item not in prev_sys_path:

        new_sys_path.append(item)

        sys.path.remove(item)

sys.path[:0] = new_sys_path

activate_this = '/opt/payupjack/payupjack-env/bin/activate_this.py'

execfile(activate_this, dict(__file__=activate_this))

from os.path import abspath, dirname, join


print  sys.path

os.environ["DJANGO_SETTINGS_MODULE"] = "PayupJack.settings"

sys.path.insert(0, join("/opt/payupjack/payupjack-env/PayupJack", "apps"))


import djcelery

djcelery.setup_loader()


print 'Last step of WSGI'

application = WSGIHandler()

print 'Done final step. '

下面是我的Apache配置文件:

代码语言:javascript
复制
WSGIPythonPath /opt/payupjack/payupjack_env/lib/python2.7

<VirtualHost *:80>

        ServerAdmin webmaster@localhost

        WSGIDaemonProcess payupjack python-path=/opt/payupjack/payupjack-env:/opt/payupjack/payupjack-env/lib/python2.7/site-packages processes=1 threads=1

        WSGIProcessGroup payupjack

        WSGIApplicationGroup %{GLOBAL}

        WSGIPassAuthorization On



        WSGIScriptAlias / /opt/payupjack/payupjack-env/PayupJack/wsgi.py

        Alias /static/ /opt/payupjack/payupjack-env/PayupJack/static

        <Directory /opt/payupjack/payupjack-env/PayupJack>

                Order deny,allow

                #Allow from all
        Require all granted
        </Directory>

        ErrorLog /opt/payupjack/payupjack-env/logs/error.log

        CustomLog /opt/payupjack/payupjack-env/logs/access.log combined

</VirtualHost>

新信息

ldd of mod_wsgi.so返回:

代码语言:javascript
复制
linux-vdso.so.1 =>  (0x00007fff815f2000)
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007ff5b3fec000)
        libpython2.7.so.1.0 => /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0 (0x00007ff5b3a88000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007ff5b36c2000)
        /lib64/ld-linux-x86-64.so.2 (0x00007ff5b443c000)
        libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007ff5b34a9000)
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007ff5b32a5000)
        libutil.so.1 => /lib/x86_64-linux-gnu/libutil.so.1 (0x00007ff5b30a1000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007ff5b2d9b000)

我还在我的整个硬盘上快速找到了一个python库,该库位于以下位置:

代码语言:javascript
复制
/usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-11 16:22:28

这个问题是由于路径问题(感谢格雷厄姆指出了如何检查psycopg2.so的比特和位置)。我的应用程序使用VirtualEnv。由于某些原因,我第一次没有正确地设置VirtualEnv。因此,通过pip安装的所有包都停留在OS的python路径中,而不是VirtualEnv。

解决方案是删除安装在OS Python路径上的所有包。然后,重新创建一个新的VirtualEnv并执行典型的pip install。确保所有包都安装在VirtualEnv路径中。一旦我这么做了,一切都运行得很好。

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

https://stackoverflow.com/questions/33639323

复制
相关文章

相似问题

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