Spring Boot開發web應用就像開發普通的java程序一般簡潔,因為其內嵌了web容易,啟動的時候只需要一條命令java -jar server.jar
即可,非常方便。
但是由此而來的問題是萬一應用掛了怎么辦?
別擔心,有pm2進程管理工具可以幫到你。
PM2簡介
pm2原先是nodejs應用的進程管理工具,不過其良好的設計以及擴展性可以手動執行執行進程。
PM2安裝
1.安裝NodeJs
npm install pm2 -g
PM2基本命令
- pm2 list 查看所有被PM2管理的進程列表
- pm2 start xxx 啟動一個應用
- pm2 stop xxx 停止一個應用
- pm2 restart xxx 重啟一個應用
- pm2 describe xxx 查看應用詳情
- pm2 startup, pm2 save 兩條命令,用來保證服務器啟動時,pm2管理的程序自動運行
Java程序處理
在jar的同級目錄新建應用啟動配置文件,如pm2.json
,內容如下:
{ "name": "my-server", "script": "/usr/bin/java", "args": [ "-jar", "server.jar" ], "exec_interpreter": "", "exec_mode": "fork" }
說明如下:
- name 進程名稱(顯示在
pm2 list
命令中) - script 執行進程名稱,如果需要執行PHP腳本則填寫php解釋器的路徑,本文為java
- args 傳給執行進程的參數,多個參數以數組單元分割
- exec_interpreter NodeJs解析器,本文不適用
- exec_mode 執行模式[cluster|fork]這個針對NodeJs應用的配置,非NodeJs應用統一fork
配置文件完成后,使用
pm2 start pm2.json
即可看到應用被啟動
日志管理
日志路徑在~/.pm2/logs
,stdout
和stderr
被分開存放,程序中的所有stdout
和stderr
都被收集方便查錯。
cat project-cogrowth-api.json
{ "name": "cogrowth-api", "script": "java", "args": [ "-Xms64m", "-Xmx512m", "-Dspring.profiles.active=pub", "-jar", "cogrowth-api-1.0.jar", ], "exec_interpreter": "", "exec_mode": "fork" }