使用 apache2 和 mod_wsgi 在根目录下为一个烧瓶应用程序提供服务,在不同路径下提供另一个烧瓶应用程序

Serve one flask app at root and another at a different path with apache2 and mod_wsgi

我正在尝试直接在本地主机上提供一个烧瓶应用程序,并在 localhost/menus 上提供另一个。

当我的apache配置是这样的:

<VirtualHost *:80>
ServerName localhost

# logs configuration -------------------------------------------------
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

# front page ---------------------------------------------------------
WSGIDaemonProcess flask_ac user=#1000 group=#1000 threads=5
WSGIScriptAlias /front /var/www/flask_ac/hookup.wsgi

<Directory /var/www/flask_ac>
    WSGIProcessGroup flask_ac
    WSGIApplicationGroup flask_ac
    Require all granted
</Directory>

# start menus --------------------------------------------------------
WSGIDaemonProcess menus user=#1000 group=#1000 threads=5
WSGIScriptAlias /menus /var/www/flask_ac/projects/menus/hookup.wsgi

<Directory "/var/www/flask_ac/projects/menus/">
    WSGIProcessGroup menus
    WSGIApplicationGroup menus
    Require all granted
</Directory>

它工作正常,但它在 localhost/front 而不仅仅是本地主机上提供第一个应用程序。

如果我将第一个 WSGIScriptAlias 更改为:

WSGIScriptAlias / /var/www/flask_ac/hookup.wsgi

它将在 localhost 正确地提供第一个应用程序,但在 localhost/menus 的第二个应用程序中断,并且 returns 未找到。

我发现 有类似的问题,但它没有直接解决这个问题,我似乎无法弄明白。

更改顺序,使子 URL 的申请排在第一位。

WSGIScriptAlias /menus /var/www/flask_ac/projects/menus/hookup.wsgi

...

WSGIScriptAlias / /var/www/flask_ac/hookup.wsgi

文档中提到在以下位置订购: