代碼部分完成後,接下來是配置 Supervisor,用來進程守護。當隊列意外中止後,Supervisor 能夠重啓進程,保證隊列的穩定運行。php
yum install python-setuptools
、easy_install supervisor
進行安裝/etc/supervisor/
目錄,並生成默認配置文件supervisor.conf
文件進行修改,最終以下[unix_http_server] file=/var/run/supervisor.sock ; (the path to the socket file) chmod=0700 ; socket file mode (default 0700) ;[inet_http_server] ; inet (TCP) server disabled by default ;port=127.0.0.1:9001 ; (ip_address:port specifier, *:port for all iface) ;username=user ; (default is no username (open server)) ;password=123 ; (default is no password (open server)) [supervisord] logfile=/var/log/supervisor/supervisord.log ; (main log file;default $CWD/supervisord.log) logfile_maxbytes=50MB ; (max main logfile bytes b4 rotation;default 50MB) logfile_backups=10 ; (num of main logfile rotation backups;default 10) loglevel=info ; (log level;default info; others: debug,warn,trace) pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid) [rpcinterface:supervisor] supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface [supervisorctl] serverurl=unix:///var/run/supervisor.sock ; use a unix:// URL for a unix socket [include] files = /etc/supervisor/conf.d/*.conf
/etc/supervisor/conf.d
目錄,配置 laravel-worker.conf
文件以下[program:laravel-worker] process_name=%(program_name)s_%(process_num)02d command=php /usr/local/nginx/html/myLaravel/artisan queue:work autostart=true autorestart=true user=www-data numprocs=2 redirect_stderr=true stdout_logfile=/var/log/supervisor/laravel-worker.log
supervisord -c /etc/supervisor/supervisor.conf
啓動服務supervisorctl reread
、 supervisorctl update
、 supervisorctl start laravel-worker:*
一個插曲,有報錯 error: <class 'socket.error'>, [Errno 113] No route to host: file: /usr/lib64/python2.7/socket.py line: 571
,最終的解決辦法是帶上配置文件 supervisorctl -c /etc/supervisor/supervisor.conf reread
html
狀態正常,測試結果也是正常的。python
參考資料:配置 superviso、supervisor 安裝配置使用。nginx