第八步:SpringBoot application.yml配置文件放在jar外部、开机执行JAR Shell脚本

1、SpringBoot application.yml配置文件放在jar外部
开发与生产环境的不同,有可能对配置文件属性要求不同

此时需要将application.yml文件放在可运行Jar的外部

将自己做的几种尝试过可行的的贴上,做个简单记录

  1. 运行命令 —— Java jar demo.jar

1.1 可以在 当前Jar文件目录 建 config同级目录,这个config同级目录放入 application.yml

1.2 也可以在 当前Jar文件目录 直接放入application.yml

  1. 运行命令 —— java -jar demo.jar --spring.config.location=路径(application.yml)

只需要将路径配置填入就ok

PS:

如果用命令改变application.yml中某一个属性,修改 --属性=****

如改变端口: java -jar demo.jar --server.port=8686

 

2、开机执行JAR Shell脚本

1.编写jar执行脚本

1

vim start.sh

#!/bin/bash
#这里可替换为你自己的执行程序,其他代码无需更改
APP_NAME=XXXX.jar
  
#使用说明,用来提示输入参数
usage() {
 echo "Usage: sh wss.sh [start|stop|restart|status]"
 exit 1
}
  
#检查程序是否在运行
is_exist(){
 pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}' `
 #如果不存在返回1,存在返回0 
 if [ -z "${pid}" ]; then
 return 1
 else
 return 0
 fi
}
  
#启动方法
start(){
 is_exist
 if [ $? -eq "0" ]; then
 echo "${APP_NAME} is already running. pid=${pid} ."
 else
 nohup java -Xms2048m -Xmx4096m -jar /server/$APP_NAME > /server/logs/websocketserverlog.file 2>&1 &
 echo "${APP_NAME} start success"
 fi
}
  
#停止方法
stop(){
 is_exist
 if [ $? -eq "0" ]; then
 kill -9 $pid
 else
 echo "${APP_NAME} is not running"
 fi
}
  
#输出运行状态
status(){
 is_exist
 if [ $? -eq "0" ]; then
 echo "${APP_NAME} is running. Pid is ${pid}"
 else
 echo "${APP_NAME} is NOT running."
 fi
}
  
#重启
restart(){
 stop
 start
}
  
#根据输入参数,选择执行对应方法,不输入则执行使用说明
case "$1" in
 "start")
 start
 ;;
 "stop")
 stop
 ;;
 "status")
 status
 ;;
 "restart")
 restart
 ;;
 *)
 usage
 ;;
esac

注意要给SSH文件执行的权限

2.编写开机服务service(该service的ExecStart配置为上面的脚本路径)

1

2

3

cd /usr/lib/systemd/system

 

vim teststart.service

  

加入以下内容

[Unit]
Description=XXX service
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/server/wss.sh start
ExecReload=/server/wss.sh restart
ExecStop=/server/wss.sh stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target

 

 

3.开机执行service

  

1

2

3

4

5

systemctl daemon-reload  #重新加载所有service服务

 

  systemctl enable teststart.service  #开机启动该service

 

  systemctl is-enabled teststart.service  #查看该service是否开机启用

  

  

4.重启服务,查看脚本是否执行

  重启服务器:

1

reboot

  

  

  查看 jar 其否启动

 

1

ps -ef|grep java

  

  

# systemctl start xxx.service  启动nginx服务 
# systemctl stop xxx.service  停止服务 
# systemctl restart xxx.service  重新启动服务 
# systemctl list-units --type=service 查看所有已启动的服务 
# systemctl status xxx.service 查看服务当前状态 
# systemctl enable xxx.service 设置开机自启动 
# systemctl disable xxx.service 停止开机自启动

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值