在WSGI中两个独立的Django站点(根目录和/two)
经过几个小时的尝试,我决定放弃并向大家求助 :)
我在Debian 7上用Apache2运行着两个Django 1.6的网站,只有一个虚拟主机。
我想让这个虚拟主机的根域名指向一个Django网站(比如:mydomain.com),而另一个网站则用一个单独的别名(比如:mydomain.com/two)。
我可以让两个别名像下面这样工作:
WSGIDaemonProcess test1 python-path=/usr/local/projects/project_one:/usr/local/virtualenvs/project/lib/python2.7/site-packages WSGIScriptAlias /one /usr/local/projects/project_one/project_one/wsgi.py <Location /one> WSGIProcessGroup test1 </Location> WSGIDaemonProcess test2 python-path=/usr/local/projects/project_two:/usr/local/virtualenvs/project/lib/python2.7/site-packages WSGIScriptAlias /two /usr/local/projects/project_two/project_two/wsgi.py <Location /two> WSGIProcessGroup test2 </Location>
这样做的话,以下的域名可以正常访问:
但是如果我想用根域名(mydomain.com)和另一个(mydomain.com/two),就不行了:
WSGIDaemonProcess test1 python-path=/usr/local/projects/project_one:/usr/local/virtualenvs/project/lib/python2.7/site-packages
WSGIScriptAlias / /usr/local/projects/project_one/project_one/wsgi.py
<Location />
WSGIProcessGroup test1
</Location>
WSGIDaemonProcess test2 python-path=/usr/local/projects/project_two:/usr/local/virtualenvs/project/lib/python2.7/site-packages
WSGIScriptAlias /two /usr/local/projects/project_two/project_two/wsgi.py
<Location /two>
WSGIProcessGroup test2
</Location>
我觉得不行的原因是,它试图用第二个网站的WSGI文件来运行第一个网站:
WSGI脚本 '/usr/local/projects/project_one/project/wsgi.py'。
我的问题是,怎样才能让第二种尝试成功,这样mydomain.com就指向一个项目,而mydomain.com/two指向另一个项目呢……
我最开始是按照这个帖子的方法走到现在的,但一直找不到解决这个问题的办法。
感谢大家的支持,
Mark
2 个回答
可能有点晚了,但你可以调整这些wsgi的顺序,这样应该就能正常工作了(我两个wsgi的flask应用都是这样解决的)。当你第一次使用根地址时,它会把所有地址都当作根子域名来处理,而忽略第二个别名。只需把/two放在第一个地址,然后再放根地址就可以了:
WSGIDaemonProcess test2 python-path=/usr/local/projects/project_two:/usr/local/virtualenvs/project/lib/python2.7/site-packages
WSGIScriptAlias /two /usr/local/projects/project_two/project_two/wsgi.py
<Location /two>
WSGIProcessGroup test2
</Location>
WSGIDaemonProcess test1 python-path=/usr/local/projects/project_one:/usr/local/virtualenvs/project/lib/python2. 7/site-packages
WSGIScriptAlias / /usr/local/projects/project_one/project_one/wsgi.py
<Location />
WSGIProcessGroup test1
</Location>
也许有人会觉得这个有用
试着在 WSGIScriptAlias 指令中添加 "process-group" 和 "application-group" 这两个选项:
WSGIScriptAlias / /usr/local/projects/project_one/project_one/wsgi.py process-group=test1 application-group=%{GLOBAL}
...
WSGIScriptAlias /two /usr/local/projects/project_two/project_two/wsgi.py process-group=test2 application-group=%{GLOBAL}