Nginx+gunicorn+Flask部署

先贴一下关系图:

首先,你要有一个flask应用,这个就不说了,其次安装nginx,安装流程也不说了,推荐安装lnmp,参考地址:https://lnmp.org/install.html。gunicorn的话直接pip install gunicorn就可以了。



flask结合gunicorn有两种方式,一种是用flask-script,直接在flask入口文件中继承gunicorn的Application,然后增加一个命令选项通过gunicorn启动flask,直接贴一下代码:



from flask_script import Command, Option


class GunicornServer(Command):

    def __init__(self, host='127.0.0.1', port=8000, workers=4):

        self.port = port

        self.host = host

        self.workers = workers


    def get_options(self):

        return (

            Option('-H', '--host',

                   dest='host',

                   default=self.host),


            Option('-p', '--port',

                   dest='port',

                   type=int,

                   default=self.port),


            Option('-w', '--workers',

                   dest='workers',

                   type=int,

                   default=self.workers),

        )


    def handle(self, app, host, port, workers):

from gunicorn.app.base import Application


class FlaskApplication(Application):

    def init(self, parser, opts, args):

        return {

            'bind': '{0}:{1}'.format(host, port),

            'workers': workers 

        }


    def load(self):

        return app


FlaskApplication().run()


manager = Manager(app)

manager.add_command("gunicorn", GunicornServer())




另一种方式是通过命令行启动gunicorn,可以指定gunicorn配置文件,示例如下:

import multiprocessing

bind = '127.0.0.1:8000'      #绑定ip和端口号

backlog = 512                #监听队列

chdir = '/home/test/server/bin'  #gunicorn要切换到的目的工作目录

timeout = 30      #超时

worker_class = 'gevent' #使用gevent模式,还可以使用sync 模式,默认的是sync模式


workers = multiprocessing.cpu_count() * 2 + 1    #进程数

threads = 2 #指定每个进程开启的线程数

loglevel = 'info' #日志级别,这个日志级别指的是错误日志的级别,而访问日志的级别无法设置




然后命令行启动:gunicorn wsgi:app -c gunicorn_config.py


下一步就是nginx配置,主要要注意的就是在server中,把location代理到127.0.0.1:8000就可以了。


最后就是用supervisor守护gunicorn进程,然后就大功告成。


网友评论

0条评论

发表

网友评论

0条评论

发表

最新评论

推荐文章

彩龙

Copyright © 2008-2019 彩龙社区(http://www.clzg.cn) 版权所有 All Rights Reserved.

免责声明: 本网不承担任何由内容提供商提供的信息所引起的争议和法律责任。

经营许可证编号:滇B2-20090009-7

下载我家昆明APP 下载彩龙社区APP