當前位置:
首頁 > 最新 > Nginx+uwsgi部署Django應用

Nginx+uwsgi部署Django應用

CodingGo技術社區

自由的編程學習平台

本文目的:在centos7.x伺服器上利用nginx和uwsgi部署Django應用

0. 安裝python3

本文使用的伺服器是騰訊雲的centos7.0 64位,其他的Linux大同小異,部分安裝命令自行查詢。

首先安裝python3的環境,還有各種組件,一開始裝的時候各種問題都有,然後用了 @小小Ho 的讓Python3.6在Centos7.x上飛一會兒~這裡的一鍵腳本,順利裝完。

測試pip安裝

沒有報錯就是安裝好了py3

1. Django應用

從倉庫下載代碼,這裡假設django應用的文件夾叫myblog,應用的資料庫用的是mysql

接著是資料庫遷移

安裝好的mysql先設置密碼

還有設置遠程連接的話

然後新建django中用到的資料庫名,修改setting.py里的密碼,就可以進行資料庫遷移等。

然後打開伺服器的公網查看,可以載入就是work了,但是還沒有靜態文件的載入。

2.0 uwsgi & nginx

1,首先nginx 是對外的服務介面,外部瀏覽器通過url訪問nginx。

2,nginx 接收到瀏覽器發送過來的http請求,將包進行解析,分析url,如果是靜態文件請求就直接訪問用戶給nginx配置的靜態文件目錄,直接返回用戶請求的靜態文件,如果不是靜態文件,而是一個動態的請求,那麼nginx就將請求轉發給uwsgi,uwsgi 接收到請求之後將包進行處理,處理成wsgi可以接受的格式,並發給wsgi,wsgi 根據請求調用應用程序的某個文件,某個文件的某個函數,最後處理完將返回值再次交給wsgi,wsgi將返回值進行打包,打包成uwsgi能夠接收的格式,uwsgi接收wsgi 發送的請求,並轉發給nginx,nginx最終將返回值返回給瀏覽器。

3,要知道第一級的nginx並不是必須的,uwsgi完全可以完成整個的和瀏覽器交互的流程,但是要考慮到某些情況

安全問題,程序不能直接被瀏覽器訪問到,而是通過nginx,nginx只開放某個介面,uwsgi本身是內網介面,這樣運維人員在nginx上加上安全性的限制,可以達到保護程序的作用。

負載均衡問題,一個uwsgi很可能不夠用,即使開了多個work也是不行,畢竟一台機器的cpu和內存都是有限的,有了nginx做代理,一個nginx可以代理多台uwsgi完成uwsgi的負載均衡。

靜態文件問題,用django或是uwsgi這種東西來負責靜態文件的處理是很浪費的行為,而且他們本身對文件的處理也不如nginx好,所以整個靜態文件的處理都直接由nginx完成,靜態文件的訪問完全不去經過uwsgi以及其後面的東西。 原理:

2.1 uwsgi

先安裝配置uwsgi

測試一下是否可用:

運行

打開看到Hello world就說明已連通

接著在項目目錄下新建uwsgi.ini文件

參數的配置文檔在此:Python/WSGI 應用快速入門

然後運行:

打開就能訪問你的網頁了。

2.2 nginx

centos的nginx安裝, 地址:http://uwsgi-docs-cn.readthedocs.io/zh_CN/latest/WSGIquickstart.html

訪問ip可以看到上圖就安裝成功。

在/etc/nginx/conf.d下新建blog.conf

然後

然後再把uswgi服務開啟就可以訪問站點了

作者:yonggege,Python中文社區專欄作者

GitHub地址:https://github.com/wzyonggege


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Python中文社區 的精彩文章:

與其焦慮成疾,不如靜心學習
想要變得優秀,你得先知道「優秀」是什麼樣的

TAG:Python中文社區 |