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 需执行命令 &

  1. 查询nohup是否安装
which nohup # 查看/usr/bin目录下有没有nohup命令
  1. 下载安装nohup
yum install coreutils
  1. 查找下载的nohup
cd /usr/bin
which nohup
  1. 配置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
  1. 立即生效配置
source ~/.bash_profile
  1. 使用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)三种启动方式及后台运行详解相关推荐

  1. Redis的三种启动方式与检测运行情况

    Part I. 直接启动 tar zxvf redis-2.8.9.tar.gz cd redis-2.8.9 #直接make 编译 make #可使用root用户执行make install,将可执 ...

  2. java c3p0 配置文件_【c3p0】 C3P0的三种配置方式以及基本配置项详解

    数据库连接池C3P0框架是个非常优异的开源jar,高性能的管理着数据源,这里只讨论程序本身负责数据源,不讨论容器管理. ---------------------------------------- ...

  3. C3P0的三种配置方式以及基本配置项详解

    数据库连接池C3P0框架是个非常优异的开源jar,高性能的管理着数据源,这里只讨论程序本身负责数据源,不讨论容器管理. 注:需要的jar包在后面给出链接. ---------------------- ...

  4. html5边框顶格,CSS 三种定位方式以及格式化上下文详解 》 html5jscss

    常规流( Normal flow ) 之称之为常规流,是因为这是相对于后面的浮动和绝对定位的一个概念,浮动和绝对定位元素都脱离了当前的常规流. 在 CSS2.1中,常规流包括块框( block box ...

  5. 二叉树的创建与三种遍历方式(带图文详解)

    二叉树是由多节点组成的,每个节点最多链接两个节点,这两个节点就称为根节点的左树和右树. 每个节点的由数据区,左树,右树组成. typedef struct node {int data;struct ...

  6. Spring Boot(4)--- spring boot的三种启动方式

    springboot的三种启动方式 一:IDE 运行Application这个类的main方法 二:在springboot的应用的根目录下运行mvn spring-boot:run 三:使用mvn i ...

  7. MAVEN的三种打包方式

    MAVEN的三种打包方式 Maven可以使用mvn package指令对项目进行打包,如果使用Java -jar xxx.jar执行运行jar文件,会出现"no main manifest ...

  8. Maven的三种packaging方式(pom、jar、war)

    Maven的三种packaging方式(pom.jar.war)   pom是maven依赖文件  jar是java普通项目打包  war是java web项目打包 pom:打出来可以作为其他项目的m ...

  9. GPS/BDS:星历表、历书、GPS三种启动方式

    星历表.历书.GPS三种启动方式 转自:https://blog.csdn.net/longwei91/article/details/82379165 星历表(Ephemeris):包含了非常详细的 ...

最新文章

  1. Spring注解 开发
  2. awstats的安装和配置
  3. java cache缓存_涨姿势:为什么Java中“1000==1000”为false,而”100==100“为true?
  4. 【转】Android应用开发allowBackup敏感信息泄露的一点反思
  5. Linux centos7 配置用户自动登录
  6. 【01背包】最大约数和(jzoj 2126)
  7. 移动端中如何检测设备方向的变化?
  8. 每日一题(30)—— 局部变量能否和全局变量重名?
  9. java后端传object给js_【JSON】JSON在前端和后端传递
  10. php mysql事务实例_PHP + MySQL事务示例
  11. FR-TO-FR本地交换
  12. 重载运算符:作为成员函数还是非成员函数
  13. Braid,另类游戏
  14. java各种优秀开源库收集
  15. jsp余jspx的区别
  16. S3存储服务间数据同步工具Rclone介绍
  17. linux usb有线网卡驱动_Linux系统安装R8169网卡驱动的方法
  18. OP负反馈放大电路的自激振荡
  19. 新手如何推广优化自己的网站
  20. 在一个页面同时引入两个百度地图

热门文章

  1. J - 哈密顿绕行世界问题
  2. java编写创建数据库和表的程序
  3. 利用 keyCode 控制数字输入框
  4. throw throws 区别
  5. iOS并发编程指南之同步
  6. [IE技巧] 如何禁止用户关闭IE浏览器
  7. java宝典_JAVA宝典之_JAVA基础
  8. html5编辑器自带js,javaScript编辑器-HBulider
  9. docker 查看虚拟网卡_最简单的免费虚拟化方案:Hyper-V Server + Windows Admin Center
  10. css3的动画特效--元素旋转(transition,animation)