Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 阿帕奇&x2B;mod#u wsgi vs nginx+;古尼科恩_Django_Apache_Nginx_Mod Wsgi_Gunicorn - Fatal编程技术网

Django 阿帕奇&x2B;mod#u wsgi vs nginx+;古尼科恩

Django 阿帕奇&x2B;mod#u wsgi vs nginx+;古尼科恩,django,apache,nginx,mod-wsgi,gunicorn,Django,Apache,Nginx,Mod Wsgi,Gunicorn,我想部署一个django站点(它是github上的开源edx代码) 我面临着在使用 带有mod_wsgi的Apache nginx与gunicorn 我已经将Apache与mod_wsgi结合使用,这很酷,但我没有第二种选择的经验 在速度和一定程度上的易用性方面,以下哪一项是更好的选择 注意:我需要在端口80和81上运行两个不同的django站点,并从两个不同的子域访问它们。Nginx是一个非常轻巧且易于使用的解决方案,与gunicorn一起,它允许我们运行任何wsgi应用程序并轻松扩展。 Ng

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

我面临着在使用

  • 带有mod_wsgi的Apache
  • nginx与gunicorn
  • 我已经将Apache与mod_wsgi结合使用,这很酷,但我没有第二种选择的经验

    在速度和一定程度上的易用性方面,以下哪一项是更好的选择


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

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

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


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

    嗯,使用Nginx获得的几毫秒不会对其他进程所花费的时间产生影响。Nginx可以节省RAM,但对于只有少量RAM的服务器来说,这只是一个很大的区别。对于大型网站的特定用途,可能会有一些更显著的差异,但这将成为一个专家事务

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

    如果您已经知道如何将Apache与Python结合使用,那么使用它可能会更直接,除非您也想学习Nginx来改进CV


    但是,如果您是新手,那么有更多关于使用Python的Nginx的文档。这使它更容易选择。

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


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

    Apache with gunicorn。您的Web服务器应该是一个纯粹简单的HTTP代理,并且不应该知道任何关于gunicorn的信息—apache所拥有的只是要代理的端口号。你的应用程序服务器不应该互相了解,或者他们生活在HTTP反向代理之下。Apache over nginx纯粹是因为mod_proxy_http有文档,而nginx。。。坦白地说,那些文件在哪里都很糟糕。你找到的任何文件都可能已经过时了。(我真的不太受欢迎。)哦,但是,这是一个判断电话,我只想结束这个问题,你不会得到一个实质性的答案而不触发一场火焰战,在这一点上,这个问题无论如何都会结束。你可能会发现这个有用的Apache支持多个多处理模型。从Apache 2.4开始,事件mpm模块是大多数类unix系统的默认模块。请参阅:更不用说使用django设置Apache+mod_wsgi非常困难。如果你也想用docker?算了吧。头疼了好几天。我知道这已经过时了,但在2020年7月使用Python 2.7并不是明智之举。。。Python 2于2020年1月1日被弃用