2010-12-16 4 views
7

Impossible d'importer des paramètres de site.settings "Quand j'exécutionProblème de déploiement de Django dans Apache/mod_wsgi. ImportError:

django-admin.py startproject site 

cela fonctionne.
Mais si je ne fais que copier le dossier du site, cela ne fonctionne pas.
Pourquoi?

<VirtualHost *:80> 
ServerName django.stanislavfeldman.com 

# Django settings 
WSGIScriptAlias//var/www/django/wsgi_handler.py 
WSGIDaemonProcess django.stanislavfeldman.com maximum-requests=200 stack-size=524288 

ErrorLog /var/www/django/error.log 
LogLevel warn 
</VirtualHost> 

wsgi_handler.py:

import os, sys 

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

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

import django.core.handlers.wsgi 

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

montrez-nous le fichier wsgi config et apache/virtualhost .conf ... –

+0

est le chemin absolu vers settings.py /var/www/django/site/settings.py? –

+0

vérifie également si l'utilisateur qui exécute apache a l'autorisation d'ouvrir les fichiers sous/var/www/django. –

Répondre

4

Vérifiez que vous avez lu:

http://code.google.com/p/modwsgi/wiki/IntegrationWithDjango

et aussi regarder cette présentation:

http://code.google.com/p/modwsgi/wiki/WhereToGetHelp?tm=6#Conference_Presentations

Votre problème va être un sys.path ou problème d'autorisations qui sont tous deux couverts par ce qui précède. Si vous utilisez les options 'maximum-requests = 200 stack-size = 524288' ​​pour la directive WSGIDaemonProcess, vous me demandez si vous avez fait référence à la documentation grand public car les instructions de base ne vous disent pas de les utiliser. Au lieu de cela, on dirait que vous avez utilisé un billet de blog arbitraire pour savoir comment le configurer, ou vous fier à du folklore qui vous a été donné sur un canal IRC. :-)

+0

J'ai déjà supprimé ces lignes. =) Merci pour les liens. – Stan

+0

Beaucoup d'amour pour le "Voici comment ça marche, apprenez-le et trouvez-le vous-même!" approche.Si vous êtes bloqué avec un tel problème, vous voulez juste que cela fonctionne. Mais à long terme, il est toujours préférable d'apprendre comment il s'est comporté comme ça. Nous n'avons pas assez de réponses comme celles-ci. Merci! – erikbwork

1

Check your python path pour vous assurer que WSGI peut référencer.

+0

Mais comment et où puis-je ajouter un dossier mysite au chemin python? – Stan

6

Si vous avez quelque chose comme ça dans configs apache:

WSGIScriptAlias /path /base/path/devel/your_project.wsgi 

Et ceci à l'intérieur your_project.wsgi:

sys.path.append('/base/path') 
os.environ['DJANGO_SETTINGS_MODULE'] = 'devel.settings' 

Alors apache se penchera sur /base/path/devel/settings.py . Si vous déplacez ou copiez/base/path/devel vers/base/path/production, vous devez éditer DJANGO_SETTINGS_MODULE sur your_project.wsgi pointant vers 'production.settings'.

+0

J'ai fait toutes les choses décrites. Je pense que le chemin python est important. – Stan

1

J'ai rencontré un problème avec un lien symbolique non suivi à partir du répertoire site-packages. Vérifiez bien votre configuration apache et vos liens symboliques.

0

Cela ne semble pas être le problème dans votre cas, mais j'ai couru smack dans le même ImportError lorsque j'ai utilisé la directive WSGIPythonPath (au lieu du fichier .wsgi) pour configurer sys.path. Cela a fonctionné correctement jusqu'à ce que je suis passé à WSGI en mode démon. Une fois que vous faites cela, vous devez utiliser l'argument python-path à la place de la directive WSGIDaemonProcess.

Questions connexes