Question

Je suis en train de faire mon projet Django en cours d'exécution sur le serveur de production.

I installait l'environnement à l'aide pip, il est donc identique à l'environnement de développement où tout fonctionne bien. La seule différence est que je ne l'utilise pas virtualenv sur la production, car ce projet est le seul qui va fonctionner sur la production. Egalement sur la production, il y a un proxy inverse Nginx pour servir le contenu statique, et transmet les demandes dynamiques à Apache2.

Le fichier wsgi Apache 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 désigné par les paramètres. Mais je peux importer à la fois le middleware et la classe UserProfile à l'intérieur ./manage.py invite du shell.

Il semble comme un problème avec des 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

Était-ce utile?

La solution

Assurez-vous 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 les lire. A lire également:

http: // Blog .dscpl.com.au / 2010/03 / amélioré-wsgi-script pour utiliser-with.html

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

Autres conseils

En 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 pour vous indiquer qu'au lieu de /home

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top