2010-06-17 7 views
2

J'essaie de faire fonctionner mon projet Django sur le serveur de production.Problème de configuration de Django apache-wsgi

Je configure l'environnement en utilisant pip, il est donc identique à l'environnement de développement où tout fonctionne correctement. La seule différence est que je n'utilise pas virtualenv en production, car ce projet est le seul à fonctionner en production. Également en production, il existe un proxy inverse Nginx pour servir du contenu statique et transmettre des requêtes dynamiques à Apache2.

Le fichier Apache wsgi est comme suit:

import sys, os 

sys.path.append('/home/project/src') 

os.environ['DJANGO_SETTINGS_MODULE'] = 'settings' 
import django.core.handlers.wsgi 
application = django.core.handlers.wsgi.WSGIHandler() 

Quand j'accéder au serveur, je reçois une erreur d'importation:

ImproperlyConfigured: Error importing middleware middleware: "cannot import name UserProfile" 

Ce qui fait référence à la middleware.py sous src/dossier qui est référé par les paramètres. Mais je peux importer le middleware et la classe UserProfile depuis l'invite shell ./manage.py.

Il semble y avoir un problème avec les chemins dans le fichier wsgi mais je ne vois pas quoi. La structure du répertoire est:

/home/project 
/home/project/src (which contains the settings.py, middleware.py and app folders) 
/home/apache/apache.wsgi 

Toute aide est grandement appréciée.

Merci, OMat

+1

à quoi ressemble vos applications installées? essayez d'ajouter "/ home/project /" à votre chemin sys – Prashanth

+0

essayez d'ajouter le chemin où vous avez tapé 'django-admin.py ...' – deostroll

+0

mes applications installées sont comme: INSTALLED_APPS = ('django.contrib.auth' , ..., 'profils', 'produits', ...). Voulez-vous dire ajouter "/ home/project" à sys.path dans le fichier wsgi? cela n'a pas fonctionné. – omat

Répondre

3

Vérifiez que tous les répertoires/fichiers sont lisibles par d'autres afin que l'utilisateur Apache peut y accéder, sauf si cela est que vous utilisez le mode démon avec utilisateur différent dans le cas où l'utilisateur doit pouvoir lire leur. Lire aussi:

http://blog.dscpl.com.au/2010/03/improved-wsgi-script-for-use-with.html

Il ne peut pas aider, mais le contenu du fichier de script WSGI décrit à la fin de qui assurera l'environnement de processus est configuré plus proche de ce serveur de développement de Django fait dans le cas où elle est liée à ces différences.

+0

merci beaucoup. Je ne sais pas pourquoi et comment mais votre script wsgi a résolu mon problème. btw, le lien vers votre message n'était pas accessible, grâce à la copie en cache de google. – omat

1

regardant mon propre fichier, j'ajouter le répertoire contenant les projets, et je précise project .settings, pas settings

Essayez:

import sys, os 

sys.path.append('/home/') 
sys.path.append('/home/project/') 

os.environ['DJANGO_SETTINGS_MODULE'] = 'project.settings' 
import django.core.handlers.wsgi 
application = django.core.handlers.wsgi.WSGIHandler() 

Il serait mieux si vous avez fait quelque chose comme ~/django-sites afin que vous spécifiez que au lieu de /home

Questions connexes