1. 程式人生 > >Spring boot Jar 通過服務方式部署

Spring boot Jar 通過服務方式部署

Gradle 配置增加

springBoot { executable = true }

通過該外掛可 build 'fully executable' Jar ,嵌入一個額外的 shell 指令碼,方便註冊為 Unix/Linux services

Build 可執行的 Jar 包


注意賦予 Jar 包可執行許可權

$ sudo chmod +x myapp.jar

這時可以通過 ./myapp.jar 啟動專案

註冊到系統服務

建立一個軟連結,將指令碼註冊到 init.d 中 (通過 vim /etc/init.d/myapp 可檢視指令碼內容)

$ sudo ln -s /home/user/www/myapp.jar /etc/init.d/myapp

以服務方式管理

$ sudo service myapp start | stop | restart | status 

(or $ sudo /etc/init.d/myapp start)

預設控制檯輸出日誌位置

/var/log/<appname>.log

自定義配置檔案

Spring boot 提供了一些屬性可供配置,只需在 myapp.jar 相同位置建立 myapp.conf ,並放入配置屬性如:

JAVA_HOME=/home/user/dev/jdk1.8

LOG_FOLDER=/home/user/log

JAVA_OPTS=-Xmx1024M

更多的資訊檢視 Spring boot 官方文件的 Installing Spring Boot applications 章節,注意 Spring boot 版本

遇到的啟動問題:

以上是官方文件的步驟,但是死個舅子在 ubuntu server 16.04.3 上執行不起來,提示 Unable to find java ,Jar 本來是已經可以直接執行,查看了一下服務指令碼,問題應該是通過服務啟動時始終找不到 $JAVA_HOME,最後通過在配置檔案中顯式指定 JAVA_HOME 解決
完成自定義配置後先執行命令重新載入一下服務

$ sudo systemctl daemon-reload

否則可能出現 Unit myapp.service not found 或者 myapp.service changed on disk. Run 'systemctl daemon-reload' to reload units.