掃二維碼與項(xiàng)目經(jīng)理溝通
我們在微信上24小時(shí)期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
Supervisor是用Python開發(fā)的一套通用的進(jìn)程管理程序,能將一個(gè)普通的命令行進(jìn)程變?yōu)楹笈_(tái)daemon,并監(jiān)控進(jìn)程狀態(tài),異常退出時(shí)能自動(dòng)重啟。

Debian / Ubuntu可以直接通過apt安裝:
# apt-get install supervisor
然后,給我們自己開發(fā)的應(yīng)用程序編寫一個(gè)配置文件,讓supervisor來管理它。每個(gè)進(jìn)程的配置文件都可以單獨(dú)分拆,放在/etc/supervisor/conf.d/目錄下,以.conf作為擴(kuò)展名,例如,app.conf定義了一個(gè)gunicorn的進(jìn)程:
[program:app]
command=/usr/bin/gunicorn -w 1 wsgiapp:application
directory=/srv/www
user=www-data
其中,進(jìn)程app定義在[program:app]中,command是命令,directory是進(jìn)程的當(dāng)前目錄,user是進(jìn)程運(yùn)行的用戶身份。
重啟supervisor,讓配置文件生效,然后運(yùn)行命令supervisorctl啟動(dòng)進(jìn)程:
# supervisorctl start app
停止進(jìn)程:
# supervisorctl stop app
如果要在命令行中使用變量,就需要自己先編寫一個(gè)shell腳本:
#!/bin/sh
/usr/bin/gunicorn -w `grep -c ^processor /proc/cpuinfo` wsgiapp:application
然后,加上x權(quán)限,再把command指向該shell腳本即可。
supervisor還有許多選項(xiàng),默認(rèn)的autorestart為unexpected(異常退出),具體請參考supervisor文檔。

我們在微信上24小時(shí)期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流