JAR(Spring Boot)應用的后台運行配置


醬油一篇,整理一下關於Spring Boot后台運行的一些配置方式。在介紹后台運行配置之前,我們先回顧一下Spring Boot應用的幾種運行方式:

  • 運行Spring Boot的應用主類
  • 使用Maven的Spring Boot插件mvn spring-boot:run來運行
  • 打成jar包后,使用java -jar運行

我們在開發的時候,通常會使用前兩種,而在部署的時候往往會使用第三種。但是,我們在使用java -jar來運行的時候,並非后台運行。下面我們分別針對Windows和Linux/Unix兩種環境,整理一下如何配置后台運行的方法。

Windows

Windows下比較簡單,我們可以直接使用這款軟件:AlwaysUp。如下圖所示,簡單、暴力、好用。

配置方式很簡單,我們只需要把Spring Boot應用通過mvn install打成jar包,然后編寫一個java -jar yourapp.jar的bat文件。再打開AlwaysUp,點擊工具欄的第一個按鈕,如下圖所示,選擇上面編寫的bat文件,並填寫服務名稱。

完成了創建之后,在列表中可以看到我們配置的服務,通過右鍵選擇Start xxx就能在后台將該應用啟動起來了。

Linux/Unix

下面我們來說說服務器上該如何來配置。實際上,實現的方法有很多種,這里就列兩種還比較好用的方式:

nohup和Shell

該方法主要通過使用nohup命令來實現,該命令的詳細介紹如下:

nohup 命令

用途:不掛斷地運行命令。

語法:nohup Command [ Arg … ][ & ]

描述:nohup 命令運行由 Command 參數和任何相關的 Arg 參數指定的命令,忽略所有掛斷(SIGHUP)信號。在注銷后使用 nohup 命令運行后台中的程序。要運行后台中的 nohup 命令,添加 &到命令的尾部。

所以,我們只需要使用nohup java -jar yourapp.jar &命令,就能讓yourapp.jar在后台運行了。但是,為了方便管理,我們還可以通過Shell來編寫一些用於啟動應用的腳本,比如下面幾個:

  • 關閉應用的腳本:stop.sh
#!/bin/bash PID=$(ps -ef | grep yourapp.jar | grep -v grep | awk '{ print $2 }') if [ -z "$PID" ] then echo Application is already stopped else echo kill $PID kill $PID fi 
  • 啟動應用的腳本:start.sh
#!/bin/bash nohup java -jar yourapp.jar --server.port=8888 & 
  • 整合了關閉和啟動的腳本:run.sh,由於會先執行關閉應用,然后再啟動應用,這樣不會引起端口沖突等問題,適合在持續集成系統中進行反復調用。
#!/bin/bash echo stop application source stop.sh echo start application source start.sh 

系統服務

在Spring Boot的Maven插件中,還提供了構建完整可執行程序的功能,什么意思呢?就是說,我們可以不用java -jar,而是直接運行jar來執行程序。這樣我們就可以方便的將其創建成系統服務在后台運行了。主要步驟如下:

  • 在pom.xml中添加Spring Boot的插件,並注意設置executable配置
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <executable>true</executable> </configuration> </plugin> </plugins> </build> 
  • 在完成上述配置后,使用mvn install進行打包,構建一個可執行的jar包

  • 創建軟連接到/etc/init.d/目錄下

sudo ln -s /var/yourapp/yourapp.jar /etc/init.d/yourapp 
  • 在完成軟連接創建之后,我們就可以通過如下命令對yourapp.jar應用來控制啟動、停止、重啟操作了
/etc/init.d/yourapp start|stop|restart


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM