zoukankan      html  css  js  c++  java
  • 部署-shell脚本实现远程部署

    什么是shell脚本?

    首先我们要了解一下shell的概念。shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。而shell脚本则是shell程序可以解释和运行的指令。

    实现远程发布

    前景介绍

    博主所在公司的项目开发流程当中,前后端项目都是交于后端同学来打包部署。由于没有使运维,也没使用jenkins来实现项目的自动发布。导致在前后端联调发布新版本的时候,每次都需要后端同学手动来实现项目的部署,非常费时费力。出于折衷的目的,博主先推动了shell脚本来实现自动发布,每个项目配置一个自动发布的shell脚本。

    rsa公钥登录配置

    rsa公钥的配置,博主在之前的博客已经讲解过了。看过的小伙伴可以接着往下阅读。

    脚本实现要素

    这里我们先思考一下,实现shell脚本的远程发布需要实现哪些步骤?

    1.拷贝压缩文件到远程服务器临时目录。
    2.在临时目录将压缩文件进行解压。
    3.关闭项目对应的进程。
    4.将项目原文件进行剪切到备份目录。
    5.将临时目录的项目文件拷贝到工作目录。
    6.重启开启进程。

    脚本编写

    测试环境下,对于java后端的springboot项目,博主的实际使用脚本如下。

    #引用字符超过俩次,需要抽取成变量。
    #服务器用户和ip地址
    server=root@192.168.0.1
    
    #项目名称
    projectname=OurwayLgVopak
    
    #app名称
    appname=userweb-0.0.1-SNAPSHOT.jar
    
    #上传jar包到服务器路径
    scp ./userweb/target/bin/${appname} ${server}:/project/${projectname}/
    
    #ssh远程连接之后需要执行的多条脚本,采用了分隔符的方式,这里以单引号分割
    ssh ${server} '
    cd /project
    projectname=OurwayLgVopak
    appname=userweb-0.0.1-SNAPSHOT.jar
    
    #先获取到运行项目的进程编号
    pid=$(ps -ef|grep ${projectname}/src/${appname}|grep -v grep|awk "{print $2}")
    if [ ! "${pid}" ];then
    echo "没有找到${appname}的进程,无需kill"
    else
    echo "找到${appname}的进程${pid}"
    echo "kill ${pid}"
    kill ${pid}
    fi
    
    #覆盖移动jar包
    mv -f ${projectname}/${appname} ${projectname}/src/${appname}
    
    #nohup方式启动java应用
    nohup java -jar ${projectname}/src/${appname} >> ${projectname}/src/nohup.out &
    
    #获取到项目运行的pid,排除执行命令的进程,排除被杀死的原型进程
    #awk命令,默认使用空格分隔,并得到第二个参数的值
    newpid=$(ps -ef|grep ${projectname}/src/${appname}|grep -v grep|grep -v ${pid}|awk "{print $2}")
    echo "${appname}启动完毕,进程${newpid}"
    #退出远程连接
    exit
    '
    echo '脚本执行完成'
    

    运行脚本

    博主这里的开发环境是windows,因此我们将脚本语句保存为.sh类型的文件。然后先打开.git bash窗口,在上面输入 ./{scriptName} 就可以查看脚本的运行结果了。这里需要注意的是你的脚本 跟 你需要发布的jar包之前的层级关闭。j运行结果如下图所示:

    脚本运行结果

    在idea里面执行shell脚本

    idea内置了shell plugin,可以帮助我们执行 和 编写shell脚本。这里我们需要修改一下shell path路径,不再使用cmd.exe打开。

    shell path修改

    打开我们需要运行的sh文件,点击上面的绿色三角按钮。

    运行文件

    查看运行结果:

    查看运行结果

    博主微信公众号

  • 相关阅读:
    测开之路一百一十:bootstrap图片
    测开之路一百零九:bootstrap列表
    测开之路一百零八:bootstrap表格
    测开之路一百零七:bootstrap排版
    测开之路一百零六:bootstrap布局
    学生管理之原生分页方法
    Ajax文件上传三式
    学生管理之模板继承
    Django之Models的class Meta
    [C++]指针/指针数组/数组指针/多维指针/单值指针/多值指针
  • 原文地址:https://www.cnblogs.com/chenhaoblog/p/13507731.html
Copyright © 2011-2022 走看看