一般應用都是部署在linux系統上,不會在windows上部署,emmm..所以有興趣的就瞧瞧吧哈哈
nginx工作原理:
nginx用於處理靜態文件,動態部分經由fastcgi 、scgi或uWSGI交給django處理!
1.下載nginx, 去http://nginx.org/en/download.html 下載,我下載的是1.17.6 stable版本。
2.配置文件/conf/nginx.conf
#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 D:/bomc_i; expires 30d; break; } location ~ ^/static/ { root D:/bomc_i; #Django項目所在目錄,不能包含static文件夾 expires 30d; break; } location ~ ^/ { 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 ssl; # server_name localhost; # ssl_certificate cert.pem; # ssl_certificate_key cert.key; # ssl_session_cache shared:SSL:1m; # ssl_session_timeout 5m; # ssl_ciphers HIGH:!aNULL:!MD5; # ssl_prefer_server_ciphers on; # location / { # root html; # index index.html index.htm; # } #} }
其他都沒有改動,最重要的部分就是在server{}配置項里添加FASTCGI的配置和靜態文件的路徑配置。
注意:配置location ~ ^/static/ 的位置,一定要在location ~ ^/的前面,而且不能單純的使用 location /static/ 或者location /static ,不然,static文件夾中的靜態文件都不能加載!!!
3. python 安裝flup(Python的FastCGI組件)
pip install flup
4. 運行nginx服務器
D:\nginx-1.17.6>start nginx
或
D:\nginx-1.17.6>nginx.exe
最好使用第一種,第二種會使你的cmd窗口一直處於執行中,Ctrl + C也不能終止,就算關閉cmd窗口,查看進程管理器也能看到之前還在運行並未隨着cmd窗口關閉而結束進程。如果使用了第二種方法,關閉nginx進程方法就是,重新打開cmd,輸入停止命令 nginx.exe -s quit 進程就關閉了。
5. 用FastCGI運行你的Django項目
D:\bomc_i>python manage.py runfcgi method=threaded host=127.0.0.1 port=8051
6. 若出現Unknown command: ‘runfcgi’ 錯誤,這是由於django版本,在1.9及1.9以上不支持runfcgi命令,如果要使用 runfcgi,將django的版本更換到 1.8 就可以了
7. 在瀏覽器中輸入http://localhost:8051即可訪問
8. 其它windows下nginx相關命令
停止:
D:\nginx-1.17.6>nginx.exe -s stop
或
D:\nginx-1.17.6>nginx.exe -s quit
ps:stop是快速停止nginx,可能並不保存相關信息;quit是完整有序的停止nginx,並保存相關信息。
重新載入Nginx:
D:\nginx-1.17.6>nginx.exe -s reload
當配置信息修改,需要重新載入這些配置時使用此命令。
重新打開日志文件:
D:\nginx-1.17.6>nginx.exe -s reopen
查看Nginx版本:
D:\nginx-1.17.6>nginx -v
參考:
https://www.cnblogs.com/kiddy/p/4530461.html
https://blog.csdn.net/weixin_33725272/article/details/91913165