开发者

Which webserver to use with Django? (updated for use in 2011)

I am asking this question because I am a beginner and I've read almost 90% of articles speaking about Django, but the problem is: Django was made and had problems for deploying, it is python, and python is not PHP! When reading Django tutorials, a beginner is in big problem, because he can find a tutorial "outdated" for example if you take a tutorial made in 2008 you'll see that they speak like the following:

to deploy django, use apache, and dont forget to use another server for static files, for example nginx as a reverse proxy!

But now, I found some articles saying开发者_开发百科 that making a second server is useless because in the past, Django was served using mod_python which uses a lot of resources! So here is my question:

  1. Which one is the best for VPS, Apache or Nginx, using the latest release of course! Please dont say: use lighty or cherokee...
  2. If, for example, the answer was: use Ngnix, then, is it better to use one server or two, as in the past it was better to make two webservers?
  3. When I've checked my brain, I've found that there is only few free space avalaible, so I don't want to learn something else, so do you think a 100% pythonic solution will be ok? CherryPy does it be a perfect solution, mean, CherryPy + Django and basta! no Apache, no Nginx, no more learning than python language!
  4. From what I've read, Django and asynchronous servers are not "good friends", so does really get a good choise to use Nginx?

Updated: added (4) about Django and asynchronous.


1 - which one is the best for VPS, Apache or Nginx, using the latest release of course! please dont say: use lighty or cherokee...

Either will work fine.

2 - if for example the answer was: use ngnix, then, is it better to use one server or two, as in the past it was better to make two webservers?

The key point that is being made is that Django/Python should not serve your static resources. "Two servers" could be different physical servers, or instances, or virtual servers. Here's an example of configuring nginx to serve static files directly and then pass dynamic requests to Python:

From 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 - when i've checked my brain, i've found that there is only few free space aviable, so i dont want to learn something else, so do you think a 100% pythonic solution will be ok? CherryPy does it be a perfect solution, mean, CherryPy + Django and basta! no Apache, no Nginx, no more learning than python language!

IMO, setting up either Apache or nginx is pretty simple and there are lots of resources out there. You don't need to learn very much about them to setup something simple.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜