美文网首页Python Web
Gunicorn+Supervisor部署Flask

Gunicorn+Supervisor部署Flask

作者: 北邮郭大宝 | 来源:发表于2020-02-03 22:02 被阅读0次

    Flask Web程序部署成服务,可以采用的一套方案是Gunicorn+Supervisor。

    1. 安装Gunicorn+Supervisor

    首先在项目的pipenv中,安装Gunicorn。

    pipenv install gunicorn
    

    接下来安装Supervisor,Mac安装参考了如下文章

    brew install supervisor
    

    完毕后,supervisor安装在/usr/local/Cellar/supervisor,其配置文件在
    /usr/local/etc/supervisord.conf,需要修改的地方有两处:

    • 最后一行修改如下,指定存放process配置文件的path
    [include]
    files = /usr/local/etc/supervisord.d/conf/*.conf
    
    • 打开注释(可选),浏览器访问127.0.0.1:9001,可以看到可视化界面
    [inet_http_server]         ; inet (TCP) server disabled by default
    port=127.0.0.1:9001        ; ip_address:port specifier, *:port for all iface
    username=user              ; default is no username (open server)
    password=123               ; default is no password (open server)
    

    新建文件夹/usr/local/etc/supervisord.d/conf/,最后执行

    supervisorctl -c /usr/local/etc/supervisor.conf
    

    2. 配置process

    以BlueBlog为例,首先需要把待部署的Web包装成WSGI服务,在blueblog的文件中新建wsgi.py

    import os
    from dotenv import load_dotenv
    
    dotenv_path = os.path.join(os.path.dirname(__file__), '.env')
    if os.path.exists(dotenv_path):
        load_dotenv(dotenv_path)
    
    from blueblog import create_app
    
    app = create_app('production')
    

    因为是生产环境,需要指定为生产的配置production。所以config.py文件也需要有对应的ProductionConfig。
    此外需要新建.env

    FLASK_APP=blueblog
    FLASK_ENV=production
    FLASK_CONFIG=production
    

    在/usr/local/etc/supervisord.d/conf/新建blueblog.conf,内容为:

    [program:blueblog]
    command=pipenv run gunicorn -w 4 -b 0.0.0.0:8000 wsgi:app
    directory=/Users/guoxingyu/Documents/work/python/flask/tmp/blueblog
    user=guoxingyu
    autostart=true
    autorestart=true
    stopasgroup=true
    killasgroup=true
    

    其中directory是Web代码的path,

    command是执行的命令,gunicorn -w 4 -b 0.0.0.0:8000 wsgi:app
    -w 指开4个worker

    -b 指bind 0.0.0.0:8000

    Supervisor会自动检测到新conf的加入,并执行相关配置

    通过supervisorctl stauts可以看到服务已经起来了。


    1580737878756.jpg

    访问浏览器也可以查阅Flask服务。


    1580737941412.jpg

    修改conf后可以update supervisorctl

    supervisorctl update
    

    此外电脑重启开机后,需要执行supervisord重启supervisor,再执行supervisorctl命令

    相关文章

      网友评论

        本文标题:Gunicorn+Supervisor部署Flask

        本文链接:https://www.haomeiwen.com/subject/bxtlxhtx.html