使用mod_wsgi在Apache上部署多个Django应用

我想在同一主机中部署两个不同的django应用程序:第一个将对应于URL / site1,第二个将对应于URL / site2。这是我的配置:

LoadModule wsgi_module modules/mod_wsgi.so

WSGIScriptAlias /site1 /var/www/py/site1/site1/wsgi.py

WSGIScriptAlias /site2 /var/www/py/site2/site2/wsgi.py

WSGIPythonPath /var/www/py/site1:/var/www/py/site2

<Directory "/var/www/py/site1/site1">

<Files wsgi.py>

Order deny,allow

Allow from all

</Files>

</Directory>

<Directory "/var/www/py/site2/site2">

<Files wsgi.py>

Order deny,allow

Allow from all

</Files>

</Directory>

这也是这两个应用程序的wsgi.py文件

import os

import sys

path = '/var/www/py/site1'

if path not in sys.path:

sys.path.append(path)

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "site1.settings")

from django.core.wsgi import get_wsgi_application

application = get_wsgi_application()

现在,这是我的问题。当我转到服务器时,假设http://app1.sites.gr/site1有时加载了site1,而有时加载了site2!访问http://app1.sites.gr/site2时也是如此 …有些时候,我得到了site1的欢迎页面,有时我得到了site2的欢迎页面!我正在按F5键,并获得了不同的欢迎页面。我已经检查了前几个小时的所有内容,没有发现任何奇怪的东西。

请告诉我发疯之前可能是什么问题…

谢谢 !

回答:

这是Django 1.4生成的wsgi.py文件存在的问题。即使在单独的子解释器中尝试在同一进程中托管两个不同的Django实例,也无法正常工作。

更改:

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "site1.settings")

至:

os.environ["DJANGO_SETTINGS_MODULE"] = "site1.settings"

或者最好还是使用后台驻留程序模式,并将每个代理委派到不同的后台驻留程序进程组中运行。

即,代替:

WSGIScriptAlias /site1 /var/www/py/site1/site1/wsgi.py

WSGIScriptAlias /site2 /var/www/py/site2/site2/wsgi.py

WSGIPythonPath /var/www/py/site1:/var/www/py/site2

用:

WSGIDaemonProcess site1 python-path=/var/www/py/site1

WSGIScriptAlias /site1 /var/www/py/site1/site1/wsgi.py process-group=site1 application-group=%{GLOBAL}

WSGIDaemonProcess site2 python-path=/var/www/py/site2

WSGIScriptAlias /site2 /var/www/py/site1/site2/wsgi.py process-group=site2 application-group=%{GLOBAL}

以上是 使用mod_wsgi在Apache上部署多个Django应用 的全部内容, 来源链接: utcz.com/qa/421852.html

回到顶部