Flask + Gunicorn + Supervisor 简易部署 web 应用

安装flask和gunicorn,supervisor

pip install flask,gunicorn,supervisor

启动一个简单的flask程序:

from flask import Flask

app = Flask(__name__)

@app.route('/')
def index():
    return 'hello world'
if __name__ == '__main__':
    app.debug = True
    app.run()

运行它。

python3 myapp.py

但 flask 自带的这个服务器功能非常弱,仅供开发调试时候使用,我们需要一个高效能的服务器 Gunicorn 来运行我们的 flask 项目。

用一下命令(使用到gunicorn):

/usr/local/bin/gunicorn -w 4 -b 0.0.0.0:5000 myapp:app
  • /usr/local/bin/gunicorn: gunicorn 的安装路径,如果是在虚拟环境中运行的话该路径需要适当修改。

  • -w 4 : workers ,是开的进程数量

  • -b 0.0.0.0:5000: bind,绑定 IP 和端口,0.0.0.0 让公网能够访问。

使用supervisor管理进程

supervisor 默认的配置文件是放在 /etc/supervisor 路径中的,里面会有一个默认配置文件 supervisord.conf 和一个文件夹 conf.d,该文件夹用来放置单独某个进程的配置文件。

打开 supervisord.conf 我们只看最下面一行:

[include]
files = /etc/supervisor/conf.d/*.conf

这里定义了 supervisor 会读取 /etc/supervisor/conf.d/ 路径下的 conf 格式的配置文件。(根据实际的路径查找)

我们进入 conf.d 路径,并新建一个配置文件 myapp.conf

cd conf.d
touch myapp.conf

编辑 myapp.conf 写入以下配置:

[program:myapp]
command=/usr/local/bin/gunicorn -w 4 -b 0.0.0.0:5000 myapp:app
directory=/root/myproject
autostart=true
autorestart=true  
  • command:启动命令,和上例启动 gunicorn 命令是一样的
  • directory:程序的启动目录,也就是 myapp.py 放在哪
  • autostart:自动开启
  • autorestart:进程挂了之后自动重启

现在就可以通过 supervisor 来管理 gunicorn 并运行 flask 项目了。

使用 supervisorctl 命令进入 supervisor 管理界面,首先更新配置:

> update

因为我们设置了自动启动,这时候项目已经启动了,hello world 页面能够正常工作了。

supervisor 还有以下常用命令:

> status    # 查看程序状态
> stop usercenter   # 关闭 usercenter 程序
> start usercenter  # 启动 usercenter 程序
> restart usercenter    # 重启 usercenter 程序
> reread    # 读取有更新(增加)的配置文件,不会启动新添加的程序
> update    # 重启配置文件修改过的程序

配置文件修改后也可以重启superviosr,并重读配置文件

supervisorctl stop superset
supervisorctl remove superset
supervisorctl reread
supervisorctl add superset

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值