在 apache 上部署 Flask 应用程序工厂

Deploying flask application factory on apache

我没有运气让这个工作。

我的 run.py 工作正常的文件如下所示:

from dpc import create_app

if __name__ == '__main__':
    app = create_app("config.py")

    app.run("0.0.0.0",debug=True,port=666,threaded=True)

我在 __init__.py 的应用程序工厂如下所示:

def create_app(config_filename):
    app = CustomFlask(__name__)
    from dpc import mongo_models
    app.config.from_pyfile(config_filename)
    app.register_blueprint(retrieve, url_prefix="/retrieve")
    return app

我的 wsgi 文件如下所示:

import sys
import os

sys.path.insert(0, 'C:/dpc')

from dpc import create_app
app = create_app("config.py")

我的 httpd.conf 文件有这个:

<VirtualHost *:666>
    ServerName DPC

    WSGIScriptAlias / C:/dpc/dpc/dpc.wsgi

    <Directory C:\dpc >
        Options All
        AllowOverride None
        Require all granted
    </Directory>

</VirtualHost>

我有一个非应用程序工厂烧瓶应用程序 运行 在 Apache 上运行良好并且多年来一直很愉快,但是这个没有给我任何错误并且 returns 什么也没有。在过去的几个小时里,我一直在尝试各种更改并寻找解决方案,但无济于事。有什么想法吗?

您不能为配置文件使用相对路径名:

app = create_app("config.py")

必须是绝对路径。

阅读:

如果返回空响应或挂起,也请尝试设置:

WSGIApplicationGroup %{GLOBAL}

阅读:

WSGI脚本文件中的WSGI应用程序入口点也应设置为:

application = create_app("c:/dpc/dpc/config.py")

换句话说,application 而不是 app。这是因为 mod_wsgi 寻找 application。如果不这样做,您将收到 404 响应,但也可能在 Apache 错误日志中出现错误。