【问题标题】:Deploying flask on cherokee and uwsgi [closed]在切诺基和 uwsgi 上部署烧瓶 [关闭]
【发布时间】:2011-07-05 03:00:49
【问题描述】:

我正在尝试部署我使用 cherokee 和 uwsgi 开发的烧瓶网络应用程序。我安装了 cherokee 和 uwsgi 并且可以正常工作(我认为 uwsgi 可以工作),但是当我在 cherokee 中配置应用程序时,我只收到一个错误消息 uWSGI Error wsgi application not found。我使用了一个 xml 配置文件(我认为您需要使用 cherokee),其中包含以下内容:

<uwsgi>
    <pythonpath>/srv/mobile-site/app/</pythonpath>
    <app mountpoint="/">
        <module>mobilecms</module>
        <callable>app</callable>
    </app>
</uwsgi>

我的烧瓶应用程序显然位于/srv/mobile-site/app/ 文件夹中,主脚本为mobilecms.py

这个文件有问题吗?权限错误会导致这种情况吗?提前感谢您的帮助!

【问题讨论】:

    标签: python flask cherokee uwsgi


    【解决方案1】:

    在投入生产之前,始终尝试在没有网络服务器的情况下部署 uWSGI。

    uwsgi -x &lt;xmlfile&gt;

    它会打印很多信息/错误

    【讨论】:

    • +1 这对我最近了解我自己的类似设置发生了什么很有帮助
    • 我使用 uwsgi --http 0.0.0.0:8080 -x
    【解决方案2】:

    罗伯托的建议很好;它将帮助诊断错误发生的位置(即是 uWSGI 还是 Cherokee)。

    我最近也在努力让 uWSGI 和 Cherokee 一起工作。我最终在 Cherokee 中手动配置了 uWSGI 源:

    • 在 Cherokee Admin 的“Sources”选项卡下,添加一个昵称为“uWSGI Source”和套接字“/tmp/foo.sock”的新源
      • 将类型更改为“本地解释器”
      • 在解释器字段中,输入:/usr/local/bin/uwsgi -x /path/to/uwsgiconfig.xml
    • 在虚拟服务器的规则管理中,单击以添加新的行为规则。
      • 选择“目录”类型的手动配置,路径为“/”
      • 将处理程序设置为“uWSGI”
      • 滚动到底部并为平衡器设置“循环”
      • 添加“uWSGI Source”信息源
    • 保存更改并重新启动 Cherokee

    在我的 uWSGI 配置文件中,我有这样的内容(适用于您的示例):

    <uwsgi>
        <chdir>/srv/mobile-site/app/</chdir>
        <wsgi-file>/srv/mobile-site/app/mobilecms.py</wsgi-file>
        <callable>app</callable>
    
        <socket>/tmp/foo.sock</socket>
        <chmod-socket>666</chmod-socket>
    
        <master />
        <processes>1</processes>
    
        <disable-logging /><!-- Errors are still logged; this just disables request logging which Cherokee takes care of -->
    
        <vacuum />
        <no-orphans />
    </uwsgi>
    

    请注意,Cherokee uWSGI 向导不接受此作为有效配置文件(因此需要手动配置)。

    【讨论】:

    • 我已经这样做了,现在我得到一个 503 错误。我在提示符下尝试了uwsgi -x,现在我收到了这个错误:fopen(): No such file or directory [uwsgi.c line 2769]
    • @tposed:嗯。您需要找出找不到哪个文件/目录。尝试一一删除chdir、wsgi文件和socket选项,看看是哪一个导致了错误(可能不是socket)。确保您的目录和文件的权限设置为世界的读写权限(即 xx6 或 xx7)
    • @tposed:实际上,我查看了源代码中的那一行,这意味着打开您的主 WSGI 文件 (/srv/mobile-site/app/mobilecms.py) 时出错。仔细检查它是否存在并且它是世界可读的(使用ls -l 来查看权限,chmod a+r mobilecms.py 为所有人添加可读权限)
    • 我现在让 uwsgi 工作得很好!感谢那!但现在切诺基只给了我一个 500 内部错误。我检查了错误日志,它们是空的
    • @tomintated:尝试重新启动机器,然后再次启动 Cherokee——在第一次请求时,您应该在错误日志中看到 Cherokee 正在启动 uWSGI。这将显示发生了什么。错误日志不应为空——在您的 vServer 的日志选项卡下检查您的日志文件是否设置正确
    猜你喜欢
    • 2012-11-28
    • 2023-03-28
    • 1970-01-01
    • 2018-01-23
    • 2017-11-16
    • 2016-03-19
    • 1970-01-01
    • 2019-04-24
    • 1970-01-01
    相关资源
    最近更新 更多