0

我有一个连接到 bdbxml 的 python/django 应用程序“mysite”。该应用程序使用 django 开发服务器运行良好,但在使用 mod_wsgi 和 apache 运行时失败 - 我选择的生产路线。具体来说,连接到数据库的应用程序部分失败并显示非常无用的消息,“终于”弹出错误异常。

我通过谷歌搜索相信这个错误是由 C++ 应用程序在没有其他错误消息生成时生成的通用错误,但我不是 C++ 专家,所以真的不知道它是什么意思。

我的 views.py 函数如下所示:

def dbquery(request):
  mgr = XmlManager()
  container = mgr.openContainer("/wsgi/mysite/mysite.bdbxml")
  results = container.getAllDocuments(0)
  for value in results:
    document = value.asDocument()
    return HttpResponse (document.getName())

我的 django.wsgi 文件(使用 Graham Dumpleton 建议的格式)看起来像:

import os, sys

sys.path.append('/wsgi')
sys.path.append('/wsgi/mysite')

import settings

import django.core.management
django.core.management.setup_environ(settings)
utility = django.core.management.ManagementUtility()
command = utility.fetch_command('runserver')

command.validate()

import django.conf
import django.utils

django.utils.translation.activate(django.conf.settings.LANGUAGE_CODE)

import django.core.handlers.wsgi

application = django.core.handlers.wsgi.WSGIHandler()

和 httpd.conf 看起来像:

WSGIApplicationGroup %{GLOBAL}

WSGIScriptAlias / /wsgi/mysite/apache/django.wsgi

<Directory /wsgi/mysite>
  Order deny,allow
  Allow from all
</Directory>

有谁知道如何解决这个问题?

谢谢

更新

根据 Graham Dumpleton 的建议,该问题可能与数据库的权限有关,这里是 ls -las 的输出,显示了数据库所在目录的权限。所有文件和文件夹都归 apache 所有。

  4 drwxr-xr-x 5 apache apache   4096 May  5 06:26 .
  4 drwxr-xr-x 3 apache apache   4096 May  4 22:09 ..
  4 drwxr-xr-x 2 apache apache   4096 May  5 14:52 apache
  4 -rw-r--r-- 1 apache apache     16 May  5 05:05 index.html
  4 -rw-r--r-- 1 apache apache     12 May  5 04:52 index.html~
  0 -rw-rw-r-- 1 apache apache      0 May  4 22:09 __init__.py
  4 -rw-r--r-- 1 apache apache    114 May  5 05:39 __init__.pyc
  4 -rw-rw-r-- 1 apache apache    503 May  4 22:09 manage.py
164 -rwxr-xr-x 1 apache apache 163840 May  5 05:23 mysite.bdbxml
  4 drwxr-xr-x 2 apache apache   4096 May  5 05:26 scripts  
  8 -rw-rw-r-- 1 apache apache   5060 May  5 04:50 settings.py
  8 -rw-rw-r-- 1 apache apache   5031 May  4 22:09 settings.py~
  4 -rw-r--r-- 1 apache apache   2784 May  5 05:39 settings.pyc
  4 drwxr-xr-x 2 apache apache   4096 May  5 04:49 templates
  4 -rw-rw-r-- 1 apache apache    639 May  5 05:32 urls.py
  4 -rw-rw-r-- 1 apache apache    600 May  5 04:42 urls.py~
  4 -rw-r--r-- 1 apache apache    444 May  5 05:40 urls.pyc
  4 -rw-r--r-- 1 apache apache    609 May  5 06:26 views.py
  4 -rw-r--r-- 1 apache apache    609 May  5 06:26 views.py~
  4 -rw-r--r-- 1 apache apache    914 May  5 06:26 views.pyc
4

1 回答 1

0

经过完全重新安装后,我现在可以确认 Graham 的评论是正确的。该问题与权限有关。

一旦 apache 进程成为包含应用程序和数据库文件的目录的所有者,它就开始工作了。

$chown -R apache:apache /wsgi

谢谢!

于 2012-11-05T09:12:24.750 回答