每个 Web 开发人员和程序员都说,如果您在 Django 项目上工作,永远不要在生产环境中使用 Django 提供静态和媒体文件,始终使用 Apache 或 Nginx 等 Web 服务器来提供这些文件。实际上,我从互联网上获得了很多关于如何在生产中使用 Django 来提供静态和媒体文件的参考资料,但另一方面,他们说永远不要使用 Django 提供静态和媒体内容,因为它效率低下并且可能不安全。为什么 Django 不适合在生产中提供静态和媒体内容。为什么使用网络服务器提供静态和媒体内容。
问问题
151 次
2 回答
1
您的问题的简单答案是,因为 Django 的主要角色不是提供静态/媒体文件。是的,它们非常好,并且它们已经包含了一小部分用于表现得像 Web 服务器,但它绝对不像 Apache 或 Ngnix 之类的反向代理。
使用 Apache 或 Ngnix 获得的额外功能是它们是生产就绪服务器,因此它们可以以比 Django 自己的服务器组件更安全和健壮的方式处理更多请求。
但是对于你自己的小项目,你当然可以使用 Django 而不需要实际的反向代理服务
于 2020-07-15T12:39:00.193 回答
0
Django runserver 并不打算在生产中使用,如文档所述
请勿在生产环境中使用此服务器。它没有经过安全审计或性能测试。(这就是它要保持的方式。我们的业务是制作 Web 框架,而不是 Web 服务器,因此改进此服务器以使其能够处理生产环境超出了 Django 的范围。)
通常你会使用像 uwsgi 这样的 wsgi 服务器来托管 python 应用程序,如果你查看文档,你会注意到他们建议使用 nginix 来有效地托管静态文件,并提示出于性能原因选择不同的服务器,并且你还有更多自定义位置的选项通过在前面放置 nginx 来托管它们(相同的服务器/不同的服务器/多个服务器等)
还有关于部署静态文件的django文档
于 2020-07-15T13:06:55.043 回答