Django apache-wsgi配置问题

时间:2010-06-17 12:15:15

标签: django apache wsgi pip

我正在尝试让我的Django项目在生产服务器上运行。

我使用pip设置环境,因此它与一切运行正常的开发环境完全相同。唯一的区别是我没有在生产中使用virtualenv,因为这个项目是唯一一个将在生产中运行的项目。同样在生产时,有一个Nginx反向代理服务于静态内容,并将动态请求传递给Apache2。

Apache wsgi文件如下:

import sys, os

sys.path.append('/home/project/src')

os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

当我访问服务器时,出现导入错误:

ImproperlyConfigured: Error importing middleware middleware: "cannot import name UserProfile"

这是指src /文件夹下的middleware.py,由设置引用。但我可以从./manage.py shell提示符中导入中间件和UserProfile类。

wsgi文件中的路径似乎有问题,但我看不清楚。目录结构是:

/home/project
/home/project/src (which contains the settings.py, middleware.py and app folders)
/home/apache/apache.wsgi

非常感谢任何帮助。

谢谢, OMAT

2 个答案:

答案 0 :(得分:3)

确保所有目录/文件都可供其他人读取,以便Apache用户可以访问它们,除非您正在使用不同的用户运行守护程序模式,以防用户必须能够读取它们。另请阅读:

http://blog.dscpl.com.au/2010/03/improved-wsgi-script-for-use-with.html

它可能没有帮助,但是结尾处描述的WSGI脚本文件内容将确保进程环境设置得更接近Django开发服务器所做的事情,以防它们与这些差异相关。

答案 1 :(得分:1)

查看我自己的文件,添加包含项目的目录,并指定project。设置,而不是settings

尝试:

import sys, os

sys.path.append('/home/')
sys.path.append('/home/project/')

os.environ['DJANGO_SETTINGS_MODULE'] = 'project.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

如果您指定~/django-sites之类的内容,而不是/home

,那会更好