在 cherokee 和 uwsgi 上部署 Flask

发布于 2024-10-19 16:22:44 字数 1459 浏览 5 评论 0原文

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

梦归所梦 2024-10-26 16:22:44

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

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

  • 在 Cherokee 管理中的“源”选项卡下,添加一个昵称“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 向导不接受此文件作为有效的配置文件(因此需要手动配置)。

Roberto's suggestion is a good one; it will help diagnose where the error is occurring (i.e. whether it's uWSGI or Cherokee).

I've also recently fought to get uWSGI and Cherokee to work together. I ended up configuring the uWSGI source in Cherokee manually:

  • In Cherokee Admin, under the "Sources" tab, add a new source with nickname "uWSGI Source" and socket "/tmp/foo.sock"
    • Change the type to "Local Interpreter"
    • In the interpreter field, enter: /usr/local/bin/uwsgi -x /path/to/uwsgiconfig.xml
  • In rule management for the virtual server, click to add a new behaviour rule.
    • Choose a manual configuration of type "Directory" with a path of "/"
    • Set the handler to "uWSGI"
    • Scroll to the bottom and set "Round Robin" for the balancer
    • Add the "uWSGI Source" information source
  • Save changes and restart Cherokee

In my uWSGI config file I have something like this (adapted to your example):

<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>

Note that the Cherokee uWSGI wizard doesn't accept this as a valid configuration file (hence the manual configuration).

夜未央樱花落 2024-10-26 16:22:44

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

uwsgi -x

会打印很多信息/错误

Always try uWSGI deploy without a webserver, before going in production.

uwsgi -x <xmlfile>

It will print a lot of information/errors

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文