Django mod_wsgi: une Exception s'est produite traitement wsgi script
Je suis le déploiement d'un projet django et face à cette erreur.
Mon projet de la structure, comme ci-dessous:
my_project
my_project
urls.py
settings.py
index.wsgi
home
views.py
models.py
.........
requirements.txt
manage.py
Et mon index.wsgi se présente comme suit:
import os
import sys
import site
# Add the site-packages of the chosen virtualenv to work with
site.addsitedir('~/.virtualenvs/my_project/lib/python2.6/site-packages/')
# Add the app's directory to the PYTHONPATH
sys.path.append('/var/www/uni/my_project')
sys.path.append('/var/www/uni/my_project/home')
os.environ['DJANGO_SETTINGS_MODULE'] = 'my_project.settings'
# Activate your virtual env
activate_env=os.path.expanduser("/home/user/.virtualenvs/my_project/bin/activate_this.py")
execfile(activate_env, dict(__file__=activate_env))
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
Et dans mon virtualhost, la configuration est comme ci-dessous :
<Directory /var/www/uni/my_project/templates/static>
Allow from all
</Directory>
WSGIScriptAlias / /var/uni/news/my_project/my_project/index.wsgi
Les erreurs d'apache.le journal est présenté comme:
mod_wsgi (pid=27330): Exception occurred processing WSGI script '/var/www/uni/my_project/my_project/index.wsgi'.
[Mon Jun 09 14:23:53 2014] [error] [client ip] Traceback (most recent call last):
[Mon Jun 09 14:23:53 2014] [error] [client ip] File "/usr/local/lib/python2.6/dist-packages/django/core/handlers/wsgi.py", line 219, in __call__
[Mon Jun 09 14:23:53 2014] [error] [client ip] self.load_middleware()
[Mon Jun 09 14:23:53 2014] [error] [client ip] File "/usr/local/lib/python2.6/dist-packages/django/core/handlers/base.py", line 39, in load_middleware
[Mon Jun 09 14:23:53 2014] [error] [client ip] for middleware_path in settings.MIDDLEWARE_CLASSES:
[Mon Jun 09 14:23:53 2014] [error] [client ip] File "/usr/local/lib/python2.6/dist-packages/django/utils/functional.py", line 184, in inner
[Mon Jun 09 14:23:53 2014] [error] [client ip] self._setup()
[Mon Jun 09 14:23:53 2014] [error] [client ip] File "/usr/local/lib/python2.6/dist-packages/django/conf/__init__.py", line 42, in _setup
[Mon Jun 09 14:23:53 2014] [error] [client ip] self._wrapped = Settings(settings_module)
[Mon Jun 09 14:23:53 2014] [error] [client ip] File "/usr/local/lib/python2.6/dist-packages/django/conf/__init__.py", line 95, in __init__
[Mon Jun 09 14:23:53 2014] [error] [client ip] raise ImportError("Could not import settings '%s' (Is it on sys.path?): %s" % (self.SETTINGS_MODULE, e))
[Mon Jun 09 14:23:53 2014] [error] [client ip] ImportError: Could not import settings 'my_project.settings' (Is it on sys.path?): No module named my_project.settings
Je suis allé à travers la mod_wsgi et djnago docs. Je sais que le projet de la structure n'est pas le maintien de toutes les meilleures pratiques. Je vais le changer plus tard, mais avant que j'ai besoin d'aller vivre.
J'ai essayé en modifiant les autorisations de fichier et de tous les changements qui sont mentionnés aux mêmes questions.
Donc, je suppose que je suis en train de faire quelque chose de mal.
Où est le sig de configuration dans les fichiers ci-dessus?
Grâce.
ajouté le journal des erreurs d'apache
une idée? J'ai ajouté le journal.
Est-il un
__init__.py
fichier afin de le rendre my_project
un paquet?Est-il est un init.py
OriginalL'auteur arnold | 2014-06-09
Vous devez vous connecter pour publier un commentaire.
J'ai une liste dans ce genre de scénarios:
Exécuter un script de test de la
index.wsgi
interface directement avec python, corriger des erreurs, jusqu'à ce que la sortie indique que tout est ok. (voir mise à jour)Vérifier les autorisations.
Vérifier la configuration d'apache.
Mise à jour:
L'exécution de
python my_project/index.wsgi
directement affiche rien dans la console, cette approche fonctionne sur fcgi de configuration, mais pas dans le wsgi, vous aurez besoin d'un script pour créer un serveur de test et de montrer les possibles erreurs de la console, l'exemple de script est: est-cetest_server.py
Suit:
Recommandations:
Vérifier pour vous
__init__.py
soit dans le dossier du projet et le dossier paramètresEssayez d'utiliser les chemins d'accès relatifs dans les paramètres et dans le .wsgi fichier (voir l'exemple)
Vérifier les majuscules/lowecase dans vos noms (probablement changer
"MY_PROJECT.settings"
pour"my_project.settings"
exemple:
De ma faute, 1 point ne fonctionne que si vous avez la fcgi de configuration, vous pouvez modifier -pour - fcgi sna test de la console, je vais modifier la réponse de l'ajout d'un script pour tester un wsgi script. J'ai les 3 point (si 1 et 2 est adopté.) vous avez pour vérifier la configuration de virtualhost, l' .htaccess de la configuration et au moins le module wsgi (moins probable)
Qu'est-ce que ce
index.wsgi interface
vous parler de?C'est le script python qui sert de pont entre le projet django et le wsgi (Apache), serveur, il est placé dans le dossier de projet django
OriginalL'auteur soloidx
J'ai eu la même chose m'arriver il y a quelques jours. J'ai lu tout le sujet, mais voici comment je l'ai résolu tout.
Votre django wsgi fichier doit être un fichier python (wsgi.py), pas un
fichier d'index (index.wsgi). C'est ce que le mien ressemblait, évidemment remplacer les noms d'utilisateur et des dossiers.
DON"T AJOUTER LE PROJET À L' /var/www/html/DOSSIER! Je ne savais pas que c'était un problème jusqu'à ce que j'ai vous êtes. J'ai choisi de le mettre dans le répertoire /opt.
Vous n'avez pas besoin d'activer l'env pour obtenir que cela fonctionne. Vous ajoutez les paquets dans la première ligne. C'est pourquoi je l'ai commenté dans la mine (le site fonctionne très bien).
Dans la configuration virtuelle
Après la modification de ces paramètres dans le fichier hôte, assurez-vous que vous
sudo service httpd reload
Bonne chance, je sais ce que vous allez à travers et c'est frustrant de ne pas avoir les réponses. Espérons que cela fonctionne pour vous, il l'a fait pour moi.
OriginalL'auteur nahata5
Vous devriez être en spécifiant le virtualenv pour votre projet dans la config d'Apache, pas votre application WSGI fichier. Depuis que vous utilisez Apache, reportez-vous https://docs.djangoproject.com/en/dev/howto/deployment/wsgi/modwsgi/#using-a-virtualenv pour ce que vous devez mettre dans votre configuration d'Apache. Je voudrais également fortement recommandé d'exécuter en mode démon - sauf si vous avez une très bonne raison de ne pas le faire, vous devriez presque toujours à l'aide de mode démon Apache.
Puis réinitialiser votre projet WSGI fichier à
OriginalL'auteur xjtian