2012-08-15 2 views
0

J'ai une application python/django, 'mysite', qui se connecte à bdbxml. L'application fonctionne bien en utilisant le serveur de développement django mais échoue lorsqu'elle est exécutée en utilisant mod_wsgi avec apache - mon itinéraire de production choisi. Plus précisément, ce sont les parties de l'application qui se connectent à la base de données qui échouent avec un message très inutile, 'enfin' apparaît une mauvaise exception. Je crois à partir de Google que cette erreur est une erreur générique qui est générée par les applications C++ quand il n'y a aucun autre message d'erreur à générer, mais je ne suis pas un expert C++ donc je ne sais pas vraiment ce que cela signifie.berkeley dbxml django mod_wsgi ne fonctionne pas avec l'erreur: 'finally' apparaît mauvaise exception

Ma fonction views.py ressemble à:

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()) 

mon fichier django.wsgi (en utilisant le format proposé de Graham Dumpleton) ressemble à:

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() 

et httpd.conf ressemble à:

WSGIApplicationGroup %{GLOBAL} 

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

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

Est-ce que quelqu'un sait comment résoudre ce problème?

grâce

Mise à jour

Après suggestion de Graham Dumpleton ci-dessous que le problème peut être lié à des autorisations sur la base de données, voici la sortie de ls -Las affichant les autorisations sur le répertoire dans lequel la base de données est situé. Tous les fichiers et dossiers sont la propriété d'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 
+0

Tous les fichiers/répertoires requis sont-ils lisibles/modifiables par l'utilisateur sur Apache? –

+0

oui, autant que je peux dire tous les fichiers ont 755 – AnotherLongUsername

+0

Mais qui les possède. Si vous n'avez que u + w et que les répertoires/fichiers ne sont pas la propriété d'Apache, ils pourront écrire à leur place, donc ils ne pourront peut-être pas créer de fichiers de verrouillage dans le système de fichiers lors de l'utilisation de la base de données. Ammend question avec la sortie de 'ls -las' pour le répertoire où la base de données est. –

Répondre

0

Ayant subi une réinstallation complète, je peux maintenant confirmer que les commentaires de Graham étaient corrects et corrects. Le problème était lié aux autorisations.

Une fois le processus apache terminé, le propriétaire du répertoire contenant l'application et les fichiers de la base de données ont commencé à fonctionner.

$chown -R apache:apache /wsgi 

Merci!