springboot的jar包以service方式啟動
場景
打出的jar包用java -jar肯定是可以啟動的。 這種方式原生簡單,但是對運維不友好。
于是要求改造,希望可以用service命令來啟動。
過程
技術上完全可以實現的。
pom.xml配置
pom.xml 中有2個配置點:
1
2
3
4
5
6
7
8
9
|
< finalName >custom-app</ finalName > < plugin > < groupId >org.springframework.boot</ groupId > < artifactId >spring-boot-maven-plugin</ artifactId > < configuration > <!-- 可執行 --> < executable >true</ executable > </ configuration > </ plugin > |
注: finalName要保證唯一性,不要帶 .1.1.SNAPSHOT 這樣的版本號。
打包(maven),授權,啟動
先打包,然后執行如下腳本:
1
2
3
4
|
# 授權 chmod 755 custom-app ; # 啟動 ./custom-app.jar |
如果能夠執行,表示maven配置生效了,jar包成了執行文件。
注: 查看jar包,發現前2,300行加入了shell腳本,這就是 <executable>true</executable> 生成的內容。
另: java -jar仍然是可以使用的,不會受到影響。
建立軟連接,通過service命令來啟動
命令如下:
1
2
3
4
|
# 建立軟連接 ln -s /data/custom-app.jar /etc/init.d/custom-app # 然后就可以用service命令啟動了 service custom-app start |
發現并沒輸出日志,那么怎么是否啟動了? 如何看日志?
1
2
3
4
|
# 這里可以看啟動的日志 /var/log/custom-app.log # 查看pid,模板為: /var/run/<appname>/<appname>.pid /var/run/custom-app/custom-app.pid |
systemctl配置
因沒用到,暫略。
最下面的spring文檔里也有systemctl配置的用法。
其他
關于配置的官網文檔
Springboot以jar包方式啟動、關閉、重啟腳本
啟動
1
2
3
4
5
6
|
編寫啟動腳本startup.sh #!/bin/bash echo Starting application nohup java -jar activiti_demo- 0.0 . 1 -SNAPSHOT.jar & 授權 chmod +x startup.sh |
關閉
1
2
3
4
5
6
7
8
9
10
11
12
|
編寫關閉腳本stop.sh #!/bin/bash PID=$(ps -ef | grep activiti_demo- 0.0 . 1 -SNAPSHOT.jar | grep -v grep | awk '{ print $2 }' ) if [ -z "$PID" ] then echo Application is already stopped else echo kill $PID kill $PID fi 授權 chmod +x stop.sh |
重啟
1
2
3
4
5
6
7
8
|
編寫重啟腳本restart.sh #!/bin/bash echo Stopping application source ./stop.sh echo Starting application source ./startup.sh 授權 chmod +x restart.sh |
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持服務器之家。
原文鏈接:https://blog.csdn.net/enthan809882/article/details/109291502