美文网首页
Flask+Gunicorn+Nginx+Supervisor部

Flask+Gunicorn+Nginx+Supervisor部

作者: 爱睡觉的树 | 来源:发表于2018-07-06 15:25 被阅读0次

服务器系统:ubuntu 16.04 LTS python环境:3.6

Flask 

Flask是一个使用python代码编写的轻量级web框架,可以通过简易的配置快速实现各类web服务功能。常用于web_api、个人博客、中小型服务网站搭建。

flask的搭建流程就不细说了,大致如下: 1 通过pip 安装flask 依赖

        pip install flask

2 新建run.py文件 引入flask模块

        flask import Flask,request

        import json #通常还会引入json模块

        from flask_cors import CORS #跨域访问 cors 按需要配置

        app = Flask(__name__)

        CORS(app, supports_credentials=True) #可去除

        @app.route('/') 

        def hello_world():

             return 'Hello World!'

        @app.route('/test', methods=['GET'])

        def test():  # 导入:

        # 取参数

            text = request.args.get('text')

            return json.dumps(text)

        if __name__ == '__main__':

            app.run(debug=True,port=5000)

然后执行 python run.py 就可以在本地的5000端口看到helloworld界面了。

Gunicorn

这是一个被广泛使用的高性能的Python WSGI UNIX HTTP服务器,也有人选择uWsgi可以达到同样的效果。

首先安装:

pip install gunicorn

然后在flask 配置文件中添加如下代码:

        from werkzeug.contrib.fixers import ProxyFix

            app.wsgi_app = ProxyFix(app.wsgi_app)

这时候便在flask工程中引入了wsgi代理。gunicorn支持多种worker模式,包括:

1 sync - 默认,使用同步阻塞的网络模型

2 gevent - Requires gevent >= 0.13

3 tornado - Requires tornado >= 0.2 等

本教程选用gevent模式:

pip install gevent

使用下面命令便可通过gunicorn启动flask:

gunicorn -w 4 -b 0.0.0.0:5000 -k gevent run:app

(-w 4 表示启动4个worker -k gevent 表示选择gevent模式)

Nginx的对应配置 详见本博客另一篇教程,简单说就是把5000端口映射到nignx代理就行了,就可以实现通过nginx转发http请求。

supervisor 服务端运维的重点,系统中各类进程的守护者。由于不支持python3的环境,所以配置会稍微麻烦一点,我们需要通过virtualenv 创建一个python2虚拟环境。

pip install virtualenv

首先在自定义目录下创建 super 虚拟环境

virtualenv --distribute -p /usr/bin/python2 super

cd super

source bin/activate    #激活虚拟环境

./bin/pip install supervisor# 安装supervier

echo_supervisord_conf > supervisor.conf  # 生成 supervisor 默认配置文件

#热后便可以通过以下命令对supervisor进行操作:

supervisord -c supervisor.conf #通过配置文件启动supervisor

supervisorctl -c supervisor.conf status #察看supervisor的状态

supervisorctl -c supervisor.conf reload 重新载入 #配置文件

supervisorctl -c supervisor.conf start [all]|[appname] #启动指定/所有 supervisor管理的程序进程

supervisorctl -c supervisor.conf stop [all]|[appname] 关闭指定/所有 supervisor管理的程序进程

supervisor.conf中配置对应的gunicorn应用,其他类型的应用配置也类似,比如java的springboot。

[program:start_gunicorn]

command=/your/bin/path/to/gunicorn -w 4 -b 0.0.0.0:5000 -k gevent run:app

directory:/home/ubuntu/project/test1/ #run.py所在的目录

autostart=true

redirect_stderr=true

user=root

directory=/usr/local/qs-project/web

stdout_logfile=/var/log/test_test.log

如果要启用supervisor的web端:9001端口.

需要注释掉 配置文件中

[inet_http_server] 的所有子配置项

以及

[supervisorctl] 中的前四项

deactivate  #退出环境

至此,Flask的服务端部署教程结束。

相关文章

  • Flask+Gunicorn+Nginx+Supervisor部

    服务器系统:ubuntu 16.04 LTS python环境:3.6 Flask Flask是一个使用pytho...

  • 副部副部

    红红姐,曾馨说她想留部,特别想怎么办 咳咳正经一下,理由如下: (1)喜欢文艺部的工作 就是喜欢很一群小伙伴办晚会...

  • 部部经典 - 七部韩国电影推荐

    作为电影迷的我,空闲之余又来写写电影,浅谈观后感。这次推荐的主题是韩国电影,部部经典,找个慵懒的下午,挑一部窝在家...

  • 王家卫这八部电影,部部经典!

    一【旺角卡门】 影片于1988年6月9日在中国香港上映。影片讲述了黑道人物华为了照顾不成材的好友而跟黑道狠角色结仇...

  • 四部动画部部封神的今敏

    和你一起成为有趣的人,这里是爱智慧,我是淏渊。 如果说有什么人可以动摇宫崎骏在日本动画界的地位,那就只有今敏可以做...

  • 公关部?公关部!!!

    早就听说长理有一个神奇的部门叫公关部。哇,不看不知道一看吓一跳啊,面试第一天就被美丽的部长和美丽且帅气的副...

  • 制作纸板小卖部部

    今天我要制作一个纸板小卖部。首先准备充足的纸板。胶带,和小刀,木头。再找一个完整的 纸板。削掉上面的一部分...

  • 退部

    一年前,因为一个笑,来到一个组织。原来做一个决定也可以如此简单。学到最多的是耐心和真心。结识了一批人,为同一个目标...

  • 执勤部

    内容: 夜晚的泰晤士河是宁静而美丽的。对于英国兰人来说,它是,老父亲泰晤士。历史上的英国政府曾对泰晤士河的污染...

网友评论

      本文标题:Flask+Gunicorn+Nginx+Supervisor部

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