[TOC]
## 安装
~~~
# 安装 epel 源,如果此前安装过,此步骤跳过
yum install -y epel-release
yum install -y supervisor
systemctl enable supervisord # 开机自启动
systemctl start supervisord # 启动supervisord服务
# systemctl status supervisord # 查看supervisord服务状态
~~~
## supervisord
> 运行`supervisor`时会启动一个进程`supervisord`,它负责启动所管理的进程,并将所管理的进程作为自己的子进程来启动,而且可以在所管理的进程出现崩溃时自动重启
~~~
systemctl restart supervisord
~~~
## supervisorctl (命令管理工具)
> 可以用来执行`start`、`stop`、`restart`等命令,来对这些子进程进行管理
```
# 启动 hyperf 应用
supervisorctl start hyperf
# 重启 hyperf 应用
supervisorctl restart hyperf
# 停止 hyperf 应用
supervisorctl stop hyperf
# 查看所有被管理项目运行状态
supervisorctl status
# 重新加载配置文件
supervisorctl update
# 重新启动所有程序
supervisorctl reload
```
## 配置hf进程管理
> 创建/etc/supervisord.d/hyperf.ini
> 原supervisor配置路径:/etc/supervisord.conf (里面含有files = supervisord.d/*.ini)
> 配置后,通过supervisorctl start hyperf 进行启动该进程
~~~
[program:hyperf]
# 设置命令在指定的目录内执行
directory=/servers/app/myproject/
# 这里为您要管理的项目的启动命令
command=/servers/php/bin/php ./bin/hyperf.php start
# 以哪个用户来运行该进程
user=root
# supervisor 启动时自动该应用
autostart=true
# 进程退出后自动重启进程
autorestart=true
# 进程持续运行多久才认为是启动成功
startsecs=1
# 重试次数
startretries=3
# stderr 日志输出位置
stderr_logfile=/servers/app/myproject/runtime/stderr.log
# stdout 日志输出位置
stdout_logfile=/servers/app/myproject/runtime/stdout.log
~~~