apache虚拟主机与django一起工作
Posted
技术标签:
【中文标题】apache虚拟主机与django一起工作【英文标题】:apache virtual host to work with django 【发布时间】:2011-02-02 11:02:36 【问题描述】:我的项目位于:/home/projects/testing 下,我将其添加到 Centos 机器上的 /etc/httpd/conf/httpd.conf 文件的底部,但这不起作用,
<Location "/testing/">
SetHandler python-program
PythonHandler django.core.handlers.modpython
SetEnv DJANGO_SETTINGS_MODULE testing.settings
PythonOption django.root /testing
PythonDebug On
PythonPath "['/home/projects/'] + sys.path"
</Location>
但例如在请求http://localhost/testing/jobs 时,我得到:
Mod_python 错误:“PythonHandler django.core.handlers.modpython” 回溯(最近一次通话最后): 文件“/usr/lib/python2.4/site-packages/mod_python/apache.py”,第 299 行,在 HandlerDispatch 结果 = 对象(请求) ...... 文件“/usr/lib/python2.4/site-packages/Django-1.1.1-py2.4.egg/django/conf/__init__.py”,第 75 行,在 __init__ raise ImportError, "Could not import settings '%s' (它在 sys.path 上吗?是否有语法错误?): %s" % (self.SETTINGS_MODULE, e) ImportError:无法导入设置“testing.settings”(它在 sys.path 上吗?是否有语法错误?):没有名为 testing.settings 的模块【问题讨论】:
【参考方案1】:您需要 PythonPath 中的项目文件夹和测试文件夹,因为您的项目使用的路径中没有“测试”:
PythonPath "['/home/projects/', '/home/projects/testing/'] + sys.path"
【讨论】:
按照提示更新了PythonPath,直接在项目内的设置文件上进行设置。还是没有运气。 @reko_t:回溯显示“导入错误”、“没有名为 testing.settings 的模块”。假设文件/home/projects/testing/__init__.py
和/home/projects/testing/settings.py
存在,路径上的/home/projects
就足够了。这就是为什么我会说 mod_python 更有可能无法读取文件,而不是找不到它们。
如果/home/projects/testing/__init__.py
不存在,那么导入testing.settings
将失败。我建议按照@reko_t 的建议制作你的python 路径,然后使用:SetEnv DJANGO_SETTINGS_MODULE settings
。无论__init__.py
是否存在,这都应该可以工作。【参考方案2】:
路径对我来说看起来不错,我刚刚仔细检查了 sys.path
中的项目是否可以使用尾部斜杠。
我建议这是一个文件权限问题:
运行 apache 的用户是否有权访问项目文件? selinux 是否阻止访问?【讨论】:
创建了777权限的文件夹,我也在用Centos,没有selinux AFAIK。还是没有运气。 我没有接触过 Centos,但是这个文档的存在,centos.org/docs/5/html/5.1/Deployment_Guide/… 会让我相信 Centos 本质上并不缺少 selinux。以上是关于apache虚拟主机与django一起工作的主要内容,如果未能解决你的问题,请参考以下文章
Windows 7 本地主机无法与 XAMPP 一起正常工作
Django 虚拟主机设置。 Apache mod_wsgi
Apache2 使用 Django 项目设置带有子域的虚拟主机