python3.6.8+gunicorn-20.0.4+supervisor-4.2.1部署flask项目教程

  1. 环境安装
下载:
gunicorn-20.0.4.tar.gz
supervisor-4.2.1.tar.gz
tar -zxvf   xxxxx
  1. 安装
进入加压目录下
python3  setup.py install
  1. 测试是否安装成功
检查安装包
pip3 list 
或者 import   gunicorn     与   import  supervisor 进行测试
  1. supervisor 配置文件生成
在/etc下创建
mkdir supervisor
进入python安装目录 bin 下
echo_supervisord_conf > /etc/supervisor/supervisord.conf
  1. 创建conf.d目录
mkdir conf.d
  1. 修改配置文件信息
vim /etc/supervisor/supervisord.conf     修改最后两行内容如下 注意去掉下面两行前得;

[include]
files =  /etc/supervisor/conf.d/*.conf
  1. 测试demo
创建  main_api.py
内容入下:
from flask import Flask
app = Flask(__name__)
 
@app.route('/api/demo',methods=['GET','POST'])
def test():
    reeturn 'hello'
 
if __name__ == '__main__':
    app.run(host='0.0.0.0',port=8080)
  1. 测试代码
python3 main_api.py

另开一个窗口
curl  http://0.0.0.0:8080/api/demo

输出  hello 
  1. supervisor 配置启动
;注意事项  gunicorn  若不是全局 则需要写道具体路径
[program:main_api_8765]
command=/usr/local/bin/gunicorn -b  0.0.0.0:8765 main_api:app -preload --timeout 120
directory=/opt/
user=root
autorestart=true
redirect_stderr=true 
stdout_logfile=/opt/logs/stdout.log
stderr_logfil=/opt/logs/stderr.log
loginfo = info


**************************  配置说明 **********************************
; [program:xx]是被管理的进程配置参数,xx是进程的名称
[program:xx]
command=/opt/apache-tomcat-8.0.35/bin/catalina.sh run  ; 程序启动命令
directory=/opt/		 ;接口文件所在的目录
autostart=true       ; 在supervisord启动的时候也自动启动
startsecs=10         ; 启动10秒后没有异常退出,就表示进程正常启动了,默认为1秒
autorestart=true     ; 程序退出后自动重启,可选值:[unexpected,true,false],默认为unexpected,表示进程意外杀死后才重启
startretries=3       ; 启动失败自动重试次数,默认是3
user=tomcat          ; 用哪个用户启动进程,默认是root
priority=999         ; 进程启动优先级,默认999,值小的优先启动
redirect_stderr=true ; 把stderr重定向到stdout,默认false
stdout_logfile_maxbytes=20MB  ; stdout 日志文件大小,默认50MB
stdout_logfile_backups = 20   ; stdout 日志文件备份数,默认是10
; stdout 日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(supervisord 会自动创建日志文件)
stdout_logfile=/opt/apache-tomcat-8.0.35/logs/catalina.out
stopasgroup=false     ;默认为false,进程被杀死时,是否向这个进程组发送stop信号,包括子进程
killasgroup=false     ;默认为false,向进程组发送kill信号,包括子进程
  1. 创建日志目录
在opt 目录下创建
mkdir logs
  1. 启动
supervisord -c supervisord.conf                             通过配置文件启动supervisor
supervisorctl -c supervisord.conf status                    察看supervisor的状态
supervisorctl -c supervisord.conf reload                    重新载入 配置文件
supervisorctl -c supervisord.conf start [all]|[appname]     启动所有/指定supervisor管理的程序进程
supervisorctl -c supervisord.conf stop [all]|[appname]      关闭所有/指定supervisor管理的程序进程

若出现port 占用问题 请查找 netstat -anp| grep  端口号  找到进程号kill 掉即可

启动单个项目: 配置文件中 program后面对应进行名称
eg:
supervisorctl -c supervisord.conf start  main_api_8765

  1. 进行状态查看
ps -ef | grep main_api_8765
  1. 进行接口测试
curl http://0.0.0.0:8765//api/demo

输出 hello
  1. 配置 开启自启动
vim  /usr/lib/systemd/system/supervisord.service
注意事项: supervisorctl 与  supervisord  要根据自己的所在目录不可全抄


[Unit]
Description=Supervisor daemon

[Service]
# Type=forking     # 次处注释 则需要再 /etc/supervisord.conf 中 nodaemon=false 改成true(自启动)
ExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.conf
ExecStop=/usr/bin/supervisorctl shutdown
ExecReload=/usr/bin/supervisorctl reload
KillMode=process
Restart=on-failure
RestartSec=42s

[Install]
WantedBy=multi-user.target
  1. 验证
systemctl enable supervisord

提示:
Created symlink from /etc/systemd/system/multi-user.target.wants/supervisord.service to /usr/lib/systemd/system/supervisord.service.

systemctl is-enabled supervisord
提示
enabled

表示设置成功

命令说明:

 service supervisor stop 停止supervisor服务
service supervisor start 启动supervisor服务
supervisorctl status        //查看所有进程的状态
supervisorctl stop 项目进程名       //停止 这个项目
supervisorctl start 项目进程名      //启动 这个项目
supervisorctl restart       //重启
supervisorctl update        //配置文件修改后使用该命令加载新的配置
supervisorctl reload        //重新启动配置中的所有程序
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值