Ne peut pas résoudre mod_wsgi exception dans Django d'installation
Je travaille avec mon hébergeur pour obtenir une application Django et en cours d'exécution, mais aucun de nous sont très expérimentés et nous avons essentiellement frappé un complet impasse.
Je n'ai pas un accès direct au fichier conf, mais voici comment son contenu ont été décrites pour moi:
<IfModule mod_wsgi.c>
WSGIScriptAlias /fredapp/ /home/fred/public_html/cgi-bin/fredapp/apache/django.wsgi
WSGIDaemonProcess fred threads=15 display-name=%{GROUP} python-path=/home/fred/public_html/cgi-bin/fredapp/apache/
WSGIProcessGroup fred
WSGIApplicationGroup %{GLOBAL}
</IfModule>
Alias /robots.txt /home/fred/public_html/fred-site/robots.txt
Alias /favicon.ico /home/fred/public_html/fred-site/favicon.ico
Alias /settings/media/ /home/fred/public_html/fred-site/media/
Mon "django.wsgi" script n'a rien de fantaisiste:
import os, sys
sys.path.append('/home/fred/public_html/cgi-bin/')
sys.path.append('/home/fred/public_html/cgi-bin/fredapp/')
os.environ['DJANGO_SETTINGS_MODULE'] = 'fredapp.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
Si ma compréhension est que tout ceci signifie que si une demande pour domain.com/fredapp/qu'il doit être remis à la demande par le biais de django.wsgi. Cependant, la seule réponse que je reçois est:
[Fri Jan 22 18:46:08 2010] [error] [client xx.xxx.xx.xx] File does not exist: /home/fred/public_html/domain.com/500.shtml
[Fri Jan 22 18:46:08 2010] [error] [client xx.xxx.xx.xx] mod_wsgi (pid=26760): Exception occurred processing WSGI script '/home/fred/public_html/cgi-bin/fredapp/apache/django.wsgi'.
[Fri Jan 22 18:46:03 2010] [error] [client xx.xxx.xx.xx] File does not exist: /home/fred/public_html/domain.com/404.shtml
[Fri Jan 22 18:46:03 2010] [error] [client xx.xxx.xx.xx] File does not exist: /home/fred/public_html/domain
C'est en cours d'exécution sous Apache sur Linux. J'ai essayé de l'exécution de chaque ligne de la .wsgi script dans l'interpréteur Python sur le serveur, et aucun d'entre eux retournent des erreurs. J'ai aussi essayé la sys.stdout = sys.stderr
truc et n'a aucune autre sortie que ce qui est ci-dessus. Le Fichier n'existe pas d'erreurs ont à faire avec le reste de la configuration du site et de se produire sur toute demande. Je n'ai pas fini de mettre tout ça correctement (erreur des pages et des pages d'index et ainsi de suite) parce que je suis juste essayer d'obtenir l'application à exécuter.
J'ai eu cette app et fonctionne sous Apache sur ma propre machine, mais PAS en mode Démon, mais c'est mon premier Django app, et je ne pense pas que mon hébergeur a jamais configuré un avant de, nous sommes donc en train de voler un peu à l'aveugle. Si quelqu'un a des suggestions, je serais très reconnaissant. Merci!!!!
OriginalL'auteur barsoomcore | 2010-01-21
Vous devez vous connecter pour publier un commentaire.
Si le prix de la configuration sur est ce que vous utilisez, l'erreur est assez évident en fait. Vous avez:
Il devrait être:
Qui est, le nom du groupe de processus doivent correspondre.
Vous devriez bien avoir vu un message d'erreur:
Ce serait probablement avant l'erreur enregistré:
C'est pourquoi il est important de vous fournir tous les messages du journal des erreurs et ne présumez pas qu'ils ne sont pas pertinentes.
Alternativement, vous avez cité configuration différente de ce que vous utilisez ou non la totalité de la configuration.
Mise à JOUR de 1
Il semble que vous pouvez avoir directive ErrorDocument activé dans Apache d'erreurs de redirection vers une URL spécifique. Parce que, toutefois, vous avez monté Django à la racine du serveur web, et non pas à l'exclusion de ceux de l'erreur d'Url transmis par le biais de Django, puis, quand une erreur est générée Django obtient la redirection pour le message d'erreur mais il ne peut pas résoudre l'URL et ensuite génère une erreur 404. Car Apache vu un 404 pour la page d'erreur de redirection, il renvoie ensuite un 500 page d'erreur par défaut. Le résultat final est que la véritable origine de l'erreur et de toute l'information est perdue.
Donc, aller dans la configuration d'Apache et de commentaire de la directive ErrorDocument directives.
Mise à JOUR 2
Changement de configuration:
Vous ne devriez pas avoir slash sur la deuxième valeur sur la ligne. Manquer, que vous étiez en train d'essayer de monter sous l'URL et pas à la racine du serveur web.
Je vous remercie. Pouvez-vous préciser ce que vous entendez par "ont monté de Django à la racine du serveur web"? Ma racine du serveur web est domain.com/ , alors que le Django app est monté à domain.com/fredapp/ . Il est très probable, je ne suis malentendu, cependant, si vous pouvez être plus clair ici, je l'apprécierais. Je vais vérifier avec mon fournisseur wrt ErrorDocument directives. Merci pour l'entrée.
Eh bien, mon fournisseur insiste sur le fait il n'y a pas ErrorDocument directives. À ce stade, je pense que je vais chercher un nouveau fournisseur pour cette application.
J'ai été intrigué un peu avec un problème similaire, - j'ai eu de désadaptation "nom" dans le WSGIDaemonProcess et WSGIProcessGroup et il n'y avait rien dans les journaux d'erreur. Juste une "Erreur 500". Pourriez-vous préciser quelque part près du début de la doc sur WSGIDaemonProcess? - il n'est pas clair du tout dans le texte de ce "nom" est attendu. Aussi, est-il possible d'obtenir quelque chose de plus utile dans les journaux (en plus de l ' "Erreur 500" message?) dans ce cas?
Si l'exception se propage à WSGI serveur mod_wsgi du journal. Si l'obtention d'un 500 alors il se pourrait que Django est de le créer et de mod_wsgi n'aura pas connaissance du problème original. Dans ce cas, vous devez configurer les ADMINS dans Django paramètres d'e-mail les détails. Rien de mod_wsgi pourrait le faire.
OriginalL'auteur Graham Dumpleton
Est-il possible que votre répertoire de départ n'est pas le seul projet est en?
Aujourd'hui, j'étais aussi la configuration d'Apache+mod_wsgi+Django app et après l'ajout de django.wsgi:
tout a commencé à travailler comme un charme.
C'est une mauvaise pratique de s'appuyer sur le répertoire de travail courant pour les applications web parce que vous ne pouvez pas garantir qu'il peut être sous différentes solutions d'hébergement. Changer de répertoire de travail comme vous l'avez peut ne pas fonctionner en tant que techniquement, vous pourriez avoir d'autres applications s'exécutant dans le même processus qui font la même chose et vous pouvez les visser jusqu'ou ils vont vis de vous. Donc, toujours utiliser des chemins absolus et assurez-vous de définir module Python chemin de recherche correctement, plutôt que de compter sur les importations par rapport au répertoire de travail courant.
Dumpleton: je réalise que c'est une mauvaise pratique, mais j'ai un code qui crée des fichiers journaux dans le répertoire courant. C'est d'être refait, mais pendant un moment je dois vivre avec ce hack.
OriginalL'auteur Tomasz Zielinski
Nous avons eu le même message d'erreur lorsque l'utilisateur de Apache n'avait pas les droits pour lire les fichiers.
eh bien, c'est une sorte de réponse aux utilisateurs comment voulez vérifier si elles peuvent résoudre le problème en modifiant le fichier correct droits de recherche, de l'OS commande spécifique sur google... je connais la réponse peut donner beaucoup plus d'infos, mais je ne dirais pas que ce n'est pas une réponse...
OriginalL'auteur fylb