Django使用哪个web服务器?(2011年更新)
我问这个问题是因为我还是个初学者,读了差不多90%的关于Django的文章,但遇到的问题是:Django是为了部署而设计的,它是用Python写的,而Python可不是PHP!
当初学者在看Django教程时,会遇到很大的困扰,因为他们可能会找到一些“过时”的教程。比如,如果你看一个2008年的教程,你会看到里面说:
要部署Django,使用Apache,并且别忘了用另一个服务器来处理静态文件,比如用nginx作为反向代理!
但现在,我发现一些文章说,使用第二个服务器其实没必要,因为以前Django是用mod_python来提供服务的,这样会消耗很多资源!所以我有几个问题:
- 在VPS上,Apache和Nginx哪个更好?当然是用最新版本的!请不要说用lighty或cherokee……
- 如果答案是:用Nginx,那现在是用一个服务器好,还是两个服务器好?以前是两个服务器更好。
- 我发现我的脑袋里可用的空间不多,所以我不想再学其他东西,你觉得100%用Python的解决方案可以吗?比如CherryPy和Django搭配,这样就行了!不需要Apache,也不需要Nginx,只用Python语言就好!
- 从我读到的内容来看,Django和异步服务器不是“好朋友”,那用Nginx真的合适吗?
更新:添加了关于Django和异步的内容。
1 个回答
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都很简单,网上有很多资源。你不需要学太多就能搭建一个简单的环境。