1. 程式人生 > >Django項目部署(nginx+uWSGI+django+virtualenv+supervisor發布web服務器 )

Django項目部署(nginx+uWSGI+django+virtualenv+supervisor發布web服務器 )

通過命令 code 應用程序服務器 不同 靜態文件處理 運行 web服務 文件 mysq

一、簡介

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文件不正確

Django項目部署(nginx+uWSGI+django+virtualenv+supervisor發布web服務器 )