Flask之部署


5.3 部署

當我們執行下面的hello.py時,使用的flask自帶的服務器,完成了web服務的啟動。在生產環境中,flask自帶的服務器,無法滿足性能要求,我們這里采用Gunicorn做wsgi容器,來部署flask程序。Gunicorn(綠色獨角獸)是一個Python WSGI的HTTP服務器。從Ruby的獨角獸(Unicorn )項目移植。該Gunicorn服務器與各種Web框架兼容,實現非常簡單,輕量級的資源消耗。Gunicorn直接用命令啟動,不需要編寫配置文件,相對uWSGI要容易很多。

區分幾個概念:

WSGI:全稱是Web Server Gateway Interface(web服務器網關接口),它是一種規范,它是web服務器和web應用程序之間的接口。它的作用就像是橋梁,連接在web服務器和web應用框架之間。

uwsgi:是一種傳輸協議,用於定義傳輸信息的類型。

uWSGI:是實現了uwsgi協議WSGI的web服務器。

我們的部署方式: nginx + gunicorn + flask

# hello.py

from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
    return '<h1>hello world</h1>'

if __name__ == '__main__':
    app.run(debug=True)

 

使用Gunicorn:

web開發中,部署方式大致類似。簡單來說,前端代理使用Nginx主要是為了實現分流、轉發、負載均衡,以及分擔服務器的壓力。Nginx部署簡單,內存消耗少,成本低。Nginx既可以做正向代理,也可以做反向代理。

正向代理:請求經過代理服務器從局域網發出,然后到達互聯網上的服務器。

特點:服務端並不知道真正的客戶端是誰。

反向代理:請求從互聯網發出,先進入代理服務器,再轉發給局域網內的服務器。

特點:客戶端並不知道真正的服務端是誰。

區別:正向代理的對象是客戶端。反向代理的對象是服務端。

安裝gunicorn

pip install gunicorn

 

查看命令行選項: 安裝gunicorn成功后,通過命令行的方式可以查看gunicorn的使用信息。

$gunicorn -h

 

直接運行:

#直接運行,默認啟動的127.0.0.1::8000
gunicorn 運行文件名稱:Flask程序實例名

 

指定進程和端口號: -w: 表示進程(worker)。 -b:表示綁定ip地址和端口號(bind)。

$gunicorn -w 4 -b 127.0.0.1:5001 運行文件名稱:Flask程序實例名

 

安裝Nginx

$ sudo apt-get install nginx

 

Nginx配置:

默認安裝到/usr/local/nginx/目錄,進入目錄。

啟動nginx:

#啟動
sudo sbin/nginx
#查看
ps aux | grep nginx
#停止
sudo sbin/nginx -s stop

 

打開/usr/local/nginx/conf/nginx.conf文件

server {
    # 監聽80端口
    listen 80;
    # 本機
    server_name localhost; 
    # 默認請求的url
    location / {
        #請求轉發到gunicorn服務器
        proxy_pass http://127.0.0.1:5001; 
        #設置請求頭,並將頭信息傳遞給服務器端 
        proxy_set_header Host $host; 
    }
}

 




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM