一组服务器构建发布启停脚本

背景:功能开发完成以后需要在测试服务器发布,有几种方案可选。

其中一种是使用Jenkins,而另一种是使用脚本,这次就先使用脚本。

开始以前需要准备以下环境:

$HOME/bin 目录, 用于存放脚本
$HOME/build 目录, 用于存放源码
$HOME/deploy 目录, 用于进行发布
$HOME/deploy/tomcat 目录, Tomcat目录, 可以是软链接

首先准备源码

cd $HOME/build
git clone https://github.com/ohmmx/testproject.git

准备分支存储文件,用于存放需要切换至的分支,不必每次手动切换

vim $HOME/bin/branch

填写分支名
master
保存退出 :wq

编写构建打包脚本:

vim $HOME/bin/build.sh
#!/bin/bash

branch=`cat branch`

cd $HOME/build/testproject
git fetch -p
git checkout $branch
brch=`git rev-parse --abbrev-ref HEAD`
echo -e "Publish in branch: \033[44;37m [$brch] \033[0m"
git pull --all

gradle clean :prj-tomcat:war :prj-springboot:bootJar

在构建时会已蓝底白字显示当前切换至的分支,避免分支填写出错。

其中Tomcat项目打包为war包,SpringBoot项目打包为Jar包。

编写Tomcat项目启动脚本:

其中8080为启动端口,可以在 $HOME/deploy/tomcat/conf/server.xml 的 Connector protocol=”HTTP/1.1″ 部分找到并设置

vim $HOME/bin/start-tomcat.sh
#!/bin/bash

# 停止服务
fuser -k 8080/tcp || true

rm -rf $HOME/deploy/tomcat/webapps/ROOT
rm -f $HOME/deploy/tomcat/webapps/ROOT.war

cp $HOME/build/testproject/prj-tomcat/build/libs/prj-tomcat.war $HOME/deploy/tomcat/webapps/ROOT.war

cd $HOME/deploy/tomcat/bin/

./startup.sh

编写SpringBoot项目启动脚本:(其中9081为启动端口)

vim $HOME/bin/start-springboot.sh
#!/bin/bash

# 停止服务
fuser -k 9080/tcp || true

rm -f $HOME/deploy/prj-springboot.jar
cp $HOME/build/testproject/prj-springboot/build/libs/prj-springboot.jar $HOME/deploy/

nohup java -Dserver.port=9080 -jar $HOME/deploy/prj-springboot.jar

进阶版-Tomcat篇:

Tomcat设置内存大小:

vim $HOME/deploy/tomcat/bin/setenv.sh
#!/bin/bash

CATALINA_OPTS=" -Xms512m -Xmx512m"

Tomcat设置JPDA启动:

vim $HOME/deploy/tomcat/bin/catalina.sh

在开头的一堆注释下面加入以下一行:(其中28080为JPDA端口)

JPDA_OPTS="-agentlib:jdwp=transport=dt_socket,address=28080,server=y,suspend=n"

然后使用JPDA方式启动:

vim $HOME/deploy/tomcat/bin/startup.sh

最后一行

exec "$PRGDIR"/"$EXECUTABLE" start "$@"

修改为

exec "$PRGDIR"/"$EXECUTABLE" jpda start "$@"

进阶版-SpringBoot篇:

设置启动内存,添加参数 -Xmx1024m

设置指定profile配置启动 -Dspring.profiles.active=dev

避免打印nohup日志,在脚本最后添加 > /dev/null 2>&1 &

使用JPDA方式启动 -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=29080

所以最终的结果是这样的:

普通启动

#!/bin/bash

# 停止服务
fuser -k 9080/tcp || true

rm -f $HOME/deploy/prj-springboot.jar
cp $HOME/build/testproject/prj-springboot/build/libs/prj-springboot.jar $HOME/deploy/


nohup java -Xmx1024m -Dspring.profiles.active=dev -Dserver.port=9080 -jar $HOME/deploy/prj-springboot.jar > /dev/null 2>&1 &

JPDA启动

#!/bin/bash

# 停止服务
fuser -k 9080/tcp || true

rm -f $HOME/deploy/prj-springboot.jar
cp $HOME/build/testproject/prj-springboot/build/libs/prj-springboot.jar $HOME/deploy/

nohup java -Xmx1024m -Dspring.profiles.active=dev -Dserver.port=9080 -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=29080 -jar $HOME/deploy/prj-springboot.jar > /dev/null 2>&1 &
此条目发表在JAVA分类目录,贴了, , 标签。将固定链接加入收藏夹。