【问题标题】:Deploying flask application factory on apache在 apache 上部署烧瓶应用工厂
【发布时间】:2017-08-17 06:04:47
【问题描述】:

我没有任何运气让它工作。

我运行良好的 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 上运行良好,并且多年来一直很开心,但是这个没有给我任何错误,也没有返回任何内容。在过去的几个小时里,我一直在尝试各种更改并寻找解决方案,但无济于事。有什么想法吗?

【问题讨论】:

    标签: python apache flask mod-wsgi


    【解决方案1】:

    您不能在以下配置文件中使用相对路径名:

    app = create_app("config.py")
    

    它必须是绝对路径。

    阅读:

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

    WSGIApplicationGroup %{GLOBAL}
    

    阅读:

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

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

    换句话说,application 而不是app。这是因为 mod_wsgi 会寻找 application。如果未完成,您将返回 404 响应,但也可能在 Apache 错误日志中出现错误。

    【讨论】:

    • 嗯,这两种变化都没有效果。我将 config.py 更改为 c:\dpc\dpc\config.py。我将完全消除对 config.py 部分的依赖,看看它是否有影响。
    • 您在代码中究竟是如何添加路径的?除非使用原始字符串,否则不能在路径中使用反斜杠。最好使用正斜杠。
    • 请参阅有关 WSGI 应用程序对象名称的进一步修复。确保您正在检查 Apache 错误日志。将 LogLevel info 添加到 Apache 配置,然后检查错误日志。应该显示 mod_wsgi 是否收到请求并在请求到达时加载 WSGI 脚本。
    • 是的,错误日志中根本没有出现任何内容,这很奇怪。我确实使用了原始字符串。
    • 啊!发现问题了,我没有告诉 apache 服务器监听新端口。这么笨。谢谢你的帮助!您提供的内容非常有用。
    猜你喜欢
    • 1970-01-01
    • 2020-10-11
    • 2016-03-19
    • 2022-01-06
    • 2019-04-24
    • 2015-01-14
    • 2021-05-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多