使用mod_wsgi在Apache上部署多个django应用程序 [英] Deploying multiple django apps on Apache with mod_wsgi
问题描述
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>
<文件wsgi.py>
订单拒绝,允许
从所有
$文件
/ lt目录>
/目录/ var / www / py / site2 / site2>
<文件wsgi.py>
订单拒绝,允许
允许从所有
< / Files>
< / Directory>
此外,这两个应用程序的wsgi.py文件
导入os
import sys
path ='/ var / www / py / site1'
如果路径不在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_a pplication()
现在,这是我的问题。当我去我的服务器时,让我们再说一次 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)
to:
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坐e2 python-path = / var / www / py / site2
WSGIScriptAlias / site2 /var/www/py/site1/site2/wsgi.py process-group = site2 application-group =%{GLOBAL}
更新
请注意,现在有一篇关于这个和其他原因的博客文章。
I want to deploy two different django apps in the same host: The first will correspond to the url /site1 and the second to the url /site2. Here's my configuration:
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>
Also here's the wsgi.py file for both applications
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()
Now, here's my problem. When I go to my server, let's say http://app1.sites.gr/site1 it some times loads site1, and some other times it loads site2 !!!! The same goes when I visit http://app1.sites.gr/site2 ... Sometiems I get the welcome page for site1, sometimes I get the welcome page for site2 ! I am hitting F5 and getting different welcome pages. I have checked everything for the previous hours and did not find anything strange...
Please, tell me what could be the problem before I go crazy ...
Thanks !
This is a problem with the wsgi.py file generated by Django 1.4. It will not work where trying to host two distinct Django instances in the same process, even though in separate sub interpreters.
Change:
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "site1.settings")
to:
os.environ["DJANGO_SETTINGS_MODULE"] = "site1.settings"
Or better still use daemon mode and delegate each to run in distinct daemon process groups.
That is, instead of:
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
use:
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
Note that there is a whole blog post about this and other causes now.
这篇关于使用mod_wsgi在Apache上部署多个django应用程序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!