spring boot 安全STOP 及启动脚本

过HTTP发送shutdown信

一:通过HTTP发送shutdown信号

该方式主要依赖Spring Boot Actuator的endpoint特性,具体步骤如下:

1. 在pom.xml中引入actuator依赖

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-actuator</artifactId>

</dependency>

2. 开启shutdown endpoint

Spring Boot Actuator的shutdown endpoint默认是关闭的,因此在application.properties中开启shutdown endpoint:

#启用shutdown

endpoints.shutdown.enabled=true

#禁用密码验证

endpoints.shutdown.sensitive=false

3. 发送shutdown信号

shutdown的默认url为host:port/shutdown,当需要停止服务时,向服务器post该请求即可,如:

curl -X POST host:port/shutdown

将得到形如{“message”:”Shutting down, bye…”}的响应

4. 安全设置

可以看出,使用该方法可以非常方便的进行远程操作,但是需要注意的是,正式使用时,必须对该请求进行必要的安全设置,比如借助spring-boot-starter-security进行身份认证:

pom.xml添加security依赖

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-security</artifactId>

</dependency>

开启安全验证

在application.properties中变更配置,并

#开启shutdown的安全验证

endpoints.shutdown.sensitive=true

#验证用户名

security.user.name=admin

#验证密码

security.user.password=secret

#角色

management.security.role=SUPERUSER

指定路径、IP、端口

#指定shutdown endpoint的路径

endpoints.shutdown.path=/custompath

#也可以统一指定所有endpoints的路径`management.context-path=/manage`

#指定管理端口和IP

management.port=8081

management.address=127.0.0.1


二、创建启动脚本boot.sh 一下是脚本内容


#!/bin/bash
JAVA_OPTIONS_INITIAL=-Xms1024M
JAVA_OPTIONS_MAX=-Xmx2048M
_JAR_KEYWORDS=ylb_gateway.jar
APP_NAME=ylb_gateway 
#APPLICATION_FILE=/opt/scpip_monitor/application.properties
PID=$(ps aux | grep ${_JAR_KEYWORDS} | grep -v grep | awk '{print $2}' )
ALARM_CONFIG_FILE=`pwd`/alarmConfig.yaml

function check_if_process_is_running {
if [ "$PID" = "" ]; then
return 1
fi
ps -p $PID | grep "java"
return $?
}


case "$1" in
status)
if check_if_process_is_running
then
echo -e "\033[32m $APP_NAME is running \033[0m"
else
echo -e "\033[32m $APP_NAME not running \033[0m"
fi
;;
stop)
if check_if_process_is_running
then
curl -X POST http://localhost:7070/shutdown
else
echo -e "\033[32m $APP_NAME already stoped  \033[0m"
fi
;;
start)
if [ "$PID" != "" ] && check_if_process_is_running
then
echo -e "\033[32m $APP_NAME already running \033[0m"
exit 1
fi
nohup java -jar -Dalarm.config.file=$ALARM_CONFIG_FILE $JAVA_OPTIONS_INITIAL $JAVA_OPTIONS_MAX $_JAR_KEYWORDS  > /dev/null 2>&1 & 
echo -ne "\033[32m Starting \033[0m" 
for i in {1..20}; do
echo -ne "\033[32m.\033[0m"
sleep 1
done
if check_if_process_is_running 
then
echo -e "\033[32m $APP_NAME fail \033[0m"
else
echo -e "\033[32m $APP_NAME started \033[0m"
fi
;;
restart)
$0 stop
if [ $? = 1 ]
then
exit 1
fi
$0 start
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
exit 1
esac

exit 0




发布了16 篇原创文章 · 获赞 2 · 访问量 7374

猜你喜欢

转载自blog.csdn.net/broke_dr/article/details/80069030