Springboot配置文件单独放在服务器上

阅读更多

首先声明,这个自动部署,只是把配置文件单独放在服务器上进行配置,修改了配置文件,仍然需要重启!只是减少了不必重新打包这一步!
脚本见附件。

1.总结脚本原理
执行脚本->获取同级目录下的包->读取包的信息->判断是否在运行->在运行的杀掉->执行启动命令,并指定配置文件路径->打印执行是否成功

2.SpringBoot加载外部文件原理
1)SpringBoot从application.properties或者application.yml读取配置.
2)SpringApplication会默认将命令行选项参数转换为配置信息.
3)从命令行指定配置项的优先级最高(可以通过setAddCommandLineProperties来禁用).

3.总结优点
1)修改了配置文件信息(例,修改数据库密码)需在服务器的配置文件上修改,重启服务,无需重新打包。
2)给测试、UAT等多个环境发版,只需打一次包。无需每个环境改一次变量重新打包。
3)可复用,脚本中只配置了操作同级目录的jar或war,不包含任何项目信息。

4.脚本详细介绍

Springboot配置文件单独放在服务器上_第1张图片
 

if [ -e *.jar -o -e *.war ];then 判断是否存在jar包或war包,-e:做判断,-0:或者。
SERVER_JAR=ls -l |awk '{print $9}'| grep .jar$ 读取jar包信息,并把第9行信息(jar名字)赋值给server_jar变量。
pid=$(ps -ef | grep $SERVER_JAR | grep -v grep | awk '{print $2}') 获取jar包的进程号(第2行信息),赋值给pid变量。grep -v grep:排除当前命令的进程号。
if ps -p $pid> /dev/null 判断进程是否在运行。> /dev/null:把返回信息扔进黑洞。
kill -9 ${pid} 干掉进程。
nohup java $JAVA_OPTS -jar $SERVER_JAR --spring.config.location=./application.yml >/dev/null 2>&1 & 启动jar包,并指定配置文件地址。
if [[ $? -ne 0 ]]; then 判断上一步命令是否正常执行,正常返回0,不正常返回不等于0的数字(一般是1)。ne:不等于。
exit 1 返回不等于1的,告诉系统执行异常了。

  • Springboot配置文件单独放在服务器上_第2张图片
  • 大小: 193.4 KB
  • start.zip (724 Bytes)
  • 下载次数: 1
  • 查看图片附件

你可能感兴趣的:(Springboot配置文件单独放在服务器上)