使用Git+Shell自动化部署发布springboot WEB应用

前言

    之前因为自己部署上线自己的博客系统,使用了SpringBoot自带的tomcat在服务器端直接运行gradle bootRun,而且用的是手动发布,就是自己打包好程序后上传到服务器端,然后再运行。这样带来一个问题就是,不好统一管理,自己修改代码后,还需要进行一系列繁杂的手动操作,效率是很低下的。网上有很多框架的时候,因为是个人使用,所以嫌重,于是自己搞了一套使用git + shell自动化部署spring boot web应用的脚本。前提是自己已经将代码上传到git仓库中,如还没有,请看我上一篇博文的描述。因为个人服务器上的应用源码是比较隐私的,所以建议不要公布在共有仓库中,博主使用的是码云的免费私有仓库,因为github要$的。

环境

本地环境:WIN10

服务器环境:CentOS7

GIT仓库:码云私有仓库

步骤

1. 安装tomcat和配置

从官网下载tomcat,上传到服务器,或者直接在服务器wget进行解压和安装,vi编辑tomcat目录下/conf/server.xml

    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" URIEncoding="UTF-8" />

找到上面的片段添加URIEncoding="UTF-8",同上,防止编码问题的出现。

2. 配置git

git config --global core.autocrlf false    #忽略win和linux平台的分隔符差异
git config --global core.quotepath off     #防止中文乱码问题

3. 创建公钥,并配置到码云上

ssh-keygen -t rsa -C "码云的邮箱账号"

一路next,完成后添加到公钥仓库中并查看公钥字串

eval `ssh-agent`
ssh-add ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub

注:将公钥字串复制并配置到码云上,详细过程见博主上一篇博客

4. 创建要存放项目的目录

mkdir blog   #自定义名字,这个是我项目的名字

5. 进入目录,使用git进行clone

找到自己的项目git地址,在服务器端使用git进行拉取

git clone "仓库地址"

6. 进入clone好的项目目录,便可以执行下面的操作

git checkout master        #查看主分支,或者将master改成分支名,查看分支
git fetch                  #匹配当前最新版本
git pull                   #将最新的代码更新到本地

7. 所以编写如下的shell脚本进行自动化发布

echo "===========进入git项目blog目录============="
cd /usr/local/blog/blog/


echo "==========git切换分支到master==============="
git checkout master

echo "==================git fetch======================"
git fetch

echo "==================git pull======================"
git pull


echo "===========删除之前编译的war包===================="
gradle clean

echo "===========编译并跳过单元测试===================="
gradle build -x test  

echo "============删除旧的ROOT.war==================="
rm -rf /usr/local/apache-tomcat-9.0.7/webapps/ROOT.war


echo "======拷贝编译出来的war包到tomcat下-ROOT.war======="
cp /usr/local/blog/blog/build/libs/blog.war /usr/local/apache-tomcat-9.0.7/webapps/ROOT.war


echo "============删除tomcat下旧的ROOT文件夹============="
rm -rf /usr/local/apache-tomcat-9.0.7/webapps/ROOT



echo "====================关闭tomcat====================="
/usr/local/apache-tomcat-9.0.7/bin/shutdown.sh 


echo "================sleep 10s========================="
for i in {1..10}
do
	echo $i"s"
	sleep 1s
done


echo "====================启动tomcat====================="
/usr/local/apache-tomcat-9.0.7/bin/startup.sh 

8. 启动脚本,完成自动化发布

至此已经完成自动化脚本的构建,项目代码更新后,只需要在本地将代码push到远程git仓库中,然后在服务器运行上述的shell脚本文件即可更新服务器的项目。上述的脚本文件,大家可以根据自己的需求进行修改。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏我的技术笔记

在Ubuntu 14.04上安装GitLab(Trusty Tahr)

GitLab是一个基于Ruby on Rails的免费git存储库管理应用程序。假如您想托管自己的git存储库,这是一个很好的替代方案,因为在编写私有代码或则闭...

2091
来自专栏xingoo, 一个梦想做发明家的程序员

整理LVS架构压力测试工作

    首先,测试环境在模拟环境下进行。     测试环境:1director(apache2.2) + 1realserver(jboss4.2.3GA)+1...

3508
来自专栏james大数据架构

入坑系列之HAProxy负载均衡

在大型系统设计中用代理在负载均衡是最常见的一种方式,而相对靠谱的解决方案中Nginx、HAProxy、LVS、F5在各大场中用得比较普遍,各有各的优势和使用场...

68210
来自专栏腾讯云serverless的专栏

使用 SCF 无服务器云函数定时备份数据库

最近有客户询问到使用云函数进行数据库导出备份时的一些问题,在此也进行一下总结,描述如何使用云函数来进行数据库备份。

7.6K4
来自专栏魏豪的专栏

LNMP平台的搭建

LNMP指的是多款软件的集合。L指的是Linux系统,N指的是Nginx网站服务器,M指的是Mariadb数据库软件,P指的是php软件。Linux目前是一款最...

8320
来自专栏linux系统运维

VM虚拟机的下载以及安装centos7

2233
来自专栏SDNLAB

ONOS编程系列(二)命令行命令与服务开发

此文章承接ONOS编程系列(一) Application Tutorial ,如果尚未看过上一篇,请先看完上一篇,再回过头来看此篇。 本文章的目的在于让读者明白...

3459
来自专栏漏斗社区

仰望PHPSHE1.5漏洞

背景 最近拿到PHPSHE 1.5的源码进行了审计,于是撰写了本篇,把一些问题发出来,多处SQL注入,任意文件删除,host头部攻击进行讨论,如 host位置的...

3899
来自专栏喵了个咪的博客空间

[喵咪Redis]Redis配置文件和主从设置

[喵咪Redis]Redis配置文件和主从设置 ? 前言 上一节已经介绍了redis的基本使用也运行起来了redis,本节来进一步了解一下redis的配置,以及...

3325
来自专栏Python

CentOS下Redis的安装

CentOS下Redis的安装 前言 安装Redis需要知道自己需要哪个版本,有针对性的安装,比如如果需要redis GEO这个地理集合的特性,那么redis...

4297

扫码关注云+社区

领取腾讯云代金券