之前因为自己部署上线自己的博客系统,使用了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脚本文件即可更新服务器的项目。上述的脚本文件,大家可以根据自己的需求进行修改。