supervisor for Mac

storefee發表於2020-06-17

參考資料

異常問題

  • error: <class ‘socket.error’>, [Errno 13] Permission denied: file: /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/socket.py line: 228

    // 加上 sudo
    sudo supervisorctl -c /usr/local/etc/supervisord.ini
  • Unlinking stale socket /usr/local/var/run/supervisor.sock

    find / -name supervisor.sock
    unlink /***/supervisor.sock  // 根據上一步 find中查詢的路徑執行unlink
  • supervisorctl操作Connection refused

    // 配置完應用之後,重新載入配置
    sudo supervisorctl -c /usr/local/etc/supervisord.ini
    supervisorctl> reload
  • error: <class ‘socket.error’>, [Errno 111] Connection refused: file: /usr/lib64/python2.7/socket.py line: 224

    // 檢查supervisord程式
    ps aux|grep supervisord

    // 結果是supervisord程式不在了,啟動supervisord, supervisorctl的相關命令就可以執行了

  • 不希望開機啟動

    // 每次啟動,指定配置檔案
    sudo supervisord -c /usr/local/etc/supervisord.ini
  • supervisord 沒有加上 sudo,supervisorctl即使加上 sudo,也會顯示沒有許可權

    ➜  supervisor.d supervisord -c /usr/local/etc/supervisord.ini
    ➜  supervisor.d sudo supervisorctl -c /usr/local/etc/supervisord.ini
    project1-laravel-queue:project1-laravel-queue_00   BACKOFF   unknown error making dispatchers for 'project1-laravel-queue_00': EACCES
    project1-laravel-queue:project1-laravel-queue_01   BACKOFF   unknown error making dispatchers for 'project1-laravel-queue_01': EACCES

最終配置與啟動

// 基本配置檔案
/usr/local/etc/supervisord.ini

// 根據上面檔案最後一行 incldue 新建目錄 
mkdir /usr/local/etc/supervisor.d

// 新建日誌檔案,同時修改所屬關係
-rw-r--r--   1 user1  staff  373  6  8 22:03 lumen-project1.ini

// lumen-project1.ini 內容
[program:project1-laravel-queue]
process_name=%(program_name)s_%(process_num)02d
command=php /Users/user1/sites/project1/artisan queue:work redis --queue=high,default,low --sleep=5 --tries=2 --timeout=60  --daemon
autostart=true
autorestart=true
user=gujinhe
numprocs=2
redirect_stderr=true
stdout_logfile=/var/log/supervisor/project1-queue.log

// 啟動 supervisord
sudo supervisord -c /usr/local/etc/supervisord.ini

// 啟動 
sudo supervisorctl -c /usr/local/etc/supervisord.ini

// 正常啟動會看到目前正在執行的各個配置好的程式
➜  supervisor.d sudo supervisorctl -c /usr/local/etc/supervisord.ini
project1-laravel-queue:project1-laravel-queue_00   RUNNING   pid 30378, uptime 0:06:43
project1-laravel-queue:project1-laravel-queue_01   RUNNING   pid 30377, uptime 0:06:43
supervisor>

// 幫助
supervisor> help

// 錯誤說明:
EACCES:訪問/執行許可權不足
EISDIR:目錄許可權不足,一般可能是日誌許可權問題,需要修改對應所屬和分組;或者資料夾重名等問題

注意事項

  • 每次修改event (實現了佇列介面的)最好重啟一次supervisor,否則無法及時生效
  • 可以在資料庫表 failed_jobs 中檢視失敗原因,也可以在supervisor中對應的日誌中檢視
本作品採用《CC 協議》,轉載必須註明作者和本文連結
努力是不會騙人的!

相關文章