使用Gunicorn与Supervisor部署Flask

使用Gunicorn与Supervisor部署Flask

假如我们的项目目录在: /root/xubobo/project

项目结构如下图

项目结构

1. 安装virtualenv,激活虚拟环境
# 进入项目目录
cd /root/xubobo/project

# pip下载virtualenv
pip install virtualenv

# 新建虚拟环境
virtualenv venv

# 激活虚拟环境
source venv/bin/activate

# 激活环境之后,会在命令行前出现(venv字样)
2. 安装flask, 测试运行
# 安装flask
pip install flask

# 测试flask
python app.py
# 如果显示的是 Running on -----------等等,说明flask安装启动成功

3. 安装使用gunicorn

# 下载安装gunicorn
pip install gunicorn

# 使用gunicorn启动项目
gunicorn -w 3 -b 0.0.0.0:5000 --reload app:app 

------------------------------------------------------------
注意:
-w 3 开启3个进程
-b 0.0.0.0:5000 定义监听5000端口
app:app 启动文件app.py :项目中的flask应用变量名
--realod 监听到项目文件变动自动重启gunicorn 使之生效
--------------------------------------------------------------
4. 安装配置supervisor

实现程序的后台守护运行

也可以实现开机自动重启

# 下载安装supervisor, 请注意此时所在目录还是项目目录 /root/xubobo/project
pip install supervisor

# 初始化配置文件
echo_supervisord_conf > supervisor.conf

# 此时目录下多了一个配置文件, 修改此配置文件
vim supervisor.conf
# 在配置文件最底部加入如下配置
[program: githook]
command=/root/xubobo/githook/venv/bin/gunicorn -w 3 -b 0.0.0.0:5000 app:app   ; 启动命令
directory=/root/xubobo/githook                                   ; 项目的文件夹路径
startsecs=0                                                      ; 启动时间
stopwaitsecs=0                                                   ; 终止等待时间
autostart=true                                                   ; 是否自动启动
autorestart=true                                                 ; 是否自动重启
stdout_logfile=/data/python/SMT/log/gunicorn.log                 ; log 日志
stderr_logfile=/data/python/SMT/log/gunicorn.err                 ; 错误日志

# 然后保存退出vim界面

# 指定配置文件来启动supervisord
supervisord -c supervisor.conf

# 检查状态
supervisorctl -c supervisor.conf status
# 可以看到 githook 应用已经是RUNNING状态了

4.1 supervisor的常用命令
# 通过配置文件启动supervisor
supervisord -c supervisor.conf       

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

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

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

# 关闭指定/所有 supervisor管理的程序进程
supervisorctl -c supervisor.conf stop [all]|[appname]
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
nginx是一个高性能的HTTP和反向代理服务器,可以用来处理静态文件和动态请求。gunicorn是一个Python WSGI HTTP服务器,可以将Flask应用程序部署到生产环境中。supervisor是一个进程控制系统,可以用来管理和监控进程。这三个工具可以一起使用部署Flask应用程序。 以下是使用nginx,gunicornsupervisor部署Flask应用程序的步骤: 1. 安装nginx,gunicornsupervisor。 2. 编写Flask应用程序,并使用工厂函数构建应用程序对象。 3. 创建一个gunicorn配置文件,例如gunicorn.conf.py,指定工作进程数和线程数。 4. 使用gunicorn启动Flask应用程序,例如: ```shell gunicorn -c gunicorn.conf.py "my_project:create_app()" ``` 这将启动一个gunicorn进程,监听8000端口,并将请求转发到Flask应用程序。 5. 配置nginx,将请求转发到gunicorn进程。例如,在nginx.conf文件中添加以下内容: ```nginx server { listen 80; server_name example.com; location / { proxy_pass http://127.0.0.1:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } ``` 这将将所有请求转发到gunicorn进程,并将请求头中的一些信息传递给Flask应用程序。 6. 使用supervisor管理gunicorn进程。例如,在supervisor.conf文件中添加以下内容: ```ini [program:gunicorn] command=/path/to/gunicorn -c /path/to/gunicorn.conf.py "my_project:create_app()" directory=/path/to/project user=user autostart=true autorestart=true stopasgroup=true killasgroup=true ``` 这将启动一个名为gunicorn的进程,并在系统启动时自动启动该进程。如果该进程崩溃或被杀死,supervisor将自动重新启动该进程。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值