无法让mod_wsgi和Apache与Django一起工作
这是我在Apache错误日志中看到的错误信息:
[Sun Aug 22 16:52:06 2010] [error] [client 127.0.0.1] ImportError: No module named settings
这是我的.wsgi文件,参考了这篇博客:
import sys
sys.path.insert(0, '/home/wot/django-projects/aedo')
import settings
import django.core.management
django.core.management.setup_environ(settings)
utility = django.core.management.ManagementUtility()
command = utility.fetch_command('runserver')
command.validate()
import django.conf
import django.utils
django.utils.translation.activate(django.conf.settings.LANGUAGE_CODE)
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
我已经仔细检查了路径,确认这确实是我项目文件的路径。我已经尝试了好几个小时想让这个工作正常,还在网上查了很多资料。现在我在这里求助,真的是走投无路了!
补充:我知道这里有类似的问题,我也看过大部分,结果还是没有解决。
4 个回答
2
试着把
os.environ['DJANGO_SETTINGS_MODULE'] = 'aedo.settings'
改成
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
其实我也遇到过这个错误,我按照上面的做法进行了修改。我还把
ROOT_URLCONF = 'appname.urls'
改成了
ROOT_URLCONF = 'urls'
希望你的settings.py文件和这个项目的wsgi文件在同一个文件夹里。
2
你在你的django.wsgi文件里放这个:
import os, sys
sys.path.append('/usr/local/django') # obs: path to django
sys.path.append('/home/wot/django-projects/aedo')
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
为什么不管用呢?
2
运行以下代码会得到什么结果:
ls -las /home/wot/django-projects/aedo/
Apache运行的用户是否可以读取这个目录和所有文件?如果不能,你可能会遇到那个错误。
另外,可以看看下面的讲座和幻灯片:
http://blog.dscpl.com.au/2010/06/sydney-pycon-modwsgi-talk-slides.html
因为它进一步讨论了权限的问题。