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

问题描述 投票:0回答:1

我正在尝试在 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>

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

我不想将它们组合成一个 VirtualHost,因为这会导致两个应用程序共享相同的 Python 解释器和某些 C 扩展显然会出现问题。

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

那么我到底要怎么做才能访问这两个站点,而不是 Web2py 站点吞噬一切?

python apache mod-wsgi
1个回答
0
投票

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

在 Flask 站点的配置中,我应该做的:

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

注意 ServerName 的末尾不再有

/suburl
。相反,请确保已将其添加到 WSGIScriptAlias 的第一个参数中。当您查看 WSGIScriptAlias 的文档 时,推理就变得清晰了;第一个参数是被访问的 URL 路径。 ServerName 必须保持纯净。

© www.soinside.com 2019 - 2024. All rights reserved.