哪个网络服务器与 Django 一起使用? (更新于 2011 年使用)

Posted

技术标签:

【中文标题】哪个网络服务器与 Django 一起使用? (更新于 2011 年使用)【英文标题】:Which webserver to use with Django? (updated for use in 2011) 【发布时间】:2011-10-31 07:06:34 【问题描述】:

我问这个问题是因为我是一个初学者,我已经阅读了几乎 90% 的关于 Django 的文章,但问题是: Django 是制作的,但部署时遇到问题,它是 python,而 python 不是 php! 在阅读 Django 教程时,初学者会遇到很大的问题,因为他会发现一个“过时”的教程,例如,如果你看一个 2008 年制作的教程,你会看到它们是这样说的:

部署django,使用apache,别忘了使用另一台服务器 对于静态文件,例如 nginx 作为反向代理!

但是现在,我发现一些文章说创建第二个服务器是没有用的,因为过去,Django 使用 mod_python 提供服务,这会占用大量资源!所以这是我的问题:

    哪一个最适合VPS、Apache或Nginx,当然使用最新版本!请不要说:用lighty或cherokee... 例如,如果答案是:使用 Ngnix,那么,使用一台服务器还是两台服务器更好,就像过去一样,创建两台网络服务器更好? 当我检查我的大脑时,我发现只有很少的可用空间,所以我不想学习其他东西,所以你认为 100% pythonic 解决方案可以吗? CherryPy 是不是一个完美的解决方案,意思是 CherryPy + Django 和 basta!没有 Apache,没有 Nginx,没有比 Python 语言更多的学习! 据我所知,Django 和异步服务器不是“好朋友”,那么使用 Nginx 真的是一个不错的选择吗?

更新:添加 (4) 关于 Django 和异步的内容。

【问题讨论】:

我建议你把标题改成“django webserver configuration in 2011”之类的——这样可以方便其他人搜索到。 好的,我会的:)谢谢你的建议:) *更新:添加 (4) 关于 django 和异步 @abdel,在接受答案后,您不应添加到您的问题中。我建议您将其作为一个新问题发布,并专门链接到说他们不是“好朋友”的来源。 哈哈,我喜欢“CherryPy + Django 和 BASTA 【参考方案1】:

1 - 哪个最适合 VPS、Apache 或 Nginx,使用最新的 当然是释放!请不要说:使用 lighty 或 cherokee...

两者都可以正常工作。

2 - 例如,如果答案是:使用 ngnix,那么使用 使用一两台服务器,就像过去一样,最好制作两台 网络服务器?

我们提出的关键点是 Django/Python 不应该为您的静态资源提供服务。 “两台服务器”可以是不同的物理服务器、实例或虚拟服务器。下面是一个配置 nginx 直接服务静态文件,然后将动态请求传递给 Python 的示例:

来自https://code.djangoproject.com/wiki/DjangoAndNginx:

server 
    listen 80;
    server_name localhost;
    location /site_media  
        root /media/; # Notice this is the /media folder that we create above
    
    location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|mov) 
        access_log   off;
        expires      30d; 
    
    location / 
        # host and port to fastcgi server
        fastcgi_pass 127.0.0.1:8080;
        fastcgi_param PATH_INFO $fastcgi_script_name;
        fastcgi_param REQUEST_METHOD $request_method;
        fastcgi_param QUERY_STRING $query_string;
        fastcgi_param CONTENT_TYPE $content_type;
        fastcgi_param CONTENT_LENGTH $content_length;
        fastcgi_pass_header Authorization;
        fastcgi_intercept_errors off;
        

3 - 当我检查我的大脑时,我发现只有几个免费的 空间可行,所以我不想学习其他东西,你觉得呢 100% pythonic 解决方案可以吗? CherryPy 是否完美 解决方案,意思是CherryPy + Django 和basta!没有 Apache,没有 Nginx,没有 比python语言还学!

IMO,设置 Apache 或 nginx 非常简单,而且那里有很多资源。您无需对它们进行太多了解即可设置一些简单的东西。

【讨论】:

谢谢 :) 对不起,如果我没有提到它,但是我在 windows 上,你认为这是个好主意吗,nginx 似乎有一个错误,不超过 1024 个请求/秒!跨度> 你真的认为你会处理这么多请求吗? 你对 Windows 有依赖吗?为什么不购买*nix VPS?它应该更便宜,并且更好地支持python,Web服务器等。 请求是指从你的服务器收到一个GET、POST等,直到它返回响应给客户端。如果您的网站设计良好,此过程通常需要不到一秒钟的时间。我认为您可能会将请求与会话混淆。 如果它说“最大 1024 个请求/秒”,那么这不会影响您可以运行多少个会话。以 1024/s 速度运行的网站将是一个流量非常高的网站,您可能会首先遇到其他瓶颈(例如数据库延迟)。

以上是关于哪个网络服务器与 Django 一起使用? (更新于 2011 年使用)的主要内容,如果未能解决你的问题,请参考以下文章

哪个数据库与 Django 和 Python 3 一起使用? [关闭]

将 jquery 与 django rest api 放在一起

与 django 应用程序一起连续运行任务

如何指定 Django 测试服务器应该监听哪个 eth 接口?

django haystack:哪个搜索引擎会更好

django prefetch_related 是不是应该与 GenericRelation 一起使用