linux脚本打包部署

最近项目中需要用到脚本打包自动部署,正好做一下笔记,备忘。

原来是maven项目放在eclipse中进行手动打包,现在为了节省时间且非开发人员也可以快速打包 将项目转移到了服务器上,整体步骤如下。

1.linux服务器上安装好git环境,创建一个git仓库。
2.安装maven环境以及java环境,前后端分离的情况,前端代码需要单独打包,需要装一个node环境
3.脚本思路
(1) 从git 仓库中更新代码
(2)使用mvn命令打包,前端使用npm
(3)将打好的jar包移动到运行环境中。前端打的包可不必移动,直接再nginx的配置文件中将访问路径直接指向git仓库中打好的文件夹路径
(4)将所有jar包重启

项目背景:
这是一个maven的聚合项目,所以我们在打包的时候要先将父项目和其他依赖的项目先打包,再打其他子项目的包。
//更新代码

git pll

前端打包(文件夹名字叫test,前端打包生成的是一个文件夹)

npm run build:test

//父项目 (注意,父项目打包必须使用Install,因为install是将包打到本地仓库供其他项目使用,package是打到target下面)

mvn install

//依次打好其他项目的jar包(该命令其实依次执行了compile,test,最后才是package)

mvn clean package

打完包之后,首先将运行环境中的Jar以重命名的方式备份一下。
再将打好的jar包移动到指定的运行环境里。

因为有一种情况下,两个服务器用一个脚本,但是有个项目只在一个服务器上,所以我们可以先进行判断一下再操作,防止报错。

定义全局变量:(注意 = 号两端不能有空格)
#git仓库绝对路径

service="/opt/code/ManageSystem/service"

#运行环境绝对路径

server="/opt/server"
if [ ! -d “${server}/old” ];then
echo “------old不存在-------”
else
cd ${server}/old
mv old-1.0-SNAPSHOT.jar old-1.0-SNAPSHOT-backup.jar
mv ${service}/old/target/old-1.0-SNAPSHOT.jar ${server}/old/old-1.0-SNAPSHOT.jar
echo “------old存在且----备份部署完成-------”
fi

部署完成之后就是重启了。
为了让运行的项目受我们掌控,我们要为项目建立一个app.pid文件来存储它运行时进程的Pid.然后通过kill命令来将这个命令干掉从而达到关闭的作用,重启的时候它又自动存储了新的进程pid
1.在项目下建立一个app.pid文件(app是名字,可随意取)
2.编写两个脚本,一个用来启动,一个用来关闭,也可只写一个里面,先写关闭命令,再写启动命令。(这里需要注意的是,当我们启动了一个进程后,再重新启动,pid的值会取第二次的值,但是实际上第二个启动的进程会因为重复启动直接挂掉,所以这样pid的值其实就不准确了,无法达到重启的效果)

直接上脚本
//关闭pid指向的进行

cd /opt/server/api
PID=$(cat app.pid)
kill -9 $PID

启动服务并将进程pid存入app.pid文件中,同时将打印的日志存入log文件夹下,以app.log命名(自动生成,不需要创建这个

app.log文件)

cd /opt/server/api
nohup java -Xmx1024m -Xms1024m -Xmn256m -jar api-1.0-SNAPSHOT.jar >log/app.log &
echo $! > app.pid

然后最后调用这个两个脚本就可以辣~~~~~~over
--------------------- 
作者:oh_EJiao 
原文:https://blog.csdn.net/sinat_35821285/article/details/85010319

文章转载自:https://blog.csdn.net/sinat_35821285/article/details/85010319

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值