centos 安裝supervisor,error: , [Errno 2] No such file or directory: file: /usr/lib64/python2.7/socket.py line: 224`,unix:///tmp/supervisor.sock no such file


supervisor監控進程狀態,異常退出時能自動重啟

它是通過fork/exec的方式把這些被管理的進程當作supervisor的子進程來啟動,這樣只要在supervisor的配置文件中,把要管理的進程的可執行文件的路徑寫進去即可。也實現當子進程掛掉的時候,父進程可以准確獲取子進程掛掉的信息的,可以選擇是否自己啟動和報警。supervisor還提供了一個功能,可以為supervisord或者每個子進程,設置一個非root的user,這個user就可以管理它對應的進程
文章中記錄了在使用的過程中出現的問題
error: <class 'socket.error'>, [Errno 2] No such file or directory: file: /usr/lib64/python2.7/socket.py line: 224

centos上安裝使用

1、yum安裝

yum install -y epel-release yum install -y supervisor systemctl enable supervisord # 開機自啟動 systemctl start supervisord # 啟動supervisord服務 systemctl status supervisord # 查看supervisord服務狀態 ps -ef|grep supervisord # 查看是否存在supervisord進程

2、配置文件

supervisor安裝成功之后,沒有提供默認的配置文件,可以通過運行echo_supervisord_conf程序生成supervisor的初始化配置文件,推薦不要在supervisord.conf中進行配置,這個可以理解為nginx.conf配置文件一個道理,下面介紹一下supervisord.conf配置文件中的內容以及要注意的事項

mkdir /etc/supervisor echo_supervisord_conf > /etc/supervisor/supervisord.conf

3、supervisord.conf配置文件參數說明注意分號開頭的為注釋

[unix_http_server] file=/tmp/supervisor.sock ;UNIX socket 文件,supervisorctl 會使用 ;chmod=0700 ;socket文件的mode,默認是0700 ;chown=nobody:nogroup ;socket文件的owner,格式:uid:gid  [inet_http_server] ;HTTP服務器,提供web管理界面 port=0.0.0.0:9001 ;Web管理后台運行的IP和端口,如果開放到公網,需要注意安全性 ;username=user ;登錄管理后台的用戶名 ;password=123 ;登錄管理后台的密碼  [supervisord] logfile=/tmp/supervisord.log ;日志文件,默認是 $CWD/supervisord.log logfile_maxbytes=50MB ;日志文件大小,超出會rotate,默認 50MB,如果設成0,表示不限制大小 logfile_backups=10 ;日志文件保留備份數量默認10,設為0表示不備份 loglevel=info ;日志級別,默認info,其它: debug,warn,trace pidfile=/tmp/supervisord.pid ;pid 文件 nodaemon=false ;是否在前台啟動,默認是false,即以 daemon 的方式啟動 minfds=10240 ;可以打開的文件描述符的最小值,默認 1024 minprocs=200 ;可以打開的進程數的最小值,默認 200  [supervisorctl] ;serverurl=unix:///tmp/supervisor.sock ;通過UNIX socket連接supervisord,路徑與unix_http_server部分的file一致 serverurl=http://0.0.0.0:9001 ; 通過HTTP的方式連接supervisord ; [program:xx]是被管理的進程配置參數,xx是進程的名稱 [program:xx] command=/opt/apache-tomcat-8.0.35/bin/catalina.sh run ; 程序啟動命令 autostart=true ; 在supervisord啟動的時候也自動啟動 startsecs=10 ; 啟動10秒后沒有異常退出,就表示進程正常啟動了,默認為1秒 autorestart=true ; 程序退出后自動重啟,可選值:[unexpected,true,false],默認為unexpected,表示進程意外殺死后才重啟 startretries=3 ; 啟動失敗自動重試次數,默認是3 user=tomcat ; 用哪個用戶啟動進程,默認是root priority=999 ; 進程啟動優先級,默認999,值小的優先啟動 redirect_stderr=true ; 把stderr重定向到stdout,默認false stdout_logfile_maxbytes=20MB ; stdout 日志文件大小,默認50MB stdout_logfile_backups = 20 ; stdout 日志文件備份數,默認是10 ; stdout 日志文件,需要注意當指定目錄不存在時無法正常啟動,所以需要手動創建目錄(supervisord 會自動創建日志文件) stdout_logfile=/opt/apache-tomcat-8.0.35/logs/catalina.out stopasgroup=false ;默認為false,進程被殺死時,是否向這個進程組發送stop信號,包括子進程 killasgroup=false ;默認為false,向進程組發送kill信號,包括子進程 ;包含其它配置文件 [include] files = /etc/supervisor/config.d/*.ini ;可以指定一個或多個以.ini結束的配置文件 ;files = /opt/absolute/filename.ini /opt/absolute/*.ini foo.conf config??.ini ; include示例
我們可以創建一個文件夾專門用來存放配置文件的,但是需要注意的是配置文件需要以.ini為文件格式,並且創建完成之后,需要在supervisord.conf中通過include引用進來

4、舉例單個配置文件

  [program:buy-order]  名稱

  process_name=%(program_name)s_%(process_num)02d

  command=php /www/wwwroot/blog.itmzl.com/mySelf/artisan queue:work redis --queue=buyOrder

  #映射自己的隊列

  startsecs = 5
  #啟動5秒后沒有異常退出,就當作已經正常啟動了 autostart=true
  autorestart=true
  autostart=true
  #(程序異常退出后自動重啟)
  user=www
  #(使用哪個用戶啟動)
  numprocs=8
  #(指定運行的 queue:work進程數並進行監視。當進程崩潰時會自動重啟)
  redirect_stderr=true
  #( 把stderr重定向到stdout,默認false )
  stdout_logfile=/run/log/moonkcake-queue-worker.log
  #(日志地址)
  stdout_logfile_maxbytes = 20MB
  #(stdout日志文件大小,默認50MB)
  stdout_logfile_backups = 20
  #(stdout日志文件備份數)

  startretries = 3
  #(啟動失敗后重試次數)

5、啟動Supervisor服務

  supervisord -c /etc/supervisor/supervisord.conf

  問題一:在其他的博客上,laravel文檔上的的啟動命令是 sudo supervisorctl reread但是在centos上使用這個命令會報錯error: <class 'socket.error'>, [Errno 2] No such file or directory: file: /usr/lib64/python2.7/socket.py line: 224

  解決辦法:supervisord -c /etc/supervisor/supervisord.conf來啟動

  centos上常用的命令

  supervisorctl status:查看所有進程的狀態

  supervisorctl stop :停止

  supervisorctl start :啟動

  supervisorctl restart 或者使用supervisorctl reload: 重啟

  supervisorctl update :配置文件修改后可以使用該命令加載新的配置

  supervisorctl reload: 重新啟動配置中的所有程序  

  如果出現報錯unix:///tmp/supervisor.sock no such file 可以在嘗試在上面所述命令后加上自己配置的supervisord例如 supervisorctl stop buy-order#( 指令來映射你的隊列連接 )

 

  使用supervisorctl start 等命令報錯Error: Server requires authentication

  問題的原因:因為我們在配置文件中配置了用戶名,密碼,所以,我們需要先進入supervisord,然后在執行status等命令

  執行順序:1、supervisord -u user

       2、賬號、密碼

       3、進入到了supervisord 然后在執行  status、stop等命令就可以了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM