Spring-mvc/Spring-boot项目自动化部署实现

    笔者近期完成了两个后台项目,需要同时部署在阿里云的Centos服务器上,项目一用于后台内容管理,项目二用于给客户端APP提供API调用,为了方便操作和节省时间,两个项目的线上部署都是通过执行一个 "deploy.sh" 自动化部署脚本来实现项目的源码拉新、自动打包、应用启动的整个流程。下面结合项目的目录树结构进行说明:

 

  • apache-tomcat-8.5.15:用于从外部启动spring boot项目的tomcat,项目包格式为.war格式。
  • logs日志目录:通过log4j2指定项目日志的生成目录。
  • project_deploy:项目发布目录,需要编辑 tomcat/conf 目录下的server.xml文件,定义其中的Context属性:<Context docBase="/home/shitao/project_workspace/kaolayingyu-api/project_deploy/kaolayingyu-api" path="" reloadable="true" />。
  • project_source:源码目录,用于从远程Gittee仓库拉取最新的源代码。
  • deploy.sh:执行自动部署的脚本文件。

自动部署步骤

第一步,在本地开发环境的修改代码通过GIT提交到Gitee站点上的代码仓库;

第二步,进入project_source目录,首次在控制台输入 git clone 命令与远程仓库建立连接,并获取项目全部源码,之后的自动部署都是通过在 deploy.sh 脚本内部执行 git pull 命令从代码仓库获取最新修改的源码;

第三步,通过mvn命令将项目源码打成.war格式包。

第四步,停止正在运行的tomcat,将war包拷贝到发布目录project_deploy,将war包解压后,重新启动tomcat。

自动部署脚本deploy.sh:

project_name="kaolayingyu-api";
source_ws="/home/shitao/project_workspace/"$project_name"/project_source/"$project_name"/"
deploy_ws="/home/shitao/project_workspace/"$project_name"/project_deploy/"
tomcat_home="/home/shitao/project_workspace/"$project_name"/apache-tomcat-8.5.15"
cd $source_ws;
# 拉取最新的源代码
git pull
# 通过mvn命令生成项目的war包
mvn clean install -Dmaven.test.skip=true
cd target
# 杀死与项目相关的所有进程,与执行 sh ${tomcat_home}"/bin/shutdown.sh 效果等同
ps aux |grep -v grep |grep $project_name |awk '{print $2}'|xargs kill -9
#sh ${tomcat_home}"/bin/shutdown.sh"
rm -rf ${deploy_ws}$project_name
rm -rf ${deploy_ws}$project_name".war"
mkdir ${deploy_ws}$project_name
cp $project_name".war" ${deploy_ws}$project_name
cd ${deploy_ws}$project_name
jar xvf $project_name".war"
mv $project_name".war" ${deploy_ws}
cd WEB-INF/classes
# 修改项目配置文件,从开发环境切换到生产环境
sed -i 's/spring.profiles.active=dev/spring.profiles.active=prod/' application.properties
sh ${tomcat_home}"/bin/startup.sh"

    虽然现在很多spring-boot项目都是打成jar包,在服务端通过命令就可以直接运行了,但如果你的项目需要通过外部tomcat来运行,那么通过上面的脚本文件就可以实现项目的自动部署了,在部署多个不同的项目时候,只需要将脚本文件里面的 project-name 替换为新的项目名称就可以愉快地去干别的事情了^_^

猜你喜欢

转载自blog.csdn.net/crazestone0614/article/details/126713793