[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
~~~