- 概要:使用 Nginx + Gunicorn + Flask 將Web應(yīng)用部署到服務(wù)器
最近我用flask把網(wǎng)站重構(gòu)完后,就需要將這個(gè)flask web應(yīng)用部署到服務(wù)器上,但是作為小白,部署是什么?怎么部署?自己google了很多資料 都講得零零碎碎的,也沒怎么看明白,滿頭霧水。
簡而言之 需要將Flask部署到服務(wù)器 你還需要兩個(gè)東西:
1.Web服務(wù)器:Nginx、Apache 用于處理和響應(yīng)HTTP請求
想要把Flask寫的Web應(yīng)用放到服務(wù)器上供他人訪問,你不可能讓用戶使用Flask的5000端口來訪問你的Web應(yīng)用
所以你需要Nginx這個(gè)Web服務(wù)器做一個(gè)反向代理 當(dāng)用戶訪問你的域名時(shí) nginx通過代理轉(zhuǎn)到本地的5000端口
2.WSGI容器:uWsgi、Gunicorn
Web框架(Flask)和Web服務(wù)器(Nginx)之間的通信,需要一套雙方都遵守的接口協(xié)議。而WSGI協(xié)議就是用來統(tǒng)一這兩者的接口的(WSGI是為Python語言定義的Web服務(wù)器和Web應(yīng)用程序或框架之間的一種簡單而通用的接口)
Gunicorn和uWSGI是常用的WSGI容器,Gunicorn直接用命令啟動(dòng),不需要編寫配置文件,相對uWSGI要容易很多,所以這里我也選擇用Gunicorn作為容器。(uWSGI讓我更迷糊 Gunicorn簡單點(diǎn))
我們開始吧
我沒有使用虛擬環(huán)境 因?yàn)樵品?wù)器上我只會(huì)存在一個(gè)Web應(yīng)用
Flask需要Python環(huán)境 你首先需要 安裝Python環(huán)境
安裝Flask、Gunicorn
pip install flask
pip install gunicorn
如果是按照本網(wǎng)站(我的其他文章)教程安裝的python3 不要忘記創(chuàng)建軟連接哦
ln /usr/local/python3.7/bin/gunicorn /usr/bin/gunicorn
- 安裝Nginx服務(wù)器
- 配置nginx.conf 反向代理
vi /usr/local/nginx/conf/nginx.conf
找到nginx.conf配置文件路徑方法可參見我的文章
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
在location中添加如上字段

-
這里使用一個(gè)簡單的Flask應(yīng)用做演示
5.1 借用下官網(wǎng)的入門小程序 將它保存為 hello.py
ar2.png
5.2 在hello.py所在的目錄下
gunicorn -w 4 hello:app-w 設(shè)置進(jìn)程數(shù)
-b 設(shè)置端口
默認(rèn)使用的是8000 可以通過-b 127.0.0.1:5000 設(shè)置到5000或其他端口ar3.png
通過你的域名就可以訪問了
你也可以通過 虛擬機(jī)搭建一個(gè)Web服務(wù)器 通過虛擬機(jī)的ip來訪問Web應(yīng)用
提示:需要打開80端口瀏覽器才能正常訪問
?文章由 靚木筆記 遷移簡書

