阿里雲部署django網站教程(Ngnix +Uwsgi + virtualenv)上篇
前言
最近在用django部署網站www.aihunter.cc,經歷各種坑後覺得有必要總結一下流程以備日後遺忘。在下閱讀眾多教程後覺得網上還是缺少介紹Ngnix +Uwsgi + virtualenv+django工作流程的概念文章,結合網上的材料和自己消化本教程將分為概念部分(上篇)以及操作部分(下篇),文中操作內容均為自己實際部署時的流程。另外在下職業非專業程式設計師若有錯誤可以在評論中指出,我會必第一時間糾正。
如何部署一個django專案呢?
django從本地環境部署到伺服器上需要伺服器軟體以及用於伺服器和應用程式之間通訊的
介面(閘道器)這兩部分支援。主流的django部署方式有apache + mod_wsgi 或 ngnix + uWSGI。
Apache 和 Nginx 部署有什麼不同呢?
兩者之間的差異主要在伺服器軟體的特點和部署流程上。
Apache的優點在於模組多、bug少。
Nginx的優點在於佔用資源少和配置簡潔。
其實以上都不是兩者之間的主要差別,我是小白角度來看它們的優點的(哪個最適合吊絲伺服器)。
Nginx 是什麼?它是怎麼樣處理請求的?
Nginx 是一個HTTP和反向代理伺服器,Nginx由基礎模組、核心模組、第三方模組這三類構成,Nginx的核心模組有HTTP模組、EVENT模組、MALL模組。
Nginx 處理流程是這樣的,當Nginx伺服器收到一個請求後就查詢Nginx資料夾下的配置檔案conf,將請求對映到一個location block,然後被對映的location中配置的各個指令會啟動不同的模組去完成對應工作。
WSGI \ uWSGI \ uwsgi 究竟是什麼鬼?它們有什麼作用呢?
WSGI是介面規範;uWSGI 是伺服器;uwsgi是uWSGI的自有協議。定義如下
WSGI
python對web應用和web伺服器互動的介面規範。
uWSGI
一個基於WSGI規範的web伺服器(當應用需要uWSGI和另外一個伺服器連線時,uWSGI身份就會變成中介軟體,如Ngnix +uWSGI +django,uWSGI就是一箇中介軟體)
uwsgi
uWSGI伺服器的自有協議,用於定義傳輸資訊的型別。
uWSGI負責將請求按照指定協議解析,然後把解析的結果設定到environ變數中,接著按照WSG規範回撥web應用,uWsgi預設回撥application函式,傳遞eviron和start_response兩個引數,最後接受web應用處理返回的結果。
virtualenv是什麼?
virtualenv是用來建立隔離的python環境,為應用建立一個獨立的安裝目錄,保證不同的執行條件下各應用的獨立性。
四者之間的是怎樣進行工作的?
首先,Nginx負責接受外部客戶端請求並對其htpp請求進行解包,若請求是靜態檔案則根據設定好的靜態檔案路徑返回對應內容。若請求是動態內容則將請求交給uWSGI伺服器(nginx和uWSGI使用socket通訊)。
然後,uWSGI伺服器根據wsgi協議解析並回撥virtualenv中的django應用。
接著,django則根據請求進行資料庫查詢和模版渲染等工作(總之就是返回一個響應內容)然後再逆方向返回到Nginx
最後,Nginx將響應交給客戶端。
相關文章
- 阿里雲部署Django專案(nginx+uWSGI)阿里DjangoNginx
- DJango部署 Gunicorn+Nginx+Django+supervisor+VirtualenvDjangoNginx
- 阿里雲部署Django專案(超詳細圖文教程) —— Part2. 使用Nginx, Gunicorn, virtualenv, supervisor 部署Django應用阿里DjangoNginx
- Ubuntu 14.04+Django 1.7.1+Nginx+uwsgi部署最簡記錄(精簡自uwsgi官網教程)UbuntuDjangoNginx
- 阿里雲部署Django專案(nginx+uWSGI)-2018.11阿里DjangoNginx
- Python系列之-Nginx+uWSGI+virtualenv多專案部署PythonNginx
- 使用 uWSGI 和 Nginx 部署 Django 專案NginxDjango
- Docker 部署 Django+Uwsgi+Nginx+MySQL+VueDockerDjangoNginxMySqlVue
- 使用nginx+uwsgi部署Django專案NginxDjango
- 部署Django到阿里雲伺服器教程Django阿里伺服器
- Nginx+uWSGI+Django部署web伺服器NginxDjangoWeb伺服器
- Django + Uwsgi + Nginx 實現生產環境部署DjangoNginx
- 【Python】Nginx+uwsgi+Django部署程式碼PythonNginxDjango
- centos8-django專案部署 nginx+uwsgiCentOSDjangoNginx
- 基於nginx和uWSGI在Ubuntu上部署DjangoNginxUbuntuDjango
- Linux部署Django (Nginx + uwsgi + Python3 + Django)的過程LinuxDjangoNginxPython
- Nginx+Django+uWSGI部署伺服器詳細解析NginxDjango伺服器
- Django-Nginx-uwsgiDjangoNginx
- 基於Nginx和uwsgi搭建Django部署上線環境NginxDjango
- django專案在uwsgi+nginx上部署遇到的坑DjangoNginx
- centos+nginx+uwsgi部署django專案上線詳解CentOSNginxDjango
- 一學就會的django專案伺服器部署nginx-uwsgi-django/buildDjango伺服器NginxUI
- CentOS7---部署Nginx+uwsgi+Django+python3環境CentOSNginxDjangoPython
- Nginx+uwsgi+Django 的web應用環境部署-完整記錄NginxDjangoWeb
- Django+uWSGI+Nginx配置DjangoNginx
- Django Mezzanine uwsgi nginx 配置DjangoNginx
- Django筆記四十四之Nginx+uWSGI部署Django以及Nginx負載均衡操作Django筆記Nginx負載
- 基於Ubuntu16.04的django+uwsgi+nginx安裝部署UbuntuDjangoNginx
- Ubuntu+uWSGI部署Django專案【鴻篇鉅製,事無鉅細】UbuntuDjango
- [CentOS Python系列] 六.阿里雲搭建Django網站詳解CentOSPython阿里Django網站
- 阿里雲部署Django專案(超詳細圖文教程)—— Part3. Django settings修改、PostgreSQL配置阿里DjangoSQL
- 阿里雲伺服器部署django專案阿里伺服器Django
- 如何在阿里雲上部署django(番外篇)阿里Django
- 阿里雲(ECS+RDS)部署PHP+MySQL網站初探阿里PHPMySql網站
- 網站部署網站
- 如何在阿里雲上部署 Django 應用程式阿里Django
- VirtualBox CentOS 7+Django+uwsgi+nginxCentOSDjangoNginx
- 教程|阿里雲+wordpress搭建個人部落格網站阿里網站