背景:PHP laravel隊列 使用Supervisor 進程監控管理系統
只能Unix系統
Supervisor 官網爲 http://supervisord.org/
安裝
yum install epel-release
yum install -y supervisor
配置文件
默認配置文件:/etc/supervisord.conf
vim /etc/supervisord.conf
例:新增一個laravel隊列的進程
; laravel
[program:laravel-worker] 被管理的進程配置參數,laravel-worker是進程的名稱
process_name=%(program_name)s_%(process_num)02d
command=php /data/demo/laravel/artisan queue:work --queue=high,low 程序啓動命令
autostart=true 在supervisord啓動的時候也自動啓動
autorestart=true 程序退出後自動重啓,可選值:[unexpected,true,false],默認爲unexpected,表示進程意外殺死後才重啓
user=root 用哪個用戶啓動進程,默認是root
numprocs=1 監控進程數
redirect_stderr=true 把stderr重定向到stdout,默認false
stdout_logfile=/data/demo/worker.log 日誌文件,需要注意當指定目錄不存在時無法正常啓動
[inet_http_server] ;HTTP服務器,提供web管理界面
port=0.0.0.0:9001 ; Web管理後臺運行的IP和端口,如果開放到公網,需要注意安全性
username=admin ; 用戶名 (default is no username (open server))
password=admin ; 密碼 (default is no password (open server))
常用命令
supervisorctl status 狀態
supervisorctl stop laravel-worker(名字) // 表示停止laravel-worker進程
supervisorctl stop all // 表示停止所有進程
supervisorctl start laravel-worker
supervisorctl restart laravel-worker
supervisorctl reread //重載
supervisorctl update //更新
重啓supervisor時,報錯:
supervisor “no such file” error.
unix:///tmp/supervisor.sock no such file
原因是服務器長期運行系統會清除tmp文件夾下的文件,我們只需要將tmp目錄修改一下即可。
打開配置好的supervisord.conf,將tmp替換爲var/run或者var/log具體看情況修改即可。
之後需要殺掉原來的進程。
ps -aux | grep supervisor
kill ***進程號
重啓服務
supervisord -c /etc/supervisord.conf