problème de configuration Django apache-de wsgi
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
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