spring boot 後臺運行配置

醬油一篇,整理一下關於Spring Boot後臺運行的一些配置方式。在介紹後臺運行配置以前,咱們先回顧一下Spring Boot應用的幾種運行方式:java

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

咱們在開發的時候,一般會使用前兩種,而在部署的時候每每會使用第三種。可是,咱們在使用java -jar來運行的時候,並不是後臺運行。下面咱們分別針對Windows和Linux/Unix兩種環境,整理一下如何配置後臺運行的方法。spring

Windows

Windows下比較簡單,咱們能夠直接使用這款軟件:AlwaysUp。以下圖所示,簡單、暴力、好用。bash

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

完成了建立以後,在列表中能夠看到咱們配置的服務,經過右鍵選擇Start xxx就能在後臺將該應用啓動起來了。app

Linux/Unix

下面咱們來講說服務器上該如何來配置。實際上,實現的方法有不少種,這裏就列兩種還比較好用的方式:maven

nohup和Shell

該方法主要經過使用nohup命令來實現,該命令的詳細介紹以下:spring-boot

nohup 命令工具

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

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

描述: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
相關文章
相關標籤/搜索