2

我在同一台机器上有两个 django 项目。它们是使用标准 django/apache/mod_python 配置设置的,基本上:

<Location "/mysite">
    SetHandler python-program
    PythonHandler django.core.handlers.modpython
    SetEnv DJANGO_SETTINGS_MODULE mysite.settings
    PythonOption django.root /mysite
    PythonDebug On
    PythonPath "['/path/to/project/parent'] + sys.path"
</Location>

其中 mysite 因两个项目而异(在 Location 指令、DJANGO_SETTINGS_MODULE 和 django.root 中)。PythonPath 也有所不同。

当两个 Location 指令中只有一个存在时,无论哪个站点都可以正常工作。任何一种配置都可以单独工作。

当我有两个 Location 指令(指不同的 url 路径)时,我只能访问一个站点。我有“/portal”和“/apitest”的位置指令,当我访问http://mydomain.com/apitest时,我总是从“/portal”获取代码。

是否可以仅通过包含多个 Location 指令来为同一主机上的两个 django 站点提供服务,或者是否有必要使用 VirtualHosts?

谢谢,大卫

4

1 回答 1

2

文档似乎建议您可能需要PythonInterpreter为每个 Location 块设置不同的值。这能解决问题吗?

如果您需要将两个 Django 安装放在同一个 VirtualHost 中(或在共享相同服务器名称的不同 VirtualHost 块中),您需要采取特殊的预防措施以确保 mod_python 的缓存不会搞砸。使用PythonInterpreter指令为不同的<Location>指令提供不同的解释器:

<VirtualHost *>
    ServerName www.example.com
    # ...
    <Location "/something">
        SetEnv DJANGO_SETTINGS_MODULE mysite.settings
        PythonInterpreter mysite
    </Location>

    <Location "/otherthing">
        SetEnv DJANGO_SETTINGS_MODULE mysite.other_settings
        PythonInterpreter othersite
    </Location>
</VirtualHost>

http://docs.djangoproject.com/en/dev/howto/deployment/modpython/#multiple-django-installations-on-the-same-apacheBlockquoteBlockquotedirectives

于 2010-10-04T22:59:31.300 回答