mirror of
https://github.com/zykzhangyukang/Xinguan.git
synced 2024-09-20 06:46:03 +08:00
149 lines
4.1 KiB
Bash
149 lines
4.1 KiB
Bash
#打包完后的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
|