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.