flask筆記:部署flask

網上有不少種發佈部署flask的方式,這裏我使用的是Gunicorn、nginx發佈flask。python

先說明一下爲何不使用supervisor,以前我也是按照一些文章中的推薦採起nginx、gunicorn和supervisor的方式部署。但當我部署成功後,我發現了一個問題。linux

寫到這裏先介紹一下supervisor是什麼:網上正規的解釋爲supervisor是linux進程管理的工具。而我將其理解爲其對gunicorn命令封裝後的工具(固然不僅是針對gunicorn,像nginx也能夠用其管理,這裏是爲了方便理解)。

若是用supervisor啓動flask,那麼能夠當作:supervisor調用gunicorn把flask的服務啓動。nginx

再說回問題:當我用supervisor的命令啓動服務時,發現nginx的正則表達式的url路徑轉發規則發生了問題。致使訪問url地址發生跳轉不正常和404錯誤的現象。固然錯誤的緣由不排除我安裝配置的緣由,這裏不作詳細的解釋,只是我沒有解決其問題。但就像以前介紹的supervisor只是對進程的管理工具(也能夠理解爲對gunicorn命令的封裝),並不對服務自己有什麼影響,只是平常啓動、重啓、中止服務時命令行多了一些而已罷了。正則表達式

ok,下面說回正題,介紹如何部署flask。flask

1.安裝python、virtualenv、flask、nginx

這些前置工做這裏就不介紹了,網絡上有不少文檔和詳細的步驟能夠參考。api

2.建立項目

建立一個文件夾test,在該文件夾建立test.py文件網絡

mkdir test
cd test
touch test.py

編寫一個簡單的例子app

#encoding:utf-8

from flask import Flask

app = Flask(__name__)

@app.route('/')
def index():
    return 'hello woody'

@app.route('/test/')
def test():
    return 'test'

@app.errorhandler(404) 
def page_not_found(error): 
    return 'sorry that is my 404'

#if __name__ == '__main__':
#    app.run(host='0.0.0.0',port=5000,debug=True)

3.安裝gunicorn

最新版的virtualenv自帶了gunicorn,若是沒有,請在虛擬環境手動安裝工具

pip install gunicorn

4.啓動flask

進入剛建立的項目文件夾下,用命令行啓動url

cd test
gunicorn -w2 -b0.0.0.0:9016 test:app
-w指的是worker(啓動的進程),後面跟的數字是worker的數量

-b指的是bind(綁定ip),後面是ip:port地址和端口號,0.0.0.0表明全部地址

test指的是入口文件的文件名

app指的是入口文件中Flask()對象的變量名,這裏上面的程序中是app

注:若是想靜默啓動(後臺啓動),能夠在後面加個 -D 的參數

gunicorn -w2 -b0.0.0.0:9016 test:app -D

5.nginx配置

location /api/ {
    proxy_pass http://127.0.0.1:9016/;
    #proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
相關文章
相關標籤/搜索