1. 程式人生 > >Django專案部署(nginx+uWSGI+django+virtualenv+supervisor釋出web伺服器 )

Django專案部署(nginx+uWSGI+django+virtualenv+supervisor釋出web伺服器 )

一、簡介

WSGI是Web伺服器閘道器介面。它是一個規範,描述了Web伺服器如何與Web應用程式通訊,以及Web應用程式如何連結在一起以處理一個請求,(接收請求,處理請求,響應請求)
基於wsgi執行的框架有bottle,DJango,Flask,用於解析動態HTTP請求
支援WSGI的伺服器
    wsgiref
        python自帶的web伺服器
    Gunicorn
        用於linux的 python wsgi Http伺服器,常用於各種django,flask結合部署伺服器。
    mode_wsgi
        實現了Apache與wsgi應用程式的結合
    uWSGI
        C語言開發,快速,自我修復,開發人員友好的WSGI伺服器,用於Python Web應用程式的專業部署和開發。

在部署python程式web應用程式時,可以根據效能的需求,選擇合適的wsgi server,不同的wsgi server區別在於併發支援上,有單執行緒,多程序,多執行緒,協程的區別,其功能還是近似,無非是請求路由,執行對應的函式,返回處理結果。


Django部署

Django的主要部署平臺是 WSGI,這是用於Web伺服器和應用程式的Python標準。

Django的 startproject管理命令設定一個簡單的預設WSGI配置,可以根據需要為您的專案進行調整,並指示任何符合WSGI的應用程式伺服器使用。

application 
使用WSGI部署的關鍵概念是應用程式伺服器用於與程式碼通訊的 application 可呼叫。它通常在伺服器可訪問的Python模組中作為名為 application 的物件提供。

startproject 命令建立包含這樣的 application 可呼叫的檔案 
<project_name>/wsgi.py. ,它被Django的開發伺服器和生產WSGI部署使用。 WSGI伺服器從其配置中獲取 application 可呼叫的路徑。 Django的內建伺服器,即 runserver 命令,從 WSGI_APPLICATION 設定讀取它。
uwsgi 
    django預設啟動 python  manager.py  runserver  它呼叫wsgiref單機web伺服器模組,效能很差
    在線上啟動django專案,選擇的是 uWSGI + django  ,使用多程序高效能的web伺服器執行,支援併發性更好
    
nginx
        
1.因為nginx處理併發的良好性 2.nginx對靜態檔案處理的良好性 3.nginx負載均衡的一個作用 supervisor 1、不在通過命令列的方式,啟動專案 2、進行程序管理(python、mysql、redis、nginx) 3、通過supervisr統一化管理linux程序 4、檢測到你服務掛了,自動重啟

重點標記:
 django建立時,會產生wsgi.py檔案
 mysite/mysite/wsgi.py
  #wsgi.py產生的application應用
  application = get_wsgi_application()
 可能出現的坑:
  1. no  application  xxxxxx   這個問題就是說,你指定的wsgi.py檔案不正確