阿里雲部署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專案(nginx+uWSGI)-2018.11阿里DjangoNginx
- 部署Django到阿里雲伺服器教程Django阿里伺服器
- Python系列之-Nginx+uWSGI+virtualenv多專案部署PythonNginx
- 使用nginx+uwsgi部署Django專案NginxDjango
- Docker 部署 Django+Uwsgi+Nginx+MySQL+VueDockerDjangoNginxMySqlVue
- 使用 uWSGI 和 Nginx 部署 Django 專案NginxDjango
- Linux部署Django (Nginx + uwsgi + Python3 + Django)的過程LinuxDjangoNginxPython
- [CentOS Python系列] 六.阿里雲搭建Django網站詳解CentOSPython阿里Django網站
- Nginx+uWSGI+Django部署web伺服器NginxDjangoWeb伺服器
- 阿里雲伺服器部署django專案阿里伺服器Django
- centos8-django專案部署 nginx+uwsgiCentOSDjangoNginx
- 教程|阿里雲+wordpress搭建個人部落格網站阿里網站
- 如何在阿里雲上部署 Django 應用程式阿里Django
- 阿里雲伺服器ECS搭建網站詳細教程阿里伺服器網站
- 阿里雲centos7部署Django專案阿里CentOSDjango
- centos+nginx+uwsgi部署django專案上線詳解CentOSNginxDjango
- CentOS7---部署Nginx+uwsgi+Django+python3環境CentOSNginxDjangoPython
- 基於Nginx和uwsgi搭建Django部署上線環境NginxDjango
- django專案在uwsgi+nginx上部署遇到的坑DjangoNginx
- Django+uWSGI+Nginx配置DjangoNginx
- 一學就會的django專案伺服器部署nginx-uwsgi-django/buildDjango伺服器NginxUI
- 【django輕量級框架】django專案部署到阿里雲伺服器流程Django框架阿里伺服器
- 把django專案部署到阿里雲伺服器流程Django阿里伺服器
- 基於Ubuntu16.04的django+uwsgi+nginx安裝部署UbuntuDjangoNginx
- 教程 Web 入門之部署到阿里雲Web阿里
- Django筆記四十四之Nginx+uWSGI部署Django以及Nginx負載均衡操作Django筆記Nginx負載
- .NET 8.0 網站部署到IIS教程網站
- Django + react + 阿里雲ecs 前後端分離部署上線DjangoReact阿里後端
- Nginx+uwsgi+Django 的web應用環境部署-完整記錄NginxDjangoWeb
- 阿里雲封禁大量“涉詐”網站阿里網站
- 騰訊雲 雲開發 部署 Blazor網站Blazor網站
- 阿里雲ubuntu16.4伺服器部署python3.6.2+django1.11.3網站的全過程,精細講解,本人親測!阿里Ubuntu伺服器PythonDjango網站
- Ubuntu+uWSGI部署Django專案【鴻篇鉅製,事無鉅細】UbuntuDjango
- 如何使用阿里雲搭建wordpress網站(圖文教程+小白專用+Linux版)?阿里網站Linux
- 阿里雲Freeswtich部署阿里
- 在阿里雲建網站體驗123阿里網站
- windows雲伺服器部署web網站Windows伺服器Web網站
- Linux學習,部署django專案到伺服器,及安裝python,uwsgi等LinuxDjango伺服器Python