supervisor 是用Python開發(fā)的一個(gè)client/server服務(wù),是Linux/Unix系統(tǒng)下的一個(gè)進(jìn)程管理工具,不支持Windows系統(tǒng)。它可以很方便的監(jiān)聽、啟動(dòng)、停止、重啟一個(gè)或多個(gè)進(jìn)程。用Supervisor管理的進(jìn)程,當(dāng)一個(gè)進(jìn)程意外被殺死,supervisort監(jiān)聽到進(jìn)程死后,會(huì)自動(dòng)將它重新拉起,很方便的做到進(jìn)程自動(dòng)恢復(fù)的功能,不再需要自己寫shell腳本來控制。
說白了,它真正有用的功能是倆個(gè)將非daemon(守護(hù)進(jìn)程)程序變成deamon方式運(yùn)行對(duì)程序進(jìn)行監(jiān)控,當(dāng)程序退出時(shí),可以自動(dòng)拉起程序。
但是它無法控制本身就是daemon的服務(wù)。
1,安裝Supervisor
yum install epel-release yum install -y supervisor
2,生成配置文件
supervisord -c /etc/supervisord.conf
然后修改配置文件 vim /etc/supervisord.conf
將web服務(wù)打開,需要注意ip地址要寫*,否則外網(wǎng)訪問不了,而username和password就是登錄服務(wù)頁面的用戶名和密碼,可以改的復(fù)雜一點(diǎn),另外阿里云也需要向外網(wǎng)暴露一下9001端口
[inet_http_server] ; inet (TCP) server disabled by default port=*: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))
然后添加uwsgi服務(wù)的配置
[program:mypro] command =uwsgi /usr/local/bin/uwsgi --ini /root/js_back/js_back_uwsgi.ini ; 啟動(dòng)命令,可以看出與手動(dòng)在命令行啟動(dòng)的命令是一樣的 autostart = false ; 在 supervisord 啟動(dòng)的時(shí)候也自動(dòng)啟動(dòng) stopsignal=QUIT user=root startsecs = 5 ; 啟動(dòng) 5 秒后沒有異常退出,就當(dāng)作已經(jīng)正常啟動(dòng)了 startretries = 3 ; 啟動(dòng)失敗自動(dòng)重試次數(shù),默認(rèn)是 3 autorestart = true ; 程序異常退出后自動(dòng)重啟 redirect_stderr = true ; 把 stderr 重定向到 stdout,默認(rèn) false stdout_logfile_maxbytes = 20MB ; stdout 日志文件大小,默認(rèn) 50MB stdout_logfile = /root/js_back_uwsgi.log stderr_logfile = /root/js_back_err.log
最后我們知道,Supervisord只能控制非守護(hù)進(jìn)程,而uwsgi本身就具備守護(hù)進(jìn)程的配置,所以需要修改項(xiàng)目的uwsgi配置,將守護(hù)進(jìn)程配置注掉 vim js_back_uwsgi.ini
[uwsgi] chdir = /root/js_back module = js_back.wsgi master = true processes = 3 socket = 0.0.0.0:8001 vacuum = true pythonpath = /usr/bin/python3 pidfile = /root/js_back/js_back.pid #注釋掉daemonize模式,因?yàn)镾upervisor無法控制守護(hù)進(jìn)程服務(wù) #daemonize = /root/js_back/uwsgi.log
啟動(dòng)服務(wù)
supervisord -c /etc/supervisord.conf
如果想殺死服務(wù)可以輸入命令
killall -s INT /usr/bin/python
最后訪問服務(wù)管理界面 http://ip:9001,就可以管理你服務(wù)器上的服務(wù)