2010-12-16 79 views
7

当我执行Apache/mod_wsgi中的Django部署问题。导入错误:无法导入设置 'site.settings'

django-admin.py startproject site 

它的工作原理。
但是,如果我只是复制网站文件夹,它不起作用。
为什么?

<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

向我们展示相关的wsgi配置和apache/virtualhost .conf ... – 2010-12-16 15:16:43

+0

是settings.py /var/www/django/site/settings.py的绝对路径吗? – 2010-12-16 20:15:46

+0

还检查运行Apache的用户是否有权打开/ var/www/django下的文件。 – 2010-12-16 20:19:13

回答

4

确保您已经阅读:

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

,并观看此演示:

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

您的问题将是一个sys.path中或权限问题,它都被覆盖由以上所述。

对WSGIDaemonProcess指令使用'maximum-requests = 200 stack-size = 524288'选项使我怀疑你是否提到了主流文档,因为基本指令并没有告诉你使用它们。相反,您似乎已经使用了一些随意的博客文章来介绍如何设置它,或者依靠在IRC频道上提供的一些民间传说。 :-)

+0

我已经删除了这些行。 =)谢谢你的链接。 – Stan 2010-12-17 21:37:17

+0

非常喜欢“这里是它的工作方式,学习这个,然后自己搞清楚!”做法。如果你遇到这样的问题,你只是想让它工作。但从长远来看,要真正了解它是如何以这种方式行事就更好了。我们没有足够的答案。谢谢! – erikbwork 2016-08-19 12:28:26

1

Check your python path确保WSGI可以引用它。

+0

但是如何以及在哪里可以将mysite文件夹添加到python路径? – Stan 2010-12-16 16:08:02

6

如果您有阿帕奇CONFIGS是这样的:

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

而且这里面your_project.wsgi:

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

然后Apache会看/base/path/devel/settings.py 。如果将/ base/path/devel移动或复制到/ base/path/production,则必须在your_project.wsgi上指向'production.settings'来编辑DJANGO_SETTINGS_MODULE。

+0

我已经完成了所有描述的事情。我认为python路径很重要。 – Stan 2010-12-16 16:07:23

1

我遇到了一个符合链接不符合site-packages目录的问题。仔细检查你的apache配置和符号链接。

0

这似乎不是你的问题,但当我使用WSGIPythonPath指令(而不是.wsgi文件)设置sys.path时,我跑到相同的ImportError中。这工作得很好,直到我切换到在守护进程模式下运行WSGI。一旦你这样做了,你必须改用WSGIDaemonProcess指令的python-path参数。

相关问题