Spring Boot项目(Maven\Gradle)三种启动方式及后台运行详解
Spring Boot项目三种启动方式及后台运行详解
1 Spring Boot项目三种启动方法
- 运行
Application.java
类中的Main方法 - 项目管理工具启动
Maven
项目:mvn spring-boot:run
Gradle
项目:gradle run
- 打包成
Jar
文件启动:java -jar [项目名称].jar
Maven
项目:mvn package
,在Target目录下生成Jar
包Gradle
项目:gradle build
,在build/libs目录下生成Jar
包
2 Spring Boot项目后台启动
在项目开发阶段,通常会使用前两种方法启动,而在部署的时候通常会使用第三种方法
然而
java -jar [项目名称].jar
命令只能在前台运行项目,当执行其他操作或者关闭SSH会话时,项目运行终止
2.1 安装配置nohup命令
nohup
作用:使程序在服务器后台执行,执行程序的命令不依赖ssh界面。
用法:nohup 需执行命令 &
- 查询nohup是否安装
which nohup # 查看/usr/bin目录下有没有nohup命令
- 下载安装nohup
yum install coreutils
- 查找下载的nohup
cd /usr/bin
which nohup
- 配置nohup路径
vi ~/.bash_profile
# .bash_profile# Get the aliases and functions
if [ -f ~/.bashrc ]; then. ~/.bashrc
fi# User specific environment and startup programsPATH=$PATH:$HOME/bin
PATH=$PATH:/usr/bin
export PATH
- 立即生效配置
source ~/.bash_profile
- 使用nohup命令
nohup [需要后台执行的命令] &
2.2 nohup命令
- 用途:不挂断的运行命令
- 语法:
nohup command [Arg...] [&]
- 描述:nohup 命令由需要后台执行的Command命令及其参数[Arg…]组成,忽略所有挂断(SIGHUP)信号。
- 示例:
nohup
java -jar xxx.jar &
nohup会把执行结果中的日志输出到当前文件夹下面的nohup.out文件中,通常情况下我们使用以上命令即可。
nohup java -jar xxx.jar > catalina.out 2>&1 & # 指定日志文件输出地址
nohup java -jar xxx.jar >/dev/null & # 关闭日志输出
2.3 挂断nohup命令
ps -ef # 查看系统进程,并记下java -jar xxx.jar命令的PID
kill -9 [PID] # 强制结束进程
3 应用启动、停止、重启shell脚本
- 启动应用的脚本:start.sh
#!/bin/bash
nohup java -jar yourapp.jar --server.port=8888 &
- 关闭应用的脚本:stop.sh
#!/bin/bash
PID=$(ps -ef | grep yourapp.jar | grep -v grep | awk '{ print $2 }')
if [ -z "$PID" ]
thenecho Application is already stopped
elseecho kill $PIDkill $PID
fi
- 整合了关闭和启动的脚本:run.sh,由于会先执行关闭应用,然后再启动应用,这样不会引起端口冲突等问题,适合在持续集成系统中进行反复调用。
#!/bin/bash
echo stop application
source stop.sh
echo start application
source start.sh
4 创建系统服务
在Spring Boot的Maven插件中,还提供了构建完整可执行程序的功能,什么意思呢?就是说,我们可以不用java -jar,而是直接运行jar来执行程序。这样我们就可以方便的将其创建成系统服务在后台运行了。
- 在pom.xml中添加Spring Boot的插件,并注意设置executable配置
<build><plugins><plugin><groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration><executable>true</executable></configuration></plugin></plugins>
</build>
- 在完成上述配置后,使用mvn install进行打包,构建一个可执行的jar包
- 创建软连接到/etc/init.d/目录下
sudo ln -s /var/yourapp/yourapp.jar /etc/init.d/yourapp
- 在完成软连接创建之后,我们就可以通过如下命令对yourapp.jar应用来控制启动、停止、重启操作了
/etc/init.d/yourapp start|stop|restart
Spring Boot项目(Maven\Gradle)三种启动方式及后台运行详解相关推荐
- Redis的三种启动方式与检测运行情况
Part I. 直接启动 tar zxvf redis-2.8.9.tar.gz cd redis-2.8.9 #直接make 编译 make #可使用root用户执行make install,将可执 ...
- java c3p0 配置文件_【c3p0】 C3P0的三种配置方式以及基本配置项详解
数据库连接池C3P0框架是个非常优异的开源jar,高性能的管理着数据源,这里只讨论程序本身负责数据源,不讨论容器管理. ---------------------------------------- ...
- C3P0的三种配置方式以及基本配置项详解
数据库连接池C3P0框架是个非常优异的开源jar,高性能的管理着数据源,这里只讨论程序本身负责数据源,不讨论容器管理. 注:需要的jar包在后面给出链接. ---------------------- ...
- html5边框顶格,CSS 三种定位方式以及格式化上下文详解 》 html5jscss
常规流( Normal flow ) 之称之为常规流,是因为这是相对于后面的浮动和绝对定位的一个概念,浮动和绝对定位元素都脱离了当前的常规流. 在 CSS2.1中,常规流包括块框( block box ...
- 二叉树的创建与三种遍历方式(带图文详解)
二叉树是由多节点组成的,每个节点最多链接两个节点,这两个节点就称为根节点的左树和右树. 每个节点的由数据区,左树,右树组成. typedef struct node {int data;struct ...
- Spring Boot(4)--- spring boot的三种启动方式
springboot的三种启动方式 一:IDE 运行Application这个类的main方法 二:在springboot的应用的根目录下运行mvn spring-boot:run 三:使用mvn i ...
- MAVEN的三种打包方式
MAVEN的三种打包方式 Maven可以使用mvn package指令对项目进行打包,如果使用Java -jar xxx.jar执行运行jar文件,会出现"no main manifest ...
- Maven的三种packaging方式(pom、jar、war)
Maven的三种packaging方式(pom.jar.war) pom是maven依赖文件 jar是java普通项目打包 war是java web项目打包 pom:打出来可以作为其他项目的m ...
- GPS/BDS:星历表、历书、GPS三种启动方式
星历表.历书.GPS三种启动方式 转自:https://blog.csdn.net/longwei91/article/details/82379165 星历表(Ephemeris):包含了非常详细的 ...
最新文章
- Spring注解 开发
- awstats的安装和配置
- java cache缓存_涨姿势:为什么Java中“1000==1000”为false,而”100==100“为true?
- 【转】Android应用开发allowBackup敏感信息泄露的一点反思
- Linux centos7 配置用户自动登录
- 【01背包】最大约数和(jzoj 2126)
- 移动端中如何检测设备方向的变化?
- 每日一题(30)—— 局部变量能否和全局变量重名?
- java后端传object给js_【JSON】JSON在前端和后端传递
- php mysql事务实例_PHP + MySQL事务示例
- FR-TO-FR本地交换
- 重载运算符:作为成员函数还是非成员函数
- Braid,另类游戏
- java各种优秀开源库收集
- jsp余jspx的区别
- S3存储服务间数据同步工具Rclone介绍
- linux usb有线网卡驱动_Linux系统安装R8169网卡驱动的方法
- OP负反馈放大电路的自激振荡
- 新手如何推广优化自己的网站
- 在一个页面同时引入两个百度地图
热门文章
- J - 哈密顿绕行世界问题
- java编写创建数据库和表的程序
- 利用 keyCode 控制数字输入框
- throw throws 区别
- iOS并发编程指南之同步
- [IE技巧] 如何禁止用户关闭IE浏览器
- java宝典_JAVA宝典之_JAVA基础
- html5编辑器自带js,javaScript编辑器-HBulider
- docker 查看虚拟网卡_最简单的免费虚拟化方案:Hyper-V Server + Windows Admin Center
- css3的动画特效--元素旋转(transition,animation)