咱們知道啓動springboot的項目有三種方式:html
咱們在開發的時候,一般會使用前兩種,而在部署的時候每每會使用第三種。可是,咱們在使用java -jar來運行的時候,並不是後臺運行。java
下面咱們來講說服務器上如何後臺啓動springboot項目。實際上,實現的方法有不少種,這裏就列兩種還比較好用的方式:linux
該方法主要經過使用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來編寫一些用於啓動應用的腳本,好比下面幾個:
#!/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
#!/bin/bash nohup java -jar yourapp.jar --server.port=8888 &
#!/bin/bash echo stop application source stop.sh echo start application source start.sh
在Spring Boot的Maven插件中,還提供了構建完整可執行程序的功能,什麼意思呢?就是說,咱們能夠不用java -jar,而是直接運行jar來執行程序。這樣咱們就能夠方便的將其建立成系統服務在後臺運行了。主要步驟以下:
<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
/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詳解