Laravel 佇列安裝 supervisor 配置

Laravel技術社群發表於2020-06-28

我們先來簡單瞭解下 supervisor 的簡單用途。
1、supervisor 是用 Python 開發的程式管理程式;
2、python 在主流的 linux 發行版都已經內建了;
3、pip 則是 python 的一個包管理工具;
4、跟 php 的 composer 類似;
5、但是系統預設沒有安裝 pip ;

以下兩種安裝方式;

1、pip 安裝

yum install python-setuptools
easy_install pip
pip install supervisor  -- 或者-- easy_install supervisor
mkdir /etc/supervisor
echo_supervisord_conf > /etc/supervisor/supervisord.conf
mkdir -p /etc/supervisor/conf.d

2、yum 安裝(推薦)

yum install supervisor
mkdir /etc/supervisor
echo_supervisord_conf > /etc/supervisor/supervisord.conf
mkdir -p /etc/supervisor/conf.d

修改 supervisord.conf 配置

vim /etc/supervisor/supervisord.conf
新增以下內容(或者找到檔案位置,去掉前面的分號;[include]
files = /etc/supervisor/conf.d/*.conf

新增 laravel-worker.conf 檔案

vim /etc/supervisor/conf.d/laravel-worker.conf

加入內容

[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /www/你的路徑/artisan queue:work redis --sleep=3 --tries=3
autostart=true
autorestart=true
user=root
numprocs=1
redirect_stderr=true
stdout_logfile=/www/你的路徑/storage/logs/workers.log

儲存檔案

:wq

修改檔案許可權

chmod -R +x /etc/supervisor/conf.d

啟動 supervisord

supervisord -c /etc/supervisor/supervisord.conf

執行以下錯誤提示(問題1)

Error: Another program is already listening on a port that one of our HTTP servers is configured to use.  Shut this program down first before starting supervisord.

執行錯誤處理

supervisorctl shutdown

重新啟動

supervisord -c /etc/supervisor/supervisord.conf

如果出現這個錯誤:(問題2)

error: <class 'socket.error'>, [Errno 111] Connection refused: file: /usr/lib64/python2.7/socket.py line: 224

殺掉程式

pkill -9 supervisord

執行命令

sudo touch /var/run/supervisor.sock
sudo chmod 777 /var/run/supervisor.sock
sudo supervisorctl -c /etc/supervisor/supervisord.conf

再嘗試啟動

supervisord -c /etc/supervisor/supervisord.conf
sudo supervisorctl reload

檢視是否執行

ps -ef | grep 'supervisord'

依次執行如下命令,啟動 laravel-worker

sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start laravel-worker:*

啟動完成後,我們執行程式進行載入(任性其一即可,根據自身業務執行)

php /www/你的路徑/artisan queue:start

// Redis 程式
php /www/你的路徑/artisan queue:work redis --sleep=3 --tries=3
// database 程式
php /www/你的路徑/artisan queue:work database --sleep=3 --tries=3

更多內容請到關注公眾號 “Laravel技術社群” 分享更多內容。

本作品採用《CC 協議》,轉載必須註明作者和本文連結
讓程式設計成為一種習慣!

相關文章