django生產環境部署


django生產環境部署

生產環境中的數據流

參考文檔:

wsgi詳解:https://blog.csdn.net/li_101357/article/details/52748323

wsgi協議介紹(萌新版):https://blog.csdn.net/j163you/article/details/80919360

廖雪峰web編程講解:https://www.liaoxuefeng.com/wiki/897692888725344/923057027806560

WSGI是什么?

  1. WSGI是一種規范,它定義了使用Python編寫的web app(django)與web server(uWSGI)之間接口格式,實現web app與web server間的解耦。

  2. WSGI沒有官方的實現,因為WSGI更像一個協議,只要遵照這些協議,WSGI應用(Application)都可以在任何服務器(Server)上運行。

  3. WSGI實質:WSGI是一種描述web服務器(如nginx, uWSGI等服務器)如何與web應用程序(如用Django、Flask框架寫的程序)通信的規范、協議。

為什么需要web協議

  1. 不同的框架有不同的開發方式,但是無論如何,開發出的應用程序都要和服務器程序配合,才能為用戶提供服務。
  2. 這樣,服務器程序就需要為不同的框架提供不同的支持,只有支持它的服務器才能被開發出的應用使用,顯然這樣是不可行的。
  3. web協議本質:就是定義了Web服務器和Web應用程序或框架之一的一種簡單而普通的接口規范。

Web協議介紹

**Web協議出現順序:CGI -> FCGI -> WSGI -> uwsgi**

1、**CGI**:最早的協議

2、**FCGI**:比CGI快

3、**WSGI**:Python專用的協議

4、**uwsgi**:比FCGI和WSGI,是uWSGI項目自有的協議,主要特征是采用二進制來存儲數據,議都是使用字符串,所以在存儲空間和解析速度上,都優於字符串型協議。		  								 

uwsgi是什么?

  1. 它是一個二進制協議,可以攜帶任何類型的數據。
  2. 一個uwsgi分組的4個字節描述了這個分組包含的數據類型。
  3. uwsgi是一種線路協議而不是通信協議,在此常用於在uWSGI服務器與其他網絡服務器的數據通信;

uWSGI是什么?(web服務器 和 nginx類似)

  1. 什么是uWSGI:uWSGI是一個全功能的HTTP服務器,實現了WSGI協議,uWSGI協議,http協議等。

  2. uWSGI** 作用:**它要做的就是把HTTP協議轉化成語言支持的網絡協議,比如把HTTP協議轉化成WSGI協議,讓Python可以直接使用。

  3. uWSGI特點:輕量級,易部署,性能比nginx差很多

    注:

     如果架構是Nginx+uWSGI+APP,uWSGI是一個中間件
    
     如果架構是uWSGI+APP,uWSGI是一個服務器
    

WSGI / uwsgi / uWSGI 這三個概念的區分

  • WSGI是一種通信協議,通常用戶django框架和uWSGI服務器之間通信。(如果說的更細致的話就是用來和Python WSGI model通信)

  • uwsgi是一種線路協議而不是通信協議,在此常用於在uWSGI服務器與其他網絡服務器的數據通信。

  • 而uWSGI是實現了uwsgi和WSGI等協議的Web服務器

django是什么?

  1. Django是一個Web框架,框架的作用在於處理request和reponse,其他的不是框架所關心的內容。

  2. 所以如何部署Django不是Django所需要關心的。

請求處理整體流程

  • nginx接收到瀏覽器發送過來的http請求,將包進行解析,分析url

  • 靜態文件請求:就直接訪問用戶給nginx配置的靜態文件目錄,直接返回用戶請求的靜態文件

  • 動態接口請求:那么nginx就將請求轉發給uwsGI,最后到達django處理

各模塊作用

  1. nginx:是對外的服務器,外部瀏覽器通過url訪問nginx, nginx主要處理靜態請求

  2. uWSGI:是對內的服務器,主要用來處理動態請求

  3. uwsgi:是一種web協議,接收到請求之后將包進行處理,處理成wsgi可以接受的格式,並發給wsgi

  4. WSGI:是python專用的web協議,根據請求調用應用程序(django)的某個文件,某個文件的某個函數

  5. django:是真正干活的,查詢數據等資源,把處理的結果再次返回給WSGI,WSGI將返回值進行打包,打包成uwsgi能夠接收的格式

  6. uwsgj接收wsgi發送的請求,並轉發給nginx,nginx最終將返回值返回給瀏覽器

Django + uWSGI方案

  1. 沒有nginx而只有uwsgi的服務器,則是Internet請求直接由uwsgi處理,並反饋到web項目中。

  2. nginx可以實現安全過濾,防DDOS等保護安全的操作,並且如果配置了多台服務器, nginx可以保證服務器的負載相對均衡.

  3. 而uWSGI則是一個web服務器,實現了WSGI協議(Web Server Gateway Interface), http協議等,它可以接收和處理請求,發出響應等。所以只用uwsgi也是可以的。

nginx和uWSGI特點

1) nginx的作用

  1. 反向代理,可以攔截一些web攻擊,保護后端的web服務器
  2. 負載均衡,根據輪詢算法,分配請求到多節點web服務器
  3. 緩存靜態資源,加快訪問速度,釋放web服務器的內存占用專項專用

2) uWSGI的適用

  1. 單節點服務器的簡易部署
  2. 輕量級,好部署


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM