首页  >  问答  >  正文

如何在同一台服务器上为flask和php配置apache

我一直在升级/更新的服务器有使用 php 和 python 的页面。我使用 Flask 框架重写了基于 python 的页面,并使用 wsgi 配置了 apache:

<VirtualHost *:443>
    ServerName my_fake_site
    ...
    AliasMatch ^\/((?:flask_dir1|flask_dir2).*)\.((css|php|png)$((?:\?.*)?)) /var/www/html/app/.
    AliasMatch ^\/(.*)\.(css|html|php|png) /var/www/html/.

    WSGIDaemonProcess main_proc processes=8 python-home=/var/www/html/venv
    WSGIScriptAlias / /var/www/html/wsgi.py
    <Directory /var/www/html/>
        WSGIProcessGroup main_proc
        WSGIApplicationGroup %{GLOBAL} 
        Require all granted
    </Directory>

    SSLEngine on
    ...
</VirtualHost>

WSGIPythonPath /var/www/html
WSGIPythonHome /var/www/html/venv

在旧服务器上,指向目录的 url 默认为 index.php 使用 DirectoryIndex 选项(在另一个conf文件中设置)。在新服务器上,我在错误日志中收到“内部服务器错误”消息和 500 响应代码。

所以最终的问题是,如何配置 apache 来同时服务由 php 处理的页面和由 python 处理的页面? (注:flask目录下有几个php处理的页面)

编辑:我添加了另一个 AliasMatch 行,似乎可以执行我想要的操作。我还能够从第二个 AliasMatch 行中删除“php”:

AliasMatch ^\/((?:flask_dir1|flask_dir2).*)\.((css|php|png)$((?:\?.*)?)) /var/www/html/app/.
AliasMatch ^\/(.*)\.(css|html|png) /var/www/html/.
AliasMatch ^\/((?:php_dir1|php_dir2).*) /var/www/html/

P粉547170972P粉547170972306 天前407

全部回复(1)我来回复

  • P粉431220279

    P粉4312202792024-01-11 00:36:41

    正如我在编辑中提到的,AliasMatch 指令有效。从文档来看,这允许Apache托管静态文件,我猜这也包括php文件。

    回复
    0
  • 取消回复