Apache + mod_wsgi vs nginx + gunicorn

时间:2013-08-04 22:38:11

标签: django apache nginx mod-wsgi gunicorn

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

我面临着使用

之间的选择
  1. Apache with mod_wsgi
  2. nginx with gunicorn
  3. 我已经将Apache与mod_wsgi一起使用了,它很酷,但我对第二个选项没有经验。

    在速度和某种程度上,易用性方面哪一种更好?

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

4 个答案:

答案 0 :(得分:20)

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

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

Deploying Django project with Gunicorn and nginx

答案 1 :(得分:0)

我对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的教程,设置起来似乎要简单得多。

答案 2 :(得分:0)

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

对于大多数人来说,真正的区别可能在于学习的便利性。我发现Apache并不是特别难于使用,并且文档是干净的。但是,我发现的大多数Python教程都是关于将Nginx与Gunicorn一起使用的。

如果您已经了解Apache,那么除非您也想学习Nginx来提高CV,否则可能更直接地使用它。

答案 3 :(得分:0)

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

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