使用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 实时查看日志

相关文章

  • IDEA配置Maven教程的超详细讲解版

    IDEA配置Maven教程的超详细讲解版

    IntelliJ IDEA是当前最流行的Java IDE(集成开发环境)之一,也是业界公认最好用的Java开发工具之一,这篇文章主要给大家介绍了关于IDEA配置Maven教程的超详细讲解版,需要的朋友可以参考下
    2023-11-11
  • 解决SpringMVC获取请求参数乱码问题

    解决SpringMVC获取请求参数乱码问题

    在使用SpringMVC和thymeleaf进行请求参数处理时,可能会遇到乱码问题,对于GET方法乱码,可通过修改Tomcat的server.xml文件,添加URIEncoding="UTF-8"解决,而POST方法乱码,则需在web.xml配置SpringMVC提供的过滤器
    2024-11-11
  • JAVA使用HtmlUnit爬虫工具模拟登陆CSDN案例

    JAVA使用HtmlUnit爬虫工具模拟登陆CSDN案例

    今天小编就为大家分享一篇关于JAVA使用HtmlUnit爬虫工具模拟登陆CSDN案例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • 理解Java当中的回调机制(翻译)

    理解Java当中的回调机制(翻译)

    今天我要和大家分享一些东西,举例来说这个在JavaScript中用的很多。我要讲讲回调(callbacks)。你知道什么时候用,怎么用这个吗?你真的理解了它在java环境中的用法了吗?当我也问我自己这些问题,这也是我开始研究这些的原因
    2014-10-10
  • Java实现的打地鼠小游戏完整示例【附源码下载】

    Java实现的打地鼠小游戏完整示例【附源码下载】

    这篇文章主要介绍了Java实现的打地鼠小游戏,结合完整实例形式分析了Java多线程操作及键盘按键响应实现的打地鼠游戏功能相关操作技巧,需要的朋友可以参考下
    2018-07-07
  • java中redissonClient 分布式锁的使用

    java中redissonClient 分布式锁的使用

    在集群的情况下,用户多次请求接口时,存入的内容可能会导致重复,这时候就可以使用分布式锁来限制,本文就来介绍一下java中redissonClient 分布式锁的使用,感兴趣的可以了解一下
    2024-03-03
  • 很多人竟然不知道Java线程池的创建方式有7种

    很多人竟然不知道Java线程池的创建方式有7种

    本文主要介绍了很多人竟然不知道Java线程池的创建方式有7种,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • 利用Java实现更改Word中的页面大小和页面方向

    利用Java实现更改Word中的页面大小和页面方向

    这篇文章主要为大家详细介绍了一种高效便捷的方法——通过Java应用程序,以编程方式更改Word中的页面大小和页面方向,感兴趣的可以了解一下
    2023-03-03
  • Java中sharding-jdbc按年月分片的示例代码

    Java中sharding-jdbc按年月分片的示例代码

    本文主要介绍了Java中sharding-jdbc按年月分片的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • java继承的概念及案例解析

    java继承的概念及案例解析

    这篇文章主要介绍了java继承的概念及案例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10

最新评论