为什么我需要为一个简单的 Flask 应用程序使用 Web 服务器、中间件等?

Rya*_*yan 5 python nginx cherrypy flask gunicorn

我一直在开发一个简单的 MVP 应用程序,现在是将其部署到我的生产服务器以进行更彻底的外部测试。它永远不会获得繁重的流量负载,这只是我需要一小群用户来测试的东西。

现在我总是选择三层。Nginx/Apache > Guncicorn/CherryPy/etc > Flask/Django/Pyramid/Bottle/etc

我知道这是常识。但我从来没有真正花时间去问为什么。我设置所有这些的目的是什么?

chu*_*ash 2

Django 文档对包含的开发服务器有这样的说法:

\n\n
\n

我们\xe2\x80\x99已将其包含在Django中,因此您可以\n快速开发内容,而无需配置\n生产服务器\xe2\x80\x93,例如Apache\xe2\x80\x93,直到您\xe2 \x80\x99 已准备好\n 生产。

\n\n

现在\xe2\x80\x99 是注意的好时机:不要\xe2\x80\x99 在类似于生产环境的任何\n 中使用此服务器。它\xe2\x80\x99s 仅用于开发时\n 使用。(我们\xe2\x80\x99从事的是制作Web框架,而不是Web\n服务器。

\n
\n\n

与开发服务器相比,Apache/Nginx 的两个优势立即浮现在脑海中:

\n\n
    \n
  • Django 开发服务器的设计并未考虑安全性。Apache/Nginx 被设计为通过网络公开,已经(并将继续)努力寻找/修复 Django 开发服务器还没有的漏洞。
  • \n
  • 您提供的许多请求都是静态文件(图像、JS、CSS)。Nginx 和 Apache 在服务这些资产方面将比用 Python 编写的服务器更加高效。
  • \n
\n