2010-08-15 3 views
4

Ceci est probablement très simple. Mais je suppose que je suis trop nouveau pour WSGI et Django pour l'obtenir par moi-même. J'ai un tout nouveau projet Django sur une machine virtuelle Ubuntu hébergée dans/var/www/mysite. Le projet a été créé avecProblème lors de la configuration de django sur Apache

django-admin startproject mysite 

que je suis un tutoriel WSGI pour l'obtenir mis en place, donc je créé un dossier ./apache, à l'intérieur duquel je placé ce fichier, django.wsgi:

import os 
import sys 
os.environ['DJANGO_SETTINGS_MODULE'] = '/var/www/mysite/mysite.settings' 

import django.core.handlers.wsgi 
application = django.core.handlers.wsgi.WSGIHandler() 

J'ai ensuite ajouté cette ligne de configuration à la configuration Apache:

WSGIScriptAlias//var/www/mysite/apache/django.wsgi 

Lorsque je tente de frapper le site, rien est retourné. La connexion est bloquée. C'est dans mon access.log:

192.168.2.116 - - [15/Aug/2010:14:09:02 -500] "GET/HTTP/1.1" 500 639 "-" "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8 

Ainsi il frappe le site. Mais quelqu'un ne fait rien. Il n'y a pas d'erreurs dans le fichier errors.log.

Vous avez des idées?

+0

Pourquoi est-il nommé wsdl? Ne devrait-il pas être .wsgi? Pas que ça compte probablement .. –

+0

Désolé, c'était une faute de frappe sur le poste. Correcté à wsgi (ce qui est dans le fichier) – Amy

Répondre

2

L'erreur flagrante en question initiale est que:

os.environ['DJANGO_SETTINGS_MODULE'] = '/var/www/mysite/mysite.settings' 

devrait être:

sys.path.append('/var/www') 
sys.path.append('/var/www/mysite') 

os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings' 

C'est, module de paramètres Django doit être un Python chemin du package, PAS un chemin absolu du système de fichiers. La réponse acceptée ne le signale même pas et donne plutôt un autre jeu de code à utiliser sans explication. En outre, vous devez définir le chemin de recherche du module Python, c'est-à-dire, sys.path, afin que Python puisse trouver votre fichier de paramètres listé dans cette variable d'environnement. Enfin, si votre navigateur était en train de pendre, vous avez également fait autre chose de mal, car ce que vous avez fait aurait dû provoquer une erreur et non le navigateur. Il aurait également dû y avoir une erreur dans le journal des erreurs Apache, de sorte que vous cherchez soit au mauvais endroit ou ne savez pas quoi chercher.

+0

Lorsque j'ai déplacé le fichier wsgi dans la racine du projet et ajouté le chemin, tout a fonctionné. – Amy

+0

Avoir le fichier WSGI dans la racine du projet est une mauvaise idée car cela implique que vous devez permettre à Apache de servir tous les fichiers à un utilisateur distant de votre répertoire de projet, y compris votre fichier de paramètres incluant les mots de passe. Maintenant, vous ne pouvez pas avoir d'URL mappées dans Apache, ce qui signifie que les fichiers dans le répertoire du projet peuvent être téléchargés en tant que fichiers statiques, mais vous avez toujours supprimé un niveau de sécurité sous-jacent. Donc, revenez à l'utilisation du sous-répertoire 'apache' et ayez seulement 'Allow from all' pour ce sous-répertoire 'apache' contenant le fichier de script WSGI. –

+0

Pour plus d'informations sur le sous-répertoire 'apache', voir 'http://code.google.com/p/modwsgi/wiki/IntegrationWithDjango'. –

1

Ne manquez-vous pas le chemin vers votre application Django? Mon app.wsgi a ceci:

import os, sys 
sys.path.append('/usr/local/src/django-1.2') # django is outside default path 
sys.path.append('/usr/local/src/django-photologue-2.2') # app i'm using 
sys.path.append('/var/www/mysite') 

os.environ['DJANGO_SETTINGS_MODULE'] = 'settings' 
# this is regular python import, so my settings are physically 
# here: /var/www/mysite/settings.py 

import django.core.handlers.wsgi 
application = django.core.handlers.wsgi.WSGIHandler() 
+0

Eh bien, il semblerait que vous ayez votre fichier app.wsgi dans le dossier du projet et non dans un sous-dossier apache, j'ai donc déplacé le mien et changé la configuration apache en conséquence. Ha. Je l'ai! Merci beaucoup. – Amy

Questions connexes