两个Python网站的多个虚拟主机,一个占主导
我正在尝试在Mac服务器上配置一个Apache服务器,让它同时运行一个Web2Py应用和一个Flask应用。这变得有点麻烦。我希望用户能够访问以下网址:
http:/my.domain.com/
- Web2Py网站
http:/my.domain.com/suburl
- Flask网站
不幸的是,当我访问suburl时,它总是把我带到Web2Py网站(然后因为找不到名为suburl的应用而出错)。这是我的.conf
文件:
NameVirtualHost *:80
# Flask Site
<VirtualHost *:80>
ServerName my.domain.com/suburl
WSGIDaemonProcess flask-suburl user=_www group=_www
WSGIProcessGroup flask-suburl
WSGIScriptAlias /suburl /Users/myname/suburl/app.wsgi
<Directory /Users/myname/suburl>
WSGIApplicationGroup %{GLOBAL}
Order deny,allow
Allow from all
</Directory>
</VirtualHost>
# Web2py Site
<VirtualHost *:80>
ServerName my.domain.com
WSGIDaemonProcess web2py-main user=_www group=_www
WSGIProcessGroup web2py-main
WSGIScriptAlias / /Users/myname/web2py/wsgihandler.py
<Directory /Users/myname/web2py>
AllowOverride None
Order Allow,Deny
Deny from all
<Files wsgihandler.py>
Allow from all
</Files>
</Directory>
</VirtualHost>
重新排列这两个虚拟主机的定义没有任何效果。删除Web2Py网站后,我就可以访问Flask网站了。
我不想把它们合并成一个虚拟主机,因为那样会导致两个应用共享同一个Python解释器,某些C扩展似乎也会出现问题。
我已经更改了域名和其他一些名称,以隐藏敏感信息。我还省略了一些处理静态子文件夹的AliasMatch命令。此外,还有一个用于SSH服务器的虚拟主机在443端口,但我没有包括它,因为我认为它不会影响其他内容。
那么,我该怎么做才能同时访问这两个网站,而不是让Web2Py网站把所有请求都吞掉呢?
1 个回答
0
对于来到这里的朋友,我已经解决了我的问题。其实只是一个简单的错误,我本以为我之前试过这个。
在Flask网站的配置中,我应该这样做:
ServerName my.domain.com
...
WSGIScriptAlias /suburl /Users/myname/suburl/app.wsgi
注意,ServerName后面不再有/suburl
了。相反,要确保这个部分已经加到WSGIScriptAlias的第一个参数里。理解这个原因可以参考WSGIScriptAlias的文档;第一个参数是正在访问的URL路径。ServerName必须保持干净。