windows下nginx+FastCGI+Django攻略
Django的部署可以有很多方式,采用nginx+uwsgi的方式是其中比较常见的一种方式。在这种方式中,我们的通常做法是,将nginx作为服务器最前端,它将接收WEB的所有请求,统一管理请求。nginx把所有静态请求自己来处理(这是NGINX的强项)。然后,NGINX将所有非静态请求通过uwsgi传递给Django,由Django来进行处理,从而完成一次WEB请求。可见,uwsgi的作用就类似一个桥接器。起到桥梁的作用。(NOTE:不使用nginx,只使用uwsgi+django也是可以实现WEB服务的。uwsgi也可以直接处理WEB请求。)
首先确保你的电脑里已经安装了Python和Django,接下来我们还需要两个组件,nginx服务器 和flup(Python的FastCGI组件)
nginx下载地址:http://nginx.org/en/download.html
flup下载地址:http://www.saddi.com/software/flup/dist/flup-1.0.2.tar.gz
与Linux下不同的是,nginx在windows下是以一个应用程序的方式运行,而不是以一个服务运行(难怪没人在windows服务器上用nginx),把刚刚下载好的两个压缩包都解压到C:\nginx\, C:\flup\(目录可自己选择,这里只做个演示)然后用python setup.py install 命令,安装flup,接着就要配置nginx了,打开C:\nginx\conf\nginx.conf,我的配置文件如下,大家可根据需要自行修改:
view plaincopyprint?
[*] #usernobody;
[*] worker_processes1;
[*] #error_loglogs/error.log;
[*] #error_loglogs/error.lognotice;
[*] #error_loglogs/error.loginfo;
[*] #pid logs/nginx.pid;
[*] events {
[*] worker_connections1024;
[*] }
[*] http {
[*] include mime.types;
[*] default_typeapplication/octet-stream;
[*] #log_formatmain'$remote_addr - $remote_user [$time_local] "$request" '
[*] # '$status $body_bytes_sent "$http_referer" '
[*] # '"$http_user_agent" "$http_x_forwarded_for"';
[*] #access_loglogs/access.logmain;
[*] sendfile on;
[*] #tcp_nopush on;
[*] #keepalive_timeout0;
[*] keepalive_timeout65;
[*] #gzipon;
[*] server {
[*] listen 80;
[*] server_namelocalhost;
[*] #charset koi8-r;
[*] #access_loglogs/host.access.logmain;
[*] location / {
[*] root html;
[*] indexindex.html index.htm;
[*] }
[*] #error_page404 /404.html;
[*] # redirect server error pages to the static page /50x.html
[*] #
[*] error_page 500 502 503 504/50x.html;
[*] location = /50x.html {
[*] root html;
[*] }
[*] # proxy the PHP scripts to Apache listening on 127.0.0.1:80
[*] #
[*] #location ~ \.php$ {
[*] # proxy_pass http://127.0.0.1;
[*] #}
[*] # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
[*] #
[*] #location ~ \.php$ {
[*] # root html;
[*] # fastcgi_pass 127.0.0.1:9000;
[*] # fastcgi_indexindex.php;
[*] # fastcgi_paramSCRIPT_FILENAME/scripts$fastcgi_script_name;
[*] # include fastcgi_params;
[*] #}
[*] # deny access to .htaccess files, if Apache's document root
[*] # concurs with nginx's one
[*] #
[*] #location ~ /\.ht {
[*] # denyall;
[*] #}
[*] # 静态资源
[*] location ~* ^.+\.(html|jpg|jpeg|gif|png|ico|css|js)$
[*] {
[*] root e:/gin/gin/;
[*] expires 30d;
[*] break;
[*] }
[*] location ~ ^/static/ {
[*] root e:/gin/gin/;
[*] expires 30d;
[*] break;
[*] }
[*] location ~ ^/ {
[*] # 指定 fastcgi 的主机和端口
[*] fastcgi_pass 127.0.0.1:8051;
[*] 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_param SERVER_PROTOCOL $server_protocol;
[*] fastcgi_param SERVER_PORT $server_port;
[*] fastcgi_param SERVER_NAME $server_name;
[*] fastcgi_pass_header Authorization;
[*] fastcgi_intercept_errors off;
[*] }
[*] }
[*] # another virtual host using mix of IP-, name-, and port-based configuration
[*] #
[*] #server {
[*] # listen 8000;
[*] # listen somename:8080;
[*] # server_namesomenamealiasanother.alias;
[*] # location / {
[*] # root html;
[*] # indexindex.html index.htm;
[*] # }
[*] #}
[*] # HTTPS server
[*] #
[*] #server {
[*] # listen 443;
[*] # server_namelocalhost;
[*] # ssl on;
[*] # ssl_certificate cert.pem;
[*] # ssl_certificate_keycert.key;
[*] # ssl_session_timeout5m;
[*] # ssl_protocolsSSLv2 SSLv3 TLSv1;
[*] # ssl_ciphersHIGH:!aNULL:!MD5;
[*] # ssl_prefer_server_ciphers on;
[*] # location / {
[*] # root html;
[*] # indexindex.html index.htm;
[*] # }
[*] #}
}
[*] 需要注意的是,对于不需要url rewrite的目录,比如存放css和图片的目录,需要在配置文件里指明,否则将无法访问这些文件
1
2
3
4
5
location ~ ^/static/ { root e:/gin/gin/;
expires 30d;
break;
}
[*] 最后一步就是运行nginx服务器,并且用FastCGI运行你的Django项目了
进入nginx的目录:
cd c:\nginx\ start nginx
[*] 然后在浏览器里访问http://loaclhost/ 就应该可以看到nginx的欢迎界面了。最后进入你的Django项目的根目录,然后用一下命令来运行服务器:
1
python manage.py runfcgi method=threaded host=127.0.0.1 port=8051
[*] 刷新localhost页面,你就能看到你的项目主页啦~~
补充一点windwos下nginx操作的命令(来自官方文档)
nginx -s stop quick exit
nginx -s quit graceful quit
nginx -s> nginx -s reopen reopening log files
转载初处:http://blog.csdn.net/yangchao228/article/details/7583868
页:
[1]