首先確保你的電腦裡已經安裝了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:nginxconfnginx.conf,我的設定檔如下,大家可根據需要自行修改:
?
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 |
#user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { root html; index index.html index.htm; } #error_page 404 /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_index index.php; # fastcgi_param SCRIPT_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 { # deny all; #} # 靜態資源 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_name somename alias another.alias; # location / { # root html; # index index.html index.htm; # } #} # HTTPS server # #server { # listen 443; # server_name localhost; # ssl on; # ssl_certificate cert.pem; # ssl_certificate_key cert.key; # ssl_session_timeout 5m; # ssl_protocols SSLv2 SSLv3 TLSv1; # ssl_ciphers HIGH:!aNULL:!MD5; # ssl_prefer_server_ciphers on; # location / { # root html; # index index.html index.htm; # } #} } |
需要注意的是,對於不需要url rewrite的目錄,比如存放css和圖片的目錄,需要在設定檔裡指明,否則將無法訪問這些檔案
?
| 1 2 3 4 5 |
location ~ ^/static/ { root e:/gin/gin/; expires 30d; break; } |
最後一步就是運行nginx伺服器,並且用FastCGI運行你的Django項目了
進入nginx的目錄:
?
| 1 2 |
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操作的命令(來自官方文檔)
?
| 1 2 3 4 |
nginx -s stop quick exit nginx -s quit graceful quit nginx -s reload changing configuration, starting a new worker, quitting an old worker gracefully nginx -s reopen reopening log files |
大功告成,開始django之旅,ohye!!!