使用linux部署Spring Boot程序

 更新时间:2018年01月15日 10:47:50   作者:青蛙小王子  
springboot程序在linux服务器上应该怎么部署?这次就分享下linux下如何正确部署springboot程序,感兴趣的朋友一起看看吧

SpingBoot的学习总算告一段落了,但它还留给了我们一个疑问,那就是程序在linux服务器上应该怎么部署?使用命令启动程序后如果ssh断开了程序会不会被shutdown?对于第一个问题比较好解决,只需要保证jdk安装正确就不会有太大问题。棘手的问题是后面这个,解决问题的关键就是要保证程序以守护进程(后台方式)运行。这次就分享下linux下如何正确部署程序

为了解决这个问题,我查阅网上的资料找到了下面3种解决方案

1   把jar包弄成系统服务(不推荐)

这种方法缺点也比较明显,那就是容易出现服务启动不起来,因为不同的linux发行版本都或多或少存在差异

2  使用nohup 命令配合kill -9 xxx

这种方法比较容易接受,也是一种折中的做法,但是要停止程序会比较麻烦需要使用命令找到进程再使用kill -9 ,还是有点麻烦

3 使用screen、tmux等方式(推荐)

综合考虑这种方法比较科学因为它提供了统一的管理多个会话的界面和相应的功能,操作起来比较简单些,缺点是需要一点点的学习成本

tmux常用命令:

$ tmux new -s session-name           新建会话
$ tmux a -t session-name               接入指定会话
$ tmux detach /$ Ctrl-b d              断开当前会话
$ tmux kill-session -t session-name  关闭会话

$ tmux ls                                       显示所有会话

screen常用命令:

$ screen -S window-name           新建会话
$ screen -r 会话编号或名称           接入指定会话/重新连接会话
$ screen -ls                               显示所有会话
Ctrl+a b                                   分离当前会话
Ctrl+a k 

以下是它们的区别,虽说tmux比较先进但究竟如何选择还是看大家的使用习惯

tmux 和 screen 很像,但比 screen 更好。要问好在哪里,简单的回答就是虽然与 screen 的功能相同,但是 tmux 设计得更好。screen 虽然可用,但是很不稳定。

以下是一些 tmux 超越 screen 的地方:

  • screen 的项目大体上已经终止了,并且代码中有大量的问题
  • tmux 是一个活跃的项目,并且其代码库经常进行更新
  • tmux 使用的是真正的客户端/服务器模型,而 screen 只是模拟了这种模型的行为
  • tmux 同时支持 emacs 和 vim 的快捷键
  • tmux 支持自动重命名窗口
  • tmux 可以高度的脚本化
  • tmux 的窗口分割功能更加先进

SpringBoot使用maven打包比较方便,打包时检查下pom.xml的配置,确保有如下配置:     

<build> 
<plugins> 
  <plugin> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-maven-plugin</artifactId> 
    <configuration> 
      <!--fork : 如果没有该项配置,devtools不会起作用,即应用不会restart --> 
      <fork>true</fork> 
      <!-- 可选的配置 --> 
      <executable>true</executable> 
    </configuration> 
  </plugin> 
</plugins> 
lt;/build> 

打包就用maven install就行了,如果打包成功找到相应的jar重命名后上传到linux服务器授权一下就行

这样应用就启动了,即使命令行关闭了或者从ssh断开也不会影响程序的正常运行

断开连接

结束会话后程序就被shutdown了,如下所示

screen的使用和tmux大同小异,这边已经实践过了,就部署程序使其在后台运行,选screen和tmux效果都差不多。

PS:下面给大家介绍linux部署spring-boot

先对项目maven clean 然后在项目上maven install  打成jar包,之后到linux上删除前一个版本的进程

  查看java进程的命令 ps -ef | grep java

  杀死进程 kill -9 进程号

  直接运行spring-boot项目 nohup java -jar sinocube.jar & 使用nohup一定要以&结尾

  nohup 回输出日志文件,日志文件可以自定义文件名,默认为nohup.nohup.out

       cat nohup.out 查看日志nohup.out是文件名称
  tailf nohup.out 实时查看日志

相关文章

  • Mybatis-Plus中的selectByMap使用实例

    Mybatis-Plus中的selectByMap使用实例

    Mybatis-Plus来对数据库进行增删改查时,将里面的函数试了个遍,接下来我就将使用selectByMap函数的简单测试实例写出来,方便没有使用过的朋友们快速上手,感兴趣的可以了解一下
    2021-11-11
  • Java agent的入门与demo演示详解

    Java agent的入门与demo演示详解

    Java Agent 是 Java 1.5 版本之后引⼊的特性,其主要作⽤是在class被加载之前对其拦截,这篇文章主要介绍了agent的简单使用,需要的可以参考下
    2023-05-05
  • 在VSCode里使用Jupyter Notebook调试Java代码的详细过程

    在VSCode里使用Jupyter Notebook调试Java代码的详细过程

    Jupyter Notebook是以网页的形式打开,可以在网页页面中直接编写代码和运行代码,代码的运行结果也会直接在代码块下显示的程序,这篇文章主要介绍了在VSCode里使用Jupyter Notebook,调试Java代码,需要的朋友可以参考下
    2022-07-07
  • Java8 Lamda方法引用和构造引用原理

    Java8 Lamda方法引用和构造引用原理

    这篇文章主要介绍了Java8 Lamda方法引用和构造引用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • SpringBoot之Order注解启动顺序说明

    SpringBoot之Order注解启动顺序说明

    这篇文章主要介绍了SpringBoot之Order注解启动顺序说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • SpringDataJPA详解增删改查操作方法

    SpringDataJPA详解增删改查操作方法

    这篇文章主要介绍了SpringDataJpa增删改查操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • java编程实现求解八枚银币代码分享

    java编程实现求解八枚银币代码分享

    这篇文章主要介绍了java编程实现求解八枚银币代码分享,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11
  • Java虚拟机工作原理

    Java虚拟机工作原理

    本文主要介绍了Java虚拟机的工作原理。具有很好的参考价值。下面跟着小编一起来看下吧
    2017-03-03
  • Feign远程调用传递对象参数并返回自定义分页数据的过程解析

    Feign远程调用传递对象参数并返回自定义分页数据的过程解析

    这篇文章主要介绍了Feign远程调用传递对象参数并返回自定义分页数据的过程解析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • Spring AOP操作的相关术语及环境准备

    Spring AOP操作的相关术语及环境准备

    这篇文章主要为大家介绍了Spring AOP操作的相关术语及环境准备学习,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05

最新评论