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 项目设置带有子域的虚拟主机

试图让 PHP-FPM 工作 (Apache 2.4.33)

同一虚拟主机上的两个 django 应用程序的间歇性问题

在 Apache 2.2.17 中让 mod_geoip 与 mod_wsgi 一起工作