35

我想部署一个 django 站点(它是 github 上的开源 edx 代码)。

我面临着在使用之间做出选择

  1. 带有 mod_wsgi 的 Apache
  2. nginx 与 gunicorn

我已经将 Apache 与 mod_wsgi 一起使用,它很酷,但我对第二个选项没有经验。

在速度方面以及在某种程度上,易用性方面,哪一个是更好的选择?

注意:我需要在端口 80 和 81 上运行两个不同的 django 站点,并从两个不同的子域访问它们。

4

4 回答 4

31

Nginx是一个非常轻巧且易于使用的解决方案,它与gunicorn一起允许我们运行任何 wsgi 应用程序并轻松扩展它。Nginx 更擅长处理请求,因为它不像 Apache 那样为每个请求生成一个新进程。

我已经为一个相关问题写了一个关于如何使用 nginx 部署 django 的答案:

使用 Gunicorn 和 nginx 部署 Django 项目

于 2013-12-11T20:28:13.150 回答
8

好吧,您使用 Nginx 获得的几毫秒不会对其他进程花费的时间产生巨大的影响。Nginx 可能会节省 RAM,但只有在具有少量 RAM 的服务器上才会有很大的不同。对于大型网站上的特定用途,可能会有一些更显着的差异,但这将成为专家的事情。

对大多数人来说,真正的区别可能是易于学习。我不觉得 Apache 特别难用,而且文档很干净。然而,我发现的大多数 Python 教程都是关于将 Nginx 与 Gunicorn 结合使用。

如果您已经知道如何将 Apache 与 Python 一起使用,那么使用它可能会更直接,除非您也想学习 Nginx 来提高您的简历。

但是,如果您是新手,这里有更多关于 Nginx 和 Python 的文档。它使它成为更容易的选择。

于 2019-02-26T22:21:32.073 回答
2

我对 nginx 和 gunicorn 有很好的经验。当我最终正确设置所有设置并使其运行时,它们继续运行良好。

对于 nginx 和 gunicorn,它们是:

* nginx configuration files (/etc/nginx/sites-enabled/ and /etc/nginx/nginx.conf)
* gunicorn configuration files (/etc/init/gunicorn.conf and /etc/gunicorn.d/) 

我看过 apache + mod_wsgi 的教程,设置起来似乎要简单得多。

于 2015-09-16T22:17:59.690 回答
2

我主要使用 nginx 和 gunicorn。我目前正在使用 apache + mod_wsgi。如果您的 Python 版本是 2.7,这实际上很容易,因为直接从包管理器安装 mod_wsgi 将正常工作。但是,如果您的代码使用不同的 Python 版本。mod_wsgi 必须从具有相同版本的源代码构建。如果你也从源代码安装了 Python,那么让整个 Web 应用程序工作的过程相当困难。

另一方面,Nginx 和 gunicorn 没有任何版本问题,因为 proxypass 参数可以很容易地将请求转发到 gunicorn。我们需要确保的是 gunicorn 使用与您的代码相同的 Python 版本运行。

于 2020-07-27T06:45:49.060 回答