两个python站点的多个虚拟主机,一个占主导地位

时间:2014-06-25 16:33:15

标签: python apache flask mod-wsgi web2py

我试图在Mac服务器上配置apache服务器来同时为Web2Py应用程序和Flask应用程序提供服务。这已成为一场温和的噩梦。我希望用户能够访问以下网址

http:/my.domain.com/ - Web2py网站

http:/my.domain.com/suburl - Flask网站

不幸的是,当我访问郊区时,它总是把我带到Web2py网站(然后因为没有名为“郊区”的应用程序而吓坏了)。这是我的.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>

重新排序两个VirtualHost定义并没有做任何事情。删除Web2py站点允许我访问Flask站点。

我宁愿不将它们合并到一个VirtualHost中,因为这会导致共享相同Python解释器的两个应用程序出现问题,并且某些C扩展显然正在翻转。

我已更改域名和其他一些名称以隐藏受保护的信息。我还排除了一些处理静态子文件夹服务的AliasMatch命令。在端口443上还有另一个用于SSH服务器的VirtualHost,但是我没有包含它,因为我希望它不会影响事情。

那么我该如何制作它以便我可以访问这两个网站,而不是吞噬所有内容的Web2py网站?

1 个答案:

答案 0 :(得分:0)

对于任何来这里的人,我已经解决了我的问题。这是一个简单的错误,我可以发誓我曾经尝试过这个。

在Flask网站的配置中,我应该这样做:

ServerName my.domain.com
...
WSGIScriptAlias /suburl /Users/myname/suburl/app.wsgi

请注意,ServerName的末尾不再有/suburl。相反,请确保已将其添加到WSGIScriptAlias的第一个参数中。当你看the documentation for WSGIScriptAlias时,推理就会变得清晰;第一个参数是正在访问的URL路径。 ServerName必须保持纯粹。