Django使用哪个web服务器?(2011年更新)

23 投票
1 回答
20733 浏览
提问于 2025-04-17 00:00

我问这个问题是因为我还是个初学者,读了差不多90%的关于Django的文章,但遇到的问题是:Django是为了部署而设计的,它是用Python写的,而Python可不是PHP!

当初学者在看Django教程时,会遇到很大的困扰,因为他们可能会找到一些“过时”的教程。比如,如果你看一个2008年的教程,你会看到里面说:

要部署Django,使用Apache,并且别忘了用另一个服务器来处理静态文件,比如用nginx作为反向代理!

但现在,我发现一些文章说,使用第二个服务器其实没必要,因为以前Django是用mod_python来提供服务的,这样会消耗很多资源!所以我有几个问题:

  1. 在VPS上,Apache和Nginx哪个更好?当然是用最新版本的!请不要说用lighty或cherokee……
  2. 如果答案是:用Nginx,那现在是用一个服务器好,还是两个服务器好?以前是两个服务器更好。
  3. 我发现我的脑袋里可用的空间不多,所以我不想再学其他东西,你觉得100%用Python的解决方案可以吗?比如CherryPy和Django搭配,这样就行了!不需要Apache,也不需要Nginx,只用Python语言就好!
  4. 从我读到的内容来看,Django和异步服务器不是“好朋友”,那用Nginx真的合适吗?

更新:添加了关于Django和异步的内容。

1 个回答

6

1 - 在VPS上,Apache和Nginx哪个更好用,当然要用最新版本!请不要说用lighty或cherokee...

这两者都可以正常工作。

2 - 如果答案是:用Nginx,那用一个服务器好还是两个服务器好呢?因为以前用两个网页服务器效果更好。

这里的关键是,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%用Python的解决方案可以吗?CherryPy可以做到,这样就完美了,CherryPy + Django就行了!不需要Apache,不需要Nginx,也不需要学比Python更多的东西!

在我看来,设置Apache或Nginx都很简单,网上有很多资源。你不需要学太多就能搭建一个简单的环境。

撰写回答