gpt4 book ai didi

django - 如何使用 gunicorn 部署 Django + Whitenoise 应用程序?

转载 作者:行者123 更新时间:2023-12-03 16:23:40 25 4
gpt4 key购买 nike

我正在使用 Whitenoise在我的 Django 应用程序中提供静态文件。我是不是 使用 Nginx。我计划将来在 Cloudfront 等 CDN 后面使用 Whitenoise。见 Whitenoise FAQs .

我一直在寻找处理这些问题的部署说明:

  • 由于我没有使用 Nginx,所以我打算将 gunicorn 直接绑定(bind)到端口 80。这会导致错误 - Permission Denied .我可以以 root 身份运行 gunicorn,但这似乎是一种不好的方法。
  • 如何处理 SSL 证书的东西?通常这是由 Nginx 等服务器处理的。

  • 编辑:我在 上部署我的应用程序Ubuntu 18.04 虚拟机 在谷歌云计算引擎上。

    P.S.:我的网站不会是一个非常高流量的网站。其他人已使用此配置来服务具有高流量的网站。看到这个 Squeezing every drop of performance out of a Django app on Heroku .

    最佳答案

    TL;博士

    我使用 nginx 作为 http 服务器。我在 nginx 中删除了与静态文件关联的配置,因此静态文件请求被传递到 wsgi 层(gunicorn)并由 Whitenoise 处理。因此,您可以按照任何“nginx + gunicorn + django”部署说明/教程进行操作,这些说明/教程可以通过简单的谷歌搜索轻松获得。

    这篇文章为我清除了它:Deploying your Django static files to AWS (Part 2) .

    长答案

    如前所述,有很多关于在 Heroku 上部署 Django + Whitenoise 应用程序的教程。正如评论中指出的:

    Heroku, which has its own proxy layer in the front end, and is therefore not at all relevant.



    在没有验证这个说法的情况下,我认为这一定是真的。 gunicorn 不是一个成熟的网络服务器。事实上 gunicorn 创建者强烈建议在代理服务器(例如 Nginx)后面使用它。 See docs .

    我很困惑,因为我一直认为 Nginx 只是一个反向代理。充当 反向代理 静态 Assets 只是 nginx 的功能之一。它提供了更多功能,例如缓冲慢速客户端,而 gunicorn 没有,这有助于防止拒绝服务攻击。

    我已经知道了。不使用 nginx 或任何其他网络服务器将是愚蠢的。

    Whitenoise 只是为静态文件设置适当的缓存头并使用 gzip/brotli 启用压缩。与 whitenoise.storage.CompressedManifestStaticFilesStorage 一起使用时,它会自动生成版本化的静态文件。例如。 /static/js/app.49ec9402.js如果您将文件作为 {%statis%} 'js/app.js' 放入模板中.版本化文件将 max-age 设置为 10 年,即永久缓存。

    如果你没有在 Heroku 上部署,你仍然需要一个像 Nginx 这样的 Web 服务器.因此,您可以按照任何“nginx + gunicorn + django”部署说明/教程进行操作,这些说明/教程可以通过简单的谷歌搜索轻松获得。其中之一是 Deploying your Django static files to AWS (Part 2) ,这帮助我解决了这个问题。

    关于django - 如何使用 gunicorn 部署 Django + Whitenoise 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55934127/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com