在接觸supervisor進程管理工具之前,使用springboot打包部署到linux伺服器的流程是這樣子的,如下圖所示: 上圖展示的就是最一般的流程,如果項目是小項目或者demo可以這樣子去部署,但是實際生產中會有各種各樣的問題存在,比如: 1. 項目發佈之後,由於各種可能的原因,伺服器宕機或者 ...
在接觸supervisor進程管理工具之前,使用springboot打包部署到linux伺服器的流程是這樣子的,如下圖所示:
上圖展示的就是最一般的流程,如果項目是小項目或者demo可以這樣子去部署,但是實際生產中會有各種各樣的問題存在,比如:
- 項目發佈之後,由於各種可能的原因,伺服器宕機或者服務進程掛掉,不能自動重啟;
- 如果項目是頻繁更新,頻繁發佈,這樣子簡直會把人累死;
...
ok,今天先來解決第一個問題,服務重啟的問題。
---supervisor介紹
Supervisor,是一個進程式控制制系統,是一個客戶端/伺服器端系統允許用戶在UNIX-LIKE 操作系統中去監控,控制一些進程。Supervisor作為主進程,Supervisor下管理的時一些子進程,當某一個子進程異常退出時,Supervisor會立馬對此做處理,通常會守護進程,重啟該進程,保證進程可用。
supervisor安裝
一般伺服器都部署在ecs上面,推薦使用yum命令安裝,簡單省心。
首先,使用命令
yum -y install supervisor
supervisor配置
系統會自動安裝,等待安裝完畢之後,輸入命令:
vim /etc/supervisor.d/test.ini
使用vim命令新建一個test.ini文件,該文件是管控進程的配置文件,內容大致如下,可根據個人需要增刪配置:
#啟動程式的名稱
[program:test]
#配置的java啟動環境
environment=JAVA_HOME=/app/jdk/jdk1/bin
#啟動命令
command= /app/jdk/jdk1/bin/java -Xms2048m -Xmx4096m -Dspring.profiles.active=dev -Dserver.port=8080 -jar /app/jar/test.jar
#jar所在文件目錄
directory=/app/jar
#用戶
user=root
stopsignal=INT
#自動啟動
autostart=true
#自動重啟
autorestart=true
#重啟時間1s
startsecs=1
#錯誤日誌
stderr_logfile=/app/log/sp/test.err.log
#標準列印日誌,滿50MB區分
stdout_logfile=/app/log/sp/test.out.log
至此,supervisor配置結束,如果有多個jar項目要跑,可以複製多個ini項目,註意記憶體分配。
supervisor啟動
使用如下命令來啟動或者更新supervisor,
# 啟動supervisor
systemctl start supervisord
# 更新配置文件
supervisorctl update
# 啟動某個應用
supervisorctl start aaaa
supervisorctl stop aaaa
# 查看狀態
supervisorctl status
總結
使用supervisor工具之後,可以把自己解放出來,不用再擔心深夜服務停掉而自己不知道的問題,由於伺服器部署在阿裡雲上面,只要不是大規模斷電等極其意外的情況,都可以保證在伺服器不掛的情況下,保證系統的正常運轉。
晚上終於可以安心睡覺了,下篇文章採用持續集成解決第二個問題。