hyperf/docs/zh-hk/tutorial/supervisor.md
2023-03-02 00:11:26 +08:00

2.3 KiB

Supervisor 部署

SupervisorLinux/Unix 系統下的一個進程管理工具。可以很方便的監聽、啓動、停止和重啓一個或多個進程。通過 Supervisor 管理的進程,當進程意外被 Kill 時,Supervisor 會自動將它重啓,可以很方便地做到進程自動恢復的目的,而無需自己編寫 shell 腳本來管理進程。

安裝 Supervisor

這裏僅舉例 CentOS 系統下的安裝方式:

# 安裝 epel 源,如果此前安裝過,此步驟跳過
yum install -y epel-release
yum install -y supervisor  

創建一個配置文件

cp /etc/supervisord.conf /etc/supervisord.d/supervisord.conf

編輯新複製出來的配置文件 /etc/supervisord.d/supervisord.conf,並在文件結尾處添加以下內容後保存文件:

# 新建一個應用並設置一個名稱,這裏設置為 hyperf
[program:hyperf]
# 設置命令在指定的目錄內執行
directory=/var/www/hyperf/
# 這裏為您要管理的項目的啓動命令
command=php ./bin/hyperf.php start
# 以哪個用户來運行該進程
user=root
# supervisor 啓動時自動該應用
autostart=true
# 進程退出後自動重啓進程
autorestart=true
# 進程持續運行多久才認為是啓動成功
startsecs=1
# 重試次數
startretries=3
# stderr 日誌輸出位置
stderr_logfile=/var/www/hyperf/runtime/stderr.log
# stdout 日誌輸出位置
stdout_logfile=/var/www/hyperf/runtime/stdout.log

!> 建議同時增大配置文件中的 minfds 配置項,默認為 1024。同時也應該修改系統的 ulimit,防止出現 Failed to open stream: Too many open files 的問題。

啓動 Supervisor

運行下面的命令基於配置文件啓動 Supervisor 程序:

supervisord -c /etc/supervisord.d/supervisord.conf

使用 supervisorctl 管理項目

# 啓動 hyperf 應用
supervisorctl start hyperf
# 重啓 hyperf 應用
supervisorctl restart hyperf
# 停止 hyperf 應用
supervisorctl stop hyperf  
# 查看所有被管理項目運行狀態
supervisorctl status
# 重新加載配置文件
supervisorctl update
# 重新啓動所有程序
supervisorctl reload