Xinguan/deployment.sh
2021-02-04 11:18:43 +08:00

149 lines
4.1 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#打包完后的jar名称替换成你自己项目的名称该名称可以在maven项目的pom中配置
proc="xinguan-web-0.0.1-SNAPSHOT.jar"
#项目源码的目录地址初始可能需要自己从Git拉下来
SOURCE_HOME="/root/application/xinguan-api/xinguan-web"
#项目父工程的目录地址
PARENT_HOME="/root/application/xinguan-api"
#日志地址
APP_LOG="$SOURCE_HOME/target/log_info.log"
#环境配置 用户配置开发(dev),测试(test),生产(prod)的配置文件,避免频繁改动
PROFILES_ACTIVE="spring.profiles.active=prod"
#JVM启动参数关于JVM调优这里不介绍感兴趣的可以自行百度 JVM调优
JAVA_OPTS="-server -Xms512M -Xmx512M -Xss256k -Xmn256m -XX:SurvivorRatio=4 -XX:+AggressiveOpts -XX:+UseBiasedLocking -XX:MetaspaceSize=128M -XX:MaxMetaspaceSize=256M -XX:CMSInitiatingOccupancyFraction=90 -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:+DisableExplicitGC -XX:MaxTenuringThreshold=0 -XX:CMSFullGCsBeforeCompaction=100 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -Djava.awt.headless=true"
psid=0
#检查进程是否存在
checkpid() {
javaps=$(pgrep -f "$proc")
if [ -n "$javaps" ]; then
psid=$javaps
else
psid=0
fi
}
#编写启动方法
start() {
checkpid
if [ $psid -ne 0 ]; then
echo "================================"
echo "warn: $proc already started! (pid=$psid)"
echo "================================"
else
echo "Starting $proc ..."
#到项目源码目录
cd $SOURCE_HOME
#输出,准备获取最新代码
echo -n "git pull source ,please wait ....."
#获取最新代码此列只在目录所在分支pull
#若想部署指定分支代码可以在脚本调用参数中添加一个变量用git checkout ${targer_branch}
git pull
#输出,最新代码已拉取完毕,准备打包
echo -n "mvn package source ,please wait ....."
#maven打包命令此处特别注意是 —U ,是指引用快照版本的jar引用自己的项目每次都更新最新的。
cd $PARENT_HOME
echo "======================================进入父工程中打包============================================"
mvn clean package -Dmaven.test.skip=true
echo "======================================项目打包完成================================================"
#打包成功后默认是在父工程中
#到项目源码目录
cd $SOURCE_HOME
cd target
#输出,准备启动
echo -n $"Starting $proc:"
#循环加载所需的jar此处和2的pom配置有关
for name in *.jar
do
APP_CLASS="$name"
done
#启动脚本,--spring.profiles.active= 用于设置环境所使用的配置文件
JAVA_CMD="java "$JAVA_OPTS" -jar "$APP_CLASS" --"$PROFILES_ACTIVE" &"
#后台运行
$JAVA_CMD &
sleep 1
checkpid
if [ $psid -ne 0 ]; then
echo "======================================"
echo "$proc Start Success! (pid=$psid)[OK]"
echo "======================================"
else
echo "[Failed]"
fi
fi
}
#查看日志
showlog() {
tail -f $APP_LOG
}
#停用项目
stop() {
checkpid
if [ $psid -ne 0 ]; then
echo -n "Stopping $proc ...(pid=$psid) "
kill -9 $psid
if [ $? -eq 0 ]; then
echo "[OK]"
else
echo "[Failed]"
fi
checkpid
if [ $psid -ne 0 ]; then
stop
fi
else
echo "================================"
echo "warn: $proc is not running"
echo "================================"
fi
}
#项目状态
status() {
checkpid
if [ $psid -ne 0 ]; then
echo "$proc is running! (pid=$psid)"
else
echo "$proc is not running"
fi
}
#设置脚本参数,启动的时候可以采用./脚本名称.sh start/stop/restart/log/status等参数
case "$1" in
start)
start
;;
stop)
stop
;;
log)
showlog
;;
status)
status
;;
restart)
stop
start
;;
esac