linux下后台啟動springboot項目


linux下后台啟動springboot項目

我們知道啟動springboot的項目有三種方式:

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

我們在開發的時候,通常會使用前兩種,而在部署的時候往往會使用第三種。但是,我們在使用java -jar來運行的時候,並非后台運行。

下面我們來說說服務器上如何后台啟動springboot項目。實際上,實現的方法有很多種,這里就列兩種還比較好用的方式:

nohup和Shell

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

nohup 命令

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

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

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

示例:

1
nohup  java -jar xxx.jar &

這樣執行后,nohup會把執行結果中的日志輸出到當前文件夾下面的nohup.out文件中,通常情況下我們使用以上命令即可。 
我們也可以手動指定一個參數來規定日志文件的輸出地點,如:

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

如果不需要輸出日志,可以使用如下命令

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

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

  • 關閉應用的腳本:stop.sh
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #!/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
    1
    2
    #!/bin/bash
    nohup  java -jar yourapp.jar --server.port=8888 &
  • 整合了關閉和啟動的腳本:run.sh,由於會先執行關閉應用,然后再啟動應用,這樣不會引起端口沖突等問題,適合在持續集成系統中進行反復調用。
    1
    2
    3
    4
    5
    #!/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配置
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <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/目錄下

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

綜上,一般情況下我們使用以下命令即可實現jar包后台啟動:

1
nohup java -jar xxx.jar &

通常,在編寫java項目時我們自己對日志文件進行了配置,在生產環境上我們不需要輸出默認的nohup.out日志,此時我們可以使用如下命令啟動jar包

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

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

 

補充:使用shell腳本一鍵啟動 重啟 停止jar包

鏈接:編寫shell腳本一鍵啟動 重啟 停止springboot jar包

轉自:https://www.cnblogs.com/sueyyyy/p/9958836.html


免責聲明!

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



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