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;
}
相关文章
相关标签/搜索