醬油一篇,整理一下關於Spring Boot後臺運行的一些配置方式。在介紹後臺運行配置以前,咱們先回顧一下Spring Boot應用的幾種運行方式:java
mvn spring-boot:run
來運行java -jar
運行咱們在開發的時候,一般會使用前兩種,而在部署的時候每每會使用第三種。可是,咱們在使用java -jar
來運行的時候,並不是後臺運行。下面咱們分別針對Windows和Linux/Unix兩種環境,整理一下如何配置後臺運行的方法。spring
Windows下比較簡單,咱們能夠直接使用這款軟件:AlwaysUp
。以下圖所示,簡單、暴力、好用。bash
配置方式很簡單,咱們只須要把Spring Boot應用經過mvn install
打成jar包,而後編寫一個java -jar yourapp.jar
的bat文件。再打開AlwaysUp
,點擊工具欄的第一個按鈕,以下圖所示,選擇上面編寫的bat文件,並填寫服務名稱。服務器
完成了建立以後,在列表中能夠看到咱們配置的服務,經過右鍵選擇Start xxx
就能在後臺將該應用啓動起來了。app
下面咱們來講說服務器上該如何來配置。實際上,實現的方法有不少種,這裏就列兩種還比較好用的方式:maven
該方法主要經過使用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 |