test2

linux下後臺啓動springboot項目

咱們知道啓動springboot的項目有三種方式:html

  • 運行主方法啓動
  • 使用命令 mvn spring-boot:run」在命令行啓動該應用
  • 運行「mvn package」進行打包時,會打包成一個能夠直接運行的 JAR 文件,使用「java -jar」命令就能夠直接運行。

咱們在開發的時候,一般會使用前兩種,而在部署的時候每每會使用第三種。可是,咱們在使用java -jar來運行的時候,並不是後臺運行。java

下面咱們來講說服務器上如何後臺啓動springboot項目。實際上,實現的方法有不少種,這裏就列兩種還比較好用的方式:linux

nohup和Shell

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

nohup 命令shell

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

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

描述:nohup 命令運行由 Command 參數和任何相關的 Arg 參數指定的命令,忽略全部掛斷(SIGHUP)信號。在註銷後使用 nohup 命令運行後臺中的程序。要運行後臺中的 nohup 命令,添加 &到命令的尾部。服務器

示例:app

nohup java -jar xxx.jar &

這樣執行後,nohup會把執行結果中的日誌輸出到當前文件夾下面的nohup.out文件中,一般狀況下咱們使用以上命令便可。 
咱們也能夠手動指定一個參數來規定日誌文件的輸出地點,如:
maven

nohup java -jar xxx.jar > catalina.out  2>&1 & 

若是不須要輸出日誌,可使用以下命令

nohup java -jar xxx.jar >/dev/null &

因此,咱們只須要使用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

綜上,通常狀況下咱們使用如下命令便可實現jar包後臺啓動:

nohup java -jar xxx.jar &

一般,在編寫java項目時咱們本身對日誌文件進行了配置,在生產環境上咱們不須要輸出默認的nohup.out日誌,此時咱們可使用以下命令啓動jar包

nohup java -jar xxxx.jar >/dev/null 2>&1 &

關於該命令的詳細解釋,能夠看個人這篇文章 linux重定向及/dev/null 2>&1詳解

 

補充:使用shell腳本一鍵啓動 重啓 中止jar包

連接:編寫shell腳本一鍵啓動 重啓 中止springboot jar包

相關文章
相關標籤/搜索