80 lines
2.5 KiB
Bash
80 lines
2.5 KiB
Bash
|
#!/bin/bash
|
||
|
set -e
|
||
|
|
||
|
DATE=$(date +%Y%m%d%H%M)
|
||
|
# 基础路径
|
||
|
BASE_PATH=/work/projects/yudao-server
|
||
|
# 服务名称。同时约定部署服务的 jar 包名字也为它。
|
||
|
SERVER_NAME=yudao-server
|
||
|
# 环境
|
||
|
PROFILES_ACTIVE=dev
|
||
|
|
||
|
# heapError 存放路径
|
||
|
HEAP_ERROR_PATH=$BASE_PATH/heapError
|
||
|
# JVM 参数
|
||
|
JAVA_OPS="-Xms512m -Xmx512m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=$HEAP_ERROR_PATH"
|
||
|
|
||
|
# SkyWalking Agent 配置
|
||
|
#export SW_AGENT_NAME=$SERVER_NAME
|
||
|
#export SW_AGENT_COLLECTOR_BACKEND_SERVICES=192.168.0.84:11800
|
||
|
#export SW_GRPC_LOG_SERVER_HOST=192.168.0.84
|
||
|
#export SW_AGENT_TRACE_IGNORE_PATH="Redisson/PING,/actuator/**,/admin/**"
|
||
|
#export JAVA_AGENT=-javaagent:/work/skywalking/apache-skywalking-apm-bin/agent/skywalking-agent.jar
|
||
|
|
||
|
# 停止:优雅关闭之前已经启动的服务
|
||
|
function stop() {
|
||
|
echo "[stop] 开始停止 $BASE_PATH/$SERVER_NAME"
|
||
|
PID=$(ps -ef | grep $BASE_PATH/$SERVER_NAME | grep -v "grep" | awk '{print $2}')
|
||
|
# 如果 Java 服务启动中,则进行关闭
|
||
|
if [ -n "$PID" ]; then
|
||
|
# 正常关闭
|
||
|
echo "[stop] $BASE_PATH/$SERVER_NAME 运行中,开始 kill [$PID]"
|
||
|
kill -15 $PID
|
||
|
# 等待最大 120 秒,直到关闭完成。
|
||
|
for ((i = 0; i < 120; i++))
|
||
|
do
|
||
|
sleep 1
|
||
|
PID=$(ps -ef | grep $BASE_PATH/$SERVER_NAME | grep -v "grep" | awk '{print $2}')
|
||
|
if [ -n "$PID" ]; then
|
||
|
echo -e ".\c"
|
||
|
else
|
||
|
echo '[stop] 停止 $BASE_PATH/$SERVER_NAME 成功'
|
||
|
break
|
||
|
fi
|
||
|
done
|
||
|
|
||
|
# 如果正常关闭失败,那么进行强制 kill -9 进行关闭
|
||
|
if [ -n "$PID" ]; then
|
||
|
echo "[stop] $BASE_PATH/$SERVER_NAME 失败,强制 kill -9 $PID"
|
||
|
kill -9 $PID
|
||
|
fi
|
||
|
# 如果 Java 服务未启动,则无需关闭
|
||
|
else
|
||
|
echo "[stop] $BASE_PATH/$SERVER_NAME 未启动,无需停止"
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
# 启动:启动后端项目
|
||
|
function start() {
|
||
|
# 开启启动前,打印启动参数
|
||
|
echo "[start] 开始启动 $BASE_PATH/$SERVER_NAME"
|
||
|
echo "[start] JAVA_OPS: $JAVA_OPS"
|
||
|
echo "[start] JAVA_AGENT: $JAVA_AGENT"
|
||
|
echo "[start] PROFILES: $PROFILES_ACTIVE"
|
||
|
|
||
|
# 开始启动
|
||
|
nohup java -server $JAVA_OPS $JAVA_AGENT -jar $BASE_PATH/$SERVER_NAME.jar --spring.profiles.active=$PROFILES_ACTIVE > nohup.out 2>&1 &
|
||
|
echo "[start] 启动 $BASE_PATH/$SERVER_NAME 完成"
|
||
|
}
|
||
|
|
||
|
# 部署
|
||
|
function deploy() {
|
||
|
cd $BASE_PATH
|
||
|
# 第一步:停止 Java 服务
|
||
|
stop
|
||
|
# 第二步:启动 Java 服务
|
||
|
start
|
||
|
}
|
||
|
|
||
|
deploy
|