Spring Boot应用的启动和停止(Spring Boot应用通过start命令启动)
Spring Boot,作为Spring框架对“约定优先于配置(Convention Over Configuration)”理念的最佳实践的产物,它能帮助我们很快捷的创建出独立运行、产品级别的基于Spring框架的应用,大部分Spring Boot应用只需要非常少的配置就可以快速运行起来,是一个与微服务(MicroServices)相当契合的微框架。
下面主要有两种方式进行Spring Boot的关闭:通过HTTP
发送shutdown
信号,或者通过service stop
的方式。
一、通过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 endpoin
t默认是关闭的,因此在application.properties
中开启shutdown endpoint
:
#启用shutdown
endpoints.shutdown.enabled=true
#禁用密码验证
endpoints.shutdown.sensitive=false
指定路径、IP、端口
#指定shutdown endpoint的路径
endpoints.shutdown.path=/custompath
#也可以统一指定所有endpoints的路径`management.context-path=/manage`
#指定管理端口和IP
management.port=8081
management.address=127.0.0.1
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
注意:如果引入了security框架后,按照上面的配置,那么全部请求都会要求输入账号密码才能访问。
二、部署为Unix/Linux Service
该方式主要借助官方的spring-boot-maven-plugin
创建"Fully executable" jar ,这中jar包内置一个shell脚本,可以方便的将该应用设置为Unix/Linux的系统服务(init.d service),官方对该功能在CentOS和Ubuntu进行了测试,对于OS X和FreeBSD,可能需要自定义。具体步骤如下:
1、在pom.xml
中引入插件:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<executable>true</executable>
</configuration>
</plugin>
注意:标红部分的意思是是否是可以执行的。
2、赋予可执行权限:
chmod u+x app.jar
说明:到了这一步之后基本可以在命令行运行,先打包出JAR包,然后启动,比如./app.jar start即可启动。
3、设置为系统服务
将你的应用打成JAR包,部署到服务器,假设部署路径为/var/app,包名为app.jar,通过如下方式将应该设置为一个系统服务:
sudo ln -s /var/app/app.jar /etc/init.d/app
4. 以系统服务的方式管理
接下来,就可以使用我们熟悉的service foo start|stop|restart来对应用进行启停等管理了
sudo service app start|stop
命令将得到形如Started|Stopped [PID]
的结果反馈
默认PID文件路径:
/var/run/appname/appname.pid
默认日志文件路径:
/var/log/appname.log
这可能是我们更熟悉也更常用的管理方式。
提示:上面的的日志和存放PID的文件根据不同的系统可能出现的位置不一样。
5、自定义参数
在这种方式下,我们还可以使用自定义的.conf文件来变更默认配置,方法如下:
1)在jar包相同路径下创建一个.conf文件,名称应该与.jar的名称相同,如appname.conf
2)在其中配置相关变量,如:
JAVA_HOME=/usr/local/jdk
JAVA_OPTS=-Xmx1024M
LOG_FOLDER=/custom/log
6、安全设置
作为应用服务,安全性是一个不能忽略的问题,如下一些操作可以作为部分基础设置参考:
- 为服务创建一个独立的用户,同时最好将该用户的shell绑定为/usr/sbin/nologin
- 赋予最小范围权限:
chmod 500 app.jar
- 阻止修改:
sudo chattr +i app.jar
- 对.conf文件做类似的工作:
chmod 400 app.conf,
sudo chown root:root app.conf
参考:
http://www.cnblogs.com/lobo/p/5657684.html(以上内容转自此篇文章)
Installing Spring Boot applications
Spring Boot应用的启动和停止(Spring Boot应用通过start命令启动)的更多相关文章
- [DabaBase] MongoDB (6) 启动、停止、相关系统配置及安全性设置
MongoDB 启动.停止.相关系统配置及安全性设置 启动MongoDB ./mongod —-help 查看帮助说明 mac-abeen:bin abeen$ sudo ./mongod --dbp ...
- 管理weblogic服务的启动和停止
2012-11-10 12:58 26036人阅读 评论(4) 收藏 举报 分类: WebLogic(10) 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 介绍 Weblog ...
- Centos7.3_x86_64通过systemctl控制tomcat8.0.46启动和停止
Centos7.3_x86_64通过systemctl控制tomcat8..46启动和停止 之前在centos 6上通过脚本控制tomcat 启动和停止的脚本,虽然在centos 7也可以使用,但ce ...
- MySQL的启动与停止
如果MySQL数据库是自己安装的,可以用如下方法分别启动和停止MySQL. 1. MySQL服务器的启动 $mysql_dir/bin/mysqld_safe & (其中&am ...
- Linux下chkconfig命令详解--(启动或停止)和查询系统服务的运行级信息
chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息.谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接. 使用语法:chkconfig [--ad ...
- chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息
chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息.谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接. 使用语法:chkconfig [--ad ...
- 09_Hadoop启动或停止的三种方式及启动脚本
1.Hadoop启动或停止 1)第一种方式 分别启动 HDFS 和 MapReduce,命令如下: 启动: $ start-dfs.sh $ start-mapred.sh 停止: $ stop-ma ...
- 启动和停止GlassFish Server
您可以使用NetBeans IDE或命令行启动和停止GlassFish Server. 使用NetBeans IDE启动GlassFish Server 单击“服务”选项卡. 展开服务器. 右键单 ...
- 如何优雅地停止 Spring Boot 应用?
首先来介绍下什么是优雅地停止,简而言之,就是对应用进程发送停止指令之后,能保证正在执行的业务操作不受影响,可以继续完成已有请求的处理,但是停止接受新请求. 在 Spring Boot 2.3 中增加了 ...
- SpringBoot启动方式,Spring Boot 定义系统启动任务
SpringBoot启动方式,Spring Boot 定义系统启动任务 SpringBoot启动方式 1.1 方法一 1.2 方法二 1.2.1 start.sh 1.2.2 stop.sh 1.2. ...
随机推荐
- Android(java)学习笔记166:上下文的区分
1.两种上下文: (1)Activity.this 界面的上下文 (2)getApplicationContext() 整 ...
- Using URL Schemes to Communicate with Apps
要素:1)通信双方:2)协议:3)支持机制(系统,进行协议注册):4)数据 https://developer.apple.com/library/content/documentation/iPho ...
- Kubernetes 架构(下)【转】
上一节我们讨论了 Kubernetes 架构 Master 上运行的服务,本节讨论 Node 节点. Node 是 Pod 运行的地方,Kubernetes 支持 Docker.rkt 等容器 Run ...
- 新时代web组件开发标准
VUE框架,则是遵行了这个标准. 1.html文件 <!DOCTYPE html><html><head lang="en"> <meta ...
- zabbix4.2学习笔记系列
写在前面:对zabbix的接触始于对监控的了解,网上比较多zabbix相关博客,比较多基于3系列甚至2系列,最新开发版zabbix4.2版本已经出来,本博客基于4.2版本学习,参考官网4.2版本和网上 ...
- java文件上传,自动判断文件类型
public enum FileType { /** * JEPG. */ JPEG("FFD8FF"), /** * PNG. */ PNG("89504E47&quo ...
- 使用html2canvas实现网页截图,并嵌入到PDF
使用html2canvas实现网页截图并嵌入到PDF 以前我们只能通过截图工具进行截取图像.这使得在业务生产中,变得越来越不方便.目前的浏览器功能越来越强大,H5也逐渐普及,浏览器也可以实现截图了.这 ...
- Node.js 创建server服务器
var http=require('http'); //引入http模块 var server=http.createServer(function(req,res){ //创建一个server r ...
- ie8兼容性
ie8下不支持css的nth-child()样式解决方法一:使用jQuery的nth-child()方法例:$(".ability-head-list ul li:nth-child(1) ...
- Firefox--摄像头麦克风权限
在自动化测试的过程中,可能会遇到来自浏览器的权限提示(摄像头.麦克风),今天,就讨论一下如何结局这个问题. 先来认识一下来自Firefox的权限提示,访问一个需要摄像头或者麦克风的网站 你可能觉得,一 ...