1、Supervisor 介绍
- 进程监控:Supervisor 可以监控指定的进程,并在进程异常终止或意外退出时进行自动重启。它可以通过轮询或使用事件通知机制来监控进程状态。
- 进程控制:Supervisor 提供了一组命令行工具和 API,用于管理进程的启动、停止、重启、重新加载配置等操作。你可以通过这些接口与 Supervisor 进行交互,管理你的进程。
- 进程组织:Supervisor 可以将多个相关的进程组织在一起,并按照定义的顺序依次启动或停止它们。这样可以方便地管理复杂的应用程序,确保它们正确地启动和关闭。
- 日志管理:Supervisor 可以收集和管理被监控进程的日志输出。你可以配置日志文件的位置和格式,并使用内置的日志查看器来查看和检索日志信息。
- 配置灵活:Supervisor 的配置文件是通过 INI 格式进行定义的,你可以根据需要指定进程的启动命令、工作目录、环境变量、启动优先级等各种参数。
2、supervisor 安装
1.安装supervisor依赖
# CentOS 6.7系统
cat /etc/redhat-release
CentOS release 6.7 (Final)
# 安装环境setuptools
wget --no-check-certificate https://pypi.python.org/packages/source/s/setuptools/setuptools-12.0.3.tar.gz
tar xf setuptools-12.0.3.tar.gz
cd setuptools-12.0.3
python setup.py install
#下载meld
wget https://pypi.python.org/packages/45/a0/317c6422b26c12fe0161e936fc35f36552069ba8e6f7ecbd99bbffe32a5f/meld3-1.0.2.tar.gz#md5=3ccc78cd79cffd63a751ad7684c02c91
tar zxvf meld3-1.0.2.tar.gz
cd meld3-1.0.2
python setup.py install
ldconfig
2.安装Supervisor
# 下载supervisor安装包
wget https://pypi.python.org/packages/7b/17/88adf8cb25f80e2bc0d18e094fcd7ab300632ea00b601cbbbb84c2419eae/supervisor-3.3.2.tar.gz
tar -zxvf supervisor-3.3.2.tar.gz
cd supervisor-3.3.2
python setup.py install
ldconfig
# 手动生成配置文件
echo_supervisord_conf > /etc/supervisord.conf
# 执行报错
File "/usr/bin/echo_supervisord_conf", line 5, in <module>
#下载meld
wget https://pypi.python.org/packages/45/a0/317c6422b26c12fe0161e936fc35f36552069ba8e6f7ecbd99bbffe32a5f/meld3-1.0.2.tar.gz#md5=3ccc78cd79cffd63a751ad7684c02c91
tar zxvf meld3-1.0.2.tar.gz
cd meld3-1.0.2
python setup.py install
ldconfig
#再次执行生成配置文件成功:
echo_supervisord_conf > /etc/supervisord.conf
# 启动(supervisord直接启动使用默认配置文件,或者-c 指定配置文件启动)
supervisord
supervisord -c /etc/supervisord.conf
3.如果运行以下报错
# 报错内容
from setuptools import setup, find_packages
ImportError: No module named setuptools
# 解决方法
下载:
在它的官网可以下载到安装包:
https://pypi.python.org/pypi/setuptools
下载路径:
wget --no-check-certificate https://pypi.python.org/packages/source/s/setuptools/setuptools-12.0.3.tar.gz
tar xvf setuptools-12.0.3.tar.gz
cd setuptools=12.0.3
python setup.py install
4、创建启动文件
# 设置该脚本为可以执行
chmod +x /etc/init.d/supervisord
# 设置为开机自动运行
sudo update-rc.d supervisord defaults
# 试一下,是否工作正常
service supervisord stop
service supervisord start
5、Supervisor 中创建一个任务
编辑配置文件:Supervisor 的配置文件位于 /etc/supervisor/conf.d/ 目录下,你可以在该目录中创建一个新的配置文件来定义你的任务。例如,你可以创建一个名为 mytask.conf 的文件。
[program:mytask]
command=/path/to/your/command
directory=/path/to/your/directory
user=yourusername
autostart=true
autorestart=true
redirect_stderr=true
stdout_logfile=/path/to/your/logfile
在这个配置文件中,你需要提供以下信息:
program:mytask
:定义任务的名称。command
:指定要运行的命令或脚本的完整路径。directory
:指定命令应该在哪个目录中执行。user
:指定以哪个用户身份来启动任务。autostart
:设置为true
表示当 Supervisor 启动时自动启动任务。autorestart
:设置为true
表示当任务意外终止时自动重启。redirect_stderr
:设置为true
表示将标准错误输出重定向到日志文件。stdout_logfile
:指定保存任务标准输出的日志文件路径。
根据你的需求,你可以进一步定制配置文件中的其他参数。
重新加载配置:在保存配置文件后,使用以下命令重新加载 Supervisor 的配置:
sudo supervisorctl reread
sudo supervisorctl update
6、常用启动命令
# 停止supervisor服务
sudo service supervisor stop
# 启动supervisor服务
sudo service supervisor start
# 关闭所有任务
supervisorctl shutdown
# 启动或停止服务
supervisorctl stop|start program_name
# 查看所有任务状态
supervisorctl status
# 读取有更新(增加)的配置文件,不会启动新添加的程序,也不会重启任何程序
supervisorctl reread
# 载入最新的配置文件,停止原有的进程并按照新的配置启动
supervisorctl reload
# 重启配置文件修改过的程序,配置没有改动的进程不会收到影响而重启
supervisorctl update