supervisor
一、安装supervisor安装
注:以下所有操作在CentOS7中进行
1.安装CentOS7扩展软件仓库
sudo yum install -y epel-release
2.安装supervisor
yum install -y supervisor
3.查看安装了哪些文件以及所在的路径
rpm -ql supervisor
4.修改并定义ini文件
step1:
找到supervisor 的配置的文件,可以使用例如: whereis supervisord.ini 或者 find / -name supervisor* 命令进行查询
step2:
修改配置文件,将配置文件最后一行修改ini 文件路径,意为:supervisor每次update都会加载这个自定义路径文件夹下的
所有后缀为ini的文件。
step3:
创建ini文件,加入supervisor的进程管理中, 实现服务器后台运行
[program:exmaple] # example是在supercisor中的进程名,随便取啥
command=/usr/local/bin/gunicorn -w 4 -b 127.0.0.1:91 run:app
# 上述代码为使用gunicorn 运行flask。run是你的文件名 :app指的是app = Flask(__name__)此处的app
或者是
command=/usr/local/bin/python3 /root/test/test.py
numprocs=1 ; number of processes copies to start (def 1)
autostart = true ; 在 supervisord 启动的时候也自动启动
startsecs = 1 ; 启动 1 秒后没有异常退出,就当作已经正常启动了
autorestart = true ; 程序异常退出后自动重启
startretries = 3 ; 启动失败自动重试次数,默认是 3
user = root ; 用哪个用户启动
redirect_stderr = true ; 把 stderr 重定向到 stdout,默认 false
stdout_logfile_maxbytes = 20MB ; stdout 日志文件大小,默认 50MB
stdout_logfile_backups = 10 ; stdout 日志文件备份数
stdout_logfile=/**自定义路径/gunicorn.log ; log 日志
stderr_logfile=/**自定义路径/gunicorn.error ; 错误日志的绝对路径
python 运行单个文件配置举例
其实若只是运行单个文件,可以直接使用nohup python test.py & (ps:需cd到test所在文件夹执行此命令) 即会实现服务器后台运行,同时会在test.py所在文件夹下生成nohup.out日志文件
[program:myProgram]
command=python /home/myname/test.py
numprocs=1 ; number of processes copies to start (def 1)
autostart = true ; 在 supervisord 启动的时候也自动启动
startsecs = 1 ; 启动 1 秒后没有异常退出,就当作已经正常启动了
autorestart = true ; 程序异常退出后自动重启
startretries = 3 ; 启动失败自动重试次数,默认是 3
user = root ; 用哪个用户启动
redirect_stderr = true ; 把 stderr 重定向到 stdout,默认 false
stdout_logfile_maxbytes = 20MB ; stdout 日志文件大小,默认 50MB
stdout_logfile_backups = 10 ; stdout 日志文件备份数
stdout_logfile=/**自定义路径/gunicorn.log ; log 日志
stderr_logfile=/**自定义路径/gunicorn.error ; 错误日志的绝对路径
gunicore 运行flask的配置文件举例
[program:myProgram]
command=/usr/local/bin/gunicorn -w 4 -b 127.0.0.1:91 flask:app
directory=/root/example/
numprocs=1 ; number of processes copies to start (def 1)
autostart = true ; 在 supervisord 启动的时候也自动启动
startsecs = 1 ; 启动 1 秒后没有异常退出,就当作已经正常启动了
autorestart = true ; 程序异常退出后自动重启
startretries = 3 ; 启动失败自动重试次数,默认是 3
user = root ; 用哪个用户启动
redirect_stderr = true ; 把 stderr 重定向到 stdout,默认 false
stdout_logfile_maxbytes = 20MB ; stdout 日志文件大小,默认 50MB
stdout_logfile_backups = 10 ; stdout 日志文件备份数
stdout_logfile=/**自定义路径/gunicorn.log ; log 日志
stderr_logfile=/**自定义路径/gunicorn.error ; 错误日志的绝对路径
二、启动supervisor
supervisord
# 启动supervisord并指定conf文件路径
supervisord -c 配置文件所在的绝对路径
e.g: supervisord -c /etc/supervisor/supervisord.conf
#关闭supervisord
supervisorctl shutdown
1.启动Supervisor服务
# 开启所有
supervisorctl start all
# 开启单个(配置文件里你起得进程名字-->[program:myProgram])
supervisorctl start myProgram
# 查看Supervisor 服务状态
supervisorctl status
2.修改了Supervisor ini文件或者conf文件配置后,需要更新服务
supervisorctl update # 更新supervisor的配置
supervisorctl reload # 重新加载项目到内存中
3.重启supervisor服务
supervisorctl restart # 不管当前是已经关闭还是正在运行
4.日志路径
tail -f /var/log/supervisor/supervisord.log
5.关闭supervisor的服务
supervisorctl stop all # 关闭所有
supervisorctl stop example # 关掉其中一个
三、关于报错
基本上所有的报错我都有过, 但是找来找去还是归类为一下三种:
- 没有启动supervisord -----> 运行supervisord命令
- 你的配置文件内容出错了 ------> 检查你的配置文件内容
- 你的需要运行的代码出错了 -----> 检查你的代码:
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。