Django,为什么我在托管期间需要 nginx 和 uWSGI?
Django, why would I need nginx and uWSGI during hosting?
我有在 Pythonanywhere 平台上托管简单 Django 项目的经验(我不必安装 nginx 和 uWSGI)。
许多人将 nginx+Uwsgi 与 Django 一起使用,为什么需要这样做?
我希望nginx是一个web服务器、负载均衡器、邮件代理和HTTP缓存。 Uwsgi 是一个网络服务器网关接口。
Heroku / Pythonanywhere 平台是否默认包含所有这些东西?
PythonAnywhere 开发人员:是的,没错——我们确实安装了 nginx 和 uWSGI。当您在我们网站的“Web”页面上创建网站时,幕后发生的事情是(稍微简化)我们为您生成适当的 nginx/uWSGI 配置文件并启动一切,这样您只需要处理 Django 代码。
之所以需要这些工具(或 Apache 和 mod_wsgi 等类似工具)是因为 Django 的 built-in 网络服务器不是为生产用途而设计的。你可以 运行 它的“manage.py 运行server”命令让它在你自己的机器上提供页面,但是它使用的系统不是为了安全或效率而设计的——它只是为您提供了一种简单的方法来获得一些东西 运行ning 用于调试目的。对于其他 Python 网络框架(如 Flask 和 web2py)的 built-in 网络服务器也是如此。
nginx 旨在快速、高效和安全,因此当您的网站位于 public Internet 上并因此受到大量流量(如果您'幸运,您的网站起飞)以及黑客的滥用。当然,这并不是说它会自动使您的站点快速和安全,但至少这意味着您从正确的系统开始。它在提供静态文件(如 CSS、JavaScript、图像等)方面也比 Django 好得多,因为它就是为此而构建的。
uWSGI 旨在接收传入的 Web 请求并快速有效地将处理它们委托给多个工作进程,然后整理响应并将它们发送回 nginx。
当然,理论上所有这些都可以内置到 Django 中——但是 Django 团队要做到这一点需要做很多工作,而且他们 re-invent 轮子而不是专注于 Django 提供其真正好处的领域,使快速开发复杂网站变得容易。
我有在 Pythonanywhere 平台上托管简单 Django 项目的经验(我不必安装 nginx 和 uWSGI)。
许多人将 nginx+Uwsgi 与 Django 一起使用,为什么需要这样做?
我希望nginx是一个web服务器、负载均衡器、邮件代理和HTTP缓存。 Uwsgi 是一个网络服务器网关接口。
Heroku / Pythonanywhere 平台是否默认包含所有这些东西?
PythonAnywhere 开发人员:是的,没错——我们确实安装了 nginx 和 uWSGI。当您在我们网站的“Web”页面上创建网站时,幕后发生的事情是(稍微简化)我们为您生成适当的 nginx/uWSGI 配置文件并启动一切,这样您只需要处理 Django 代码。
之所以需要这些工具(或 Apache 和 mod_wsgi 等类似工具)是因为 Django 的 built-in 网络服务器不是为生产用途而设计的。你可以 运行 它的“manage.py 运行server”命令让它在你自己的机器上提供页面,但是它使用的系统不是为了安全或效率而设计的——它只是为您提供了一种简单的方法来获得一些东西 运行ning 用于调试目的。对于其他 Python 网络框架(如 Flask 和 web2py)的 built-in 网络服务器也是如此。
nginx 旨在快速、高效和安全,因此当您的网站位于 public Internet 上并因此受到大量流量(如果您'幸运,您的网站起飞)以及黑客的滥用。当然,这并不是说它会自动使您的站点快速和安全,但至少这意味着您从正确的系统开始。它在提供静态文件(如 CSS、JavaScript、图像等)方面也比 Django 好得多,因为它就是为此而构建的。
uWSGI 旨在接收传入的 Web 请求并快速有效地将处理它们委托给多个工作进程,然后整理响应并将它们发送回 nginx。
当然,理论上所有这些都可以内置到 Django 中——但是 Django 团队要做到这一点需要做很多工作,而且他们 re-invent 轮子而不是专注于 Django 提供其真正好处的领域,使快速开发复杂网站变得容易。