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

时间:2011-08-20 17:29:21

标签: python django apache deployment

我问这个问题因为我是初学者而且我已经阅读了近90%的关于Django的文章,但问题是: Django已经制作并且部署有问题,它是python,而python不是PHP! 在阅读Django教程时,初学者遇到了大问题,因为他可以找到一个“过时”的教程,例如,如果你参加2008年制作的教程,你会看到他们说的如下:

  

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

但是现在,我发现一些文章说制作第二台服务器是没用的,因为在过去,Django是使用mod_python服务的,它使用了大量的资源!所以这是我的问题:

  1. 哪一个最适合VPS,Apache或Nginx,当然使用最新版本!请不要说:使用lighty或cherokee ......
  2. 例如,如果答案是:使用Ngnix,那么,使用一个或两个服务器是否更好,因为过去最好制作两个Web服务器?
  3. 当我检查了我的大脑时,我发现只有很少的自由空间可用,所以我不想学习别的东西,所以你认为100%的pythonic解决方案会好吗? CherryPy是一个完美的解决方案,意思是,CherryPy + Django和basta!没有Apache,没有Nginx,没有比python语言更多的学习!
  4. 从我读过的内容来看,Django和异步服务器并不是“好朋友”,那么使用Nginx真的很合适吗?
  5. 更新:添加(4)关于Django和异步。

1 个答案:

答案 0 :(得分:6)

  

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非常简单,并且有很多资源。你不需要非常了解它们来设置简单的东西。