zoukankan      html  css  js  c++  java
  • Springboot配置文件单独放在服务器上

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

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

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

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

    4.脚本详细介绍

    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的,告诉系统执行异常了。

    附件:start.sh

  • 相关阅读:
    VMwarePlayer虚拟机下centos6的静态IP配置
    C/C++ 父子进程之间的文件描述符问题
    C++ wait捕捉的信号处理WIFEXITED/WEXITSTATUS/WIFSIGNALED
    WIN7下用笔记本创建无线网
    C++ readdir、readdir_r函数
    C++ int转string(stringstream可转更多类型)
    C/C++函数中使用可变参数
    C/C++中static关键字作用总结
    Unix网络编程第三版源码编译
    Linux下初次使用github
  • 原文地址:https://www.cnblogs.com/DreamFather/p/11341536.html
Copyright © 2011-2022 走看看