我們先來簡單瞭解下 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 協議》,轉載必須註明作者和本文連結