一个Apache上多个django实例的当前目录

时间:2015-01-20 15:27:04

标签: django apache

我们正在尝试在同一个Apache服务器上运行多个django实例。所有站点共享相同的代码(和设置文件),但具有不同的工作目录(使用wsgi.py和带有数据库参数的配置文件)和不同的数据库。 Django的版本是1.6.2。布局如下:

/bin/manage.py
    /tttb/settings.py
/site1/wsgi.py
      /config.txt
/site2/wsgi.py
      /config.txt

以下是httpd.conf的当前格式。

NameVirtualHost *:80
WSGIPythonPath "Z:/projects/bin/tttb"

# site1
# =======================================
<VirtualHost *:80>
    ServerName site1
    WSGIScriptAlias "/djangosite1" "Z:/projects/site1/wsgi.py" 
    <Directory "Z:/projects/site1">
        Order allow,deny
        Allow from all
        AllowOverride None
        Options None
        Require all granted
    </Directory>
</VirtualHost>

# site1
# =======================================
<VirtualHost *:80>
     ServerName site2
     WSGIScriptAlias "/djangosite2" "Z:/projects/site2/wsgi.py" 
     <Directory "Z:/projects/site2">
        Order allow,deny
        Allow from all
        AllowOverride None
        Options None
        Require all granted
    </Directory>
</VirtualHost>

我们的wsgi.py文件如下所示:

import os,sys
bindir = os.path.join("Z:\\","projects","bin")
if bindir not in sys.path:
    sys.path.append(bindir)
os.chdir(os.path.dirname(os.path.abspath(__file__)))
os.environ['DJANGO_SETTINGS_MODULE'] = 'tttb.settings'
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

与StackOverflow上的类似问题(请参阅herehere)相反,我们在Windows(XAMMP)上运行,因此无法使用WSGIApplicationGroup或WSGIProcessGroup。但是,乍一看这个设置有效。我们甚至在有和没有虚拟主机的情况下对它进行了测试。在这两种情况下它都可以。

除了一个细节:当我们需要确定当前工作目录(“。”)时,实例会混淆。例如。    myfile = open(os.path.join(“。”,“someresultfile.txt”),“r”) 最初, - 在重新启动Apache之后 - ,workdir仍然正确确定,但在浏览了两个站点之后,工作目录似乎被锁定在两个路径中的一个。 可能还有其他类似的泄漏我们都不知道,但这是最明显的。我们也在不使用虚拟主机的情况下尝试了这一点,它也给出了相同的结果。

另一个奇怪的行为是,当使用上面的虚拟主机时,网址http://www.domain.com/djangosite1(在一般主机名上)仍指向其中一个djangosites。但是,我希望它应该指向子目录htdocs / djangosite1(并且失败,因为该目录不存在)。

对此有任何帮助表示赞赏。

0 个答案:

没有答案