Supervisor是用Python開發的一套通用的進程管理程序,能將一個普通的命令行進程變為后台daemon,並監控進程狀態,異常退出時能自動重啟。它是通過fork/exec的方式把這些被管理的進程當作supervisor的子進程來啟動,這樣只要在supervisor的配置文件中,把要管理的進程的可執行文件的路徑寫進去即可。也實現當子進程掛掉的時候,父進程可以准確獲取子進程掛掉的信息的,可以選擇是否自己啟動和報警。supervisor還提供了一個功能,可以為supervisord或者每個子進程,設置一個非root的user,這個user就可以管理它對應的進程。
在centos7上安裝supervisor,直接用yum進行安裝,若是不是的話,或者是其他,請准備好python2.4以上的版本環境
注意:
1. supervisord:supervisor的服務器端部分,用於supervisor啟動。
2. supervisorctl:啟動supervisor的命令行窗口,在該命令行中可執行start、stop、status、reload等操作。
3. 每次修改配置文件后需要進入supervisorctl,執行reload,改動部分才會生效。
1. 在centos7系統上進行安裝
2. 開啟supervisor,設置supervisor的自動啟動,查看supervisor
[root@ localhost ~]# systemctl start supervisord
[root@ localhost ~]# systemctl enable supervisord
[root@ localhost ~]# systemctl status supervisord
3. 修改配置文件 /etc/supervisord.conf,進入配置文件,把所標注處,給去了注釋
[inet_http_server] ; inet (TCP) server disabled by default http服務器,提供web管理界面
port=0.0.0.0:9001 ; (ip_address:port specifier, *:port for all iface) web管理后台運行的IP和端口,如果開放到公網,需要注意安全性
username=root ; (default is no username (open server)) 登錄管理后台的用戶名
password=123456 ; (default is no password (open server)) 登錄管理后台的密碼
或者是:
4. 重新加載配置文件,開啟supervisor的默認端口9001【這一步可以設置防火也可不設置】
supervisorctl reload
firewall-cmd --zone=public --add-port=9001/tcp --permanent 【--zone 作用域,--add-port=80/tcp 添加端口,格式為:端口/通訊協議,--permanent 永久生效,每次參數后失效】
firewall-cmd --reload 【重新加載】
5. 訪問頁面 (因為我們這里給他設置了用戶和密碼所以要進行登錄)
6. 再次進入配置文件,/etc/supervisord.conf,的最后一行,你可以改成以 (.conf來做成后綴)【同樣如果你在安裝supervisor的時候幫supervisor創建了一個文件目錄你可以在supervisor的配置文件中的最后一行寫上你的詳細配置文件目錄】
7. supervisor管理tomcat,先安裝上tomcat並且開啟tomcat和查看頁面,查看完頁面之后記得把所有的tomcat進程停止掉,因為你使用supervisor所以當你進入supervisorctl命令行中的時候會有start命令你需要在命令行中執行。{切記:supervisor的進程只能由supervisor來開啟}
8. 把tomcat開啟之后進入/etc/supervisord.d/conf.d編寫以.ini結尾的tomcat腳本vim /etc/supervisord.d/conf.d/tomcat.ini
[program:tomcat]
command=/root/apache-tomcat-8.5.35/bin/catalina.sh run
9. 重新啟動一下supervisor,再進入supervisor的命令行模式(supervisorctl),要執行reload才能有反應,使用exit退出來
10. 進行重新啟動supervisor,在第二張截圖中我們會看到tomcat進程的狀態,到這里supervisor的命令行管理tomcat完事兒了。
[root@ localhost system]# systemctl daemon-reload
[root@ localhost system]# systemctl enable supervisord.service
[root@ localhost system]# systemctl start supervisord
[root@ localhost system]# systemctl status supervisord
11. 我們再在web端上面看看,是否可以執行成功