从Apache运行两个WSGI / Django实例的正确方法

时间:2015-01-26 12:57:18

标签: python django apache virtualhost wsgi

我有一个用Python Django编写的应用程序。

我想有两个这样的运行实例 - 一个生产版本和一个测试版本,我可以在其中推送新功能并让用户测试它们。我希望网址是:

top.level.domain/production/url-to-specific-page/

top.levl.domain/test/url-to-specific-page/

我的系统管理员在conf.d中为我设置了一个Apache文件,我可以编辑虚拟主机。我尝试在这里添加两个脚本别名,但它们最终指向首先访问的应用程序的任何版本。

<VirtualHost *:80>
    ServerName myserver.cat
    ServerAlias  list-of-server-names
    DocumentRoot /var/www/html/myserver.cat
    ErrorLog /var/log/httpd/myserver_error.log
    CustomLog /var/log/httpd/myserver.cat_access.log common


    AccessFileName .htaccess
    <Directory /var/www/html/myserver.cat>
            AllowOverride All
    </Directory>
    <Directory /var/www/html/myserver.cat/data>
            AllowOverride All
            Options +Indexes
    </Directory>

    ProxyRequests   Off
    ProxyPreserveHost On
    <Proxy *>
            Order deny,allow
            Allow from all
    </Proxy>


    Alias /static /var/www/html/myserver/myapplication/webform/db_sync/static
    WSGIScriptAlias /sampleimport /var/www/html/myserver/myapplication/webform/webform/wsgi.py
    WSGIScriptAlias /test /var/www/html/myserver/test/myapplication/webform/webform/wsgi_test.py
</virtualhost>

wsgi.py如下

import sys 
code_directory = 'directory/where/django/prod/code/lives'
sys.path.append(code_directory)

import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "webform.settings_prod")

from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

wsgi_test.py是相同的,除了code_directory变量和设置文件。

当我运行此设置时,不同的URL似乎指向同一个数据库,具体取决于首先访问哪个测试/生产。我假设DJANGO_SETTINGS_MODULE正在设置,然后在访问其他URL时不会更改。

设置这样的两个实例的正确方法是什么?

0 个答案:

没有答案