Ser*_*eim 21 apache django mod-wsgi
我想在同一主机中部署两个不同的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并获得不同的欢迎页面.我检查了前几个小时的所有内容,没有发现任何奇怪的事情......
拜托,在我发疯之前告诉我可能出现什么问题......
谢谢 !
Gra*_*ton 47
这是Django 1.4生成的wsgi.py文件的问题.在尝试在同一进程中托管两个不同的Django实例时,它将无法工作,即使在单独的子解释器中也是如此.
更改:
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "site1.settings")
Run Code Online (Sandbox Code Playgroud)
至:
os.environ["DJANGO_SETTINGS_MODULE"] = "site1.settings"
Run Code Online (Sandbox Code Playgroud)
或者更好的是仍然使用守护进程模式并委托每个守护进程模式在不同的守护程序进程组中运行.
也就是说,而不是:
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
Run Code Online (Sandbox Code Playgroud)
使用:
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}
Run Code Online (Sandbox Code Playgroud)
UPDATE
请注意,现在有一篇关于这个和其他原因的博客文章.
| 归档时间: |
|
| 查看次数: |
17989 次 |
| 最近记录: |