使用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时,同样的事情… Sometiems我得到了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}

UPDATE

请注意,现在有一个关于这个和其他原因的整篇博文。

> http://blog.dscpl.com.au/2012/10/requests-running-in-wrong-django.html

http://stackoverflow.com/questions/11505576/deploying-multiple-django-apps-on-apache-with-mod-wsgi

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:使用mod_wsgi在Apache上部署多个django应用程序