????Supervisor 是 unix 系統(tǒng)上用于監(jiān)控和管理進(jìn)程的工具,我們在運(yùn)行 Laravel 開發(fā)的應(yīng)用時,可能會用到隊列和 Horizon。但是執(zhí)行它們的命令有個缺陷,就是關(guān)閉終端后,將停止運(yùn)行,這顯然是不合理的,所以我們需要使用 Supervisor 來管理它們。接下來介紹一下實(shí)現(xiàn)的步驟:
安裝 Supervisor
Supervisor 的官方文檔,這里有詳細(xì)的安裝和使用說明,我使用的 ubuntu 系統(tǒng),使用 apt-get 可以直接安裝。
# ubuntu
$ sudo apt-get install supervisor -y
# 通用的安裝方式(需要先安裝 pip)
$ pip install supervisor
配置使用
Supervisor 的配置文件在 /etc/supervisor 目錄下,supervisord.conf 是主配置文件,我們需要在同級目錄下的 conf.d 目錄中創(chuàng)建配置文件。
cd /etc/supervisor/conf.d
vim laravel-worker.conf
配置內(nèi)容
# 使用program 后的參數(shù)區(qū)分不同的應(yīng)用
[program: larave-worker-queue] # 隊列應(yīng)用
# 運(yùn)行的命令
command=php /www/laravel/artisan queue:listen
# 腳本運(yùn)行的用戶身份
user=root
process_name=%(program_name)s_%(process_num)d
# 應(yīng)用目錄
directory=/www/laravel
# 日志目錄
stdout_logfile=/www/laravel/storage/logs/supervisord.log
redirect_stderr=true
numprocs=1
[program: larave-worker-horizon] # horizon 應(yīng)用
command=php /www/laravel/artisan horizon
user=root
autostart=true
autorestart=true
process_name=%(program_name)s_%(process_num)d
directory=/www/laravel
stdout_logfile=/www/laravel/storage/logs/supervisord.log
redirect_stderr=true
numprocs=1
運(yùn)行
//啟動
sudo supervisord -c /etc/supervisor/supervisord.conf
// 查看運(yùn)行狀態(tài)
sudo supervisorctl status
運(yùn)行成功的話,隊列和 Horizon 就可以正常使用了!如果需要添加應(yīng)用需要先 kill掉 supervisor,然后重新啟動即可。
文章同步發(fā)布在我的個人博客中,傳送門Hesunfly Blog