springboot之jar包Linux后台启动部署及滚动日志查看且日志输出至文件保存(超级详细)

2023-05-16

???作者:bug菌

博客:CSDN、掘金等

??公众号:猿圈奇妙屋

??特别声明:原创不易,转载请附上原文出处链接和本文声明,谢谢配合。

??版权声明:文章里可能部分文字或者图片来源于互联网或者百度百科,如有侵权请联系bug菌处理。

一、前言??

**环境:**jdk1.8 + springboot 2.3.1.RELEASE + centos7.6

二、需求分析??

今天临时被安排,由于没有运维岗人员,所以项目部署的活自然就落在了后端的肩膀上,这还能咋推辞呢,自然就只能能干的来做了呗(这不就是我啦???)。

虽然我都有过这类实操经验,但是在不涨工资的基础上,要兼任这么多种角色工作,内心表示有点委屈啊???

在linux服务器进行后端项目部署,常规有两种部署方式,一种是war包,一种是jar包。服务器还是台裸机,那我一切从简,首先是jdk安排及配置,这里我就不详细介绍了。需要的小伙伴可以看我这篇:《虚拟机linux(centos7版本)安装jdk1.8》?

所以,面临的第一件事,就是把项目从打jar包开始。

三、教程正文??

1通过idea打jar包??

基本玩IntelliJ_IDEA_的同学都知道,它有提供一个maven快捷操作栏,maven构建现在基本项目都使用吧,除非不是maven项目。所以我接下来就还是以maven构建工具展开举例吧。

如下是IDEA开发工具maven操作栏截图:

而我们打jar包,只需要使用它提供的package操作就能快速打包,点击package,控制台就能看到编译信息;等待一会儿,将会在你项目根目录下的target文件夹下,新增一个名为 xxx-1.0.jar与xxx-1.0.jar.original的文件,其xxx-1.0.jar 就是我们所想要的文件,言称jar包。

如下是通过maven打包,执行package打jar成功的截图:如果打包失败了,可以看看是啥情况导致,都是有错误信息打印的。

2jar包上传服务器??

接下来就是将我们打包好的jar包上传到服务器,如果你是使用的xshell 进行ssh 服务器连接,那么你既可以通过拖拽的方式(直接将jar包拖进xshell连接窗口内即可),也可以通过命令的方式将文件发送到服务器,这里我给大家演示后一种,讲一下如何通过命令的方式将文件发送到服务器吧?这里大家可以看看我是如何做的。

不知道大家有么有玩过sz 、rz命令?运行sz、rz可比你ftp等方式简单的多,你压根都不需要配置FTP服务等。该命令是Linux同Windows进行ZModem文件传输的_命令行_工具。一般是默认不安装的,即你需要手动安装,一条安装命令你就能拥有它!

如下是两种系统的安装命令,语法略有不同。

linux系统安装_命令行_工具:

yum install lrzsz

Ubuntu系统安装_命令行_工具:

sudo apt-get install lrzsz

然后我再讲解一下sz、rz执行分别作用是什么?其实就是上传下载。

  • sz:从服务器下载文件到本地。
  • rz:从本地上传文件到服务器。

安装完命令后,所以我们直接在服务器中,输入rz 上传命令,然后回车,即会跳转打开本地桌面文件夹,然后选择我们打包好的xxx.jar。

选择好后,然后点击打开,我们就可以看到jar包正在进行上传至服务器,其jar包上传位置就是你当前服务器的路径位置,你可以等上传完后执行ls查看一下是否有成功上传。

随着jar包的大小,上传时间也有所不同,越大则上传越慢。我们稍等片刻??,毕竟我的jar包有66.3MB呢???。

如下是表示jar包已上传成功。

我们可以执行ls命令查看一眼,是否上传成功?

3检查java环境??

我们来检查一下 java环境配置是否正常。查看下java版本。

java -version

如下是执行java -version 命令执行截图:

4jar后台启动??

我们都知道,jar包启动执行命令为: java -jar xxx.jar 。对吧,但是有一点,我们要实现项目的后台启动,如果你就常规启动,那么你的运行窗口不能关闭,跟你在Windows环境启动不能关闭小黑窗是一样的。只要你xshell断开连接或者关xshell关闭,项目就运行终止,所以接下来我来教你一种后台启动jar服务的方式。

这个时候,nohup命令就要闪亮登场了。nohup全称:no hang up(不挂起),也就是说,当前交互命令行退出的时候,程序还在运行。这不就达到了我们的目的么?

那后台挂起后又怎么暂停项目服务呢?其实你就只需要执行kill命令,把该服务都要占用的进程id找到,如下命令可查找到你jar服务进程id,然后kill鲨掉即可:

ps -ef | grep jar名
kill -9 进程id

实际操作演示如下: 仅供参考

所以结合nohup命令,实际jar执行组合命令如下:仅供参考

nohup java -jar xxx.jar &

5控制台日志输出保存??

如果你要实时记录项目输出日志,那你就可以这么玩儿,在启动命令后加上这串命令:其中log.file是你存储日志的文件,你也可以随意命名,启动后,如果不存在该log.file,它会自动帮你创建该文件进行日志写入的。非常的流批???。

> log.file 2>&1 &

由于我只记录错误日志,所以我是将标准错误日志重定向到标准输出1中,然后写入到log.file中。

拓展:

2>&1 什么意思?它代表将标准错误 2 重定向到标准输出 &1 ,标准输出 &1 再被重定向输入到 log.file 文件中。其中数字(0,1,2)的表示如下:

  • 0 :stdin (standard input,标准输入)
  • 1 :stdout (standard output,标准输出)
  • 2 :stderr (standard error,标准错误输出)

所以启动命令组合如下:仅供参考

nohup java -jar xxx.jar > log.file 2>&1 &

6外部配置文件启动??

我们都知道,springboot jar运行是可以指定外部配置文件启动,对吧,那么这究竟得有啥好处呢?那就是当你修改配置文件,你不需要再重新打jar包,而只需要修改yaml然后重启项目即可,这部分的内容你可以去看看springboot的config文件夹的作用即会明白,这里就不做过多解释,毕竟我的主题不是介绍这个。

所以,我们都会将config配置文件夹放与xxx.jar包同级。比如:

然后再通过启动命令加上指定你要运行的配置文件即可。那具体怎么指定呢?其实也是有语法的。在你启动java -jar xxx.jar 后面直接这样指定,然后test是你application-test.yaml的配置指向,就跟你配application.yaml里的active语法一致,这个我也就不多解释。

--spring.profiles.active = test

总结以上,所以最终jar启动组合命令如下:仅供参考

nohup java -jar review-server.jar --spring.profiles.active = test > log.file 2>&1 &

如下是实际启动命名截图:

可以看到,启动了并返回了该服务的进程id。我们可以来验证一下,是不是该项目服务的进程id。

7查看实时滚动日志??

如果想要监控项目控制台的实时日志,那该怎么做?那我们就用到了 tail 命令啦。

命令格式:

tail [参数] [文件]  

默认将每个 file 的最后 10 行打印到标准输出。

实际使用截图:

tail -f nohup.out

新的日志行添加至 nohup.out 文件时,tail 命令会继续显示新增的行,保证10行。
显示会一直继续,按ctrl+c可以退出实时查看,即可输入其他指令了。

与jar包同级目录下,有自动生成这两文件:log.file 与 nohup.out。这是两什么文件呢?有没有小伙伴知道的?

其中,log.file是我用来记录项目运行错误日志的。而nohup.out则包含了项目控制台发到终端显示器上的所有输出,且输出会追加到现有的nohup.out文件中,上述也已经打开给你们看了,就是项目控制台打印的内容,后续也方便我们监控项目日志及定位报错。

8总结??

对于有的小伙伴不想看我仔细分析,那么你直接看这里就好啦,我把本文章最核心的告诉你,那就是jar的完整启动命令,直接抄标准答案。仅供参考:

nohup java -jar review-server.jar --spring.profiles.active = test > log.file 2>&1 &

… …

好啦,以上就是的如何springboot项目jar后台启动部署及监听日志的全部教学内容啦。如果对你有所帮助,还请不要忘记给bug菌[三连支持]哟。如果想获得更多的学习资源或者想和更多的技术爱好者一起交流,可以关注我的公众号『猿圈奇妙屋』,后台回复关键词领取学习资料、大厂面经、面试模板等海量资源,就等你来拿。


四、文末??

如果你还想要学习更多,小伙伴们大可关注bug菌专门为你们创建的专栏《springboot零基础入门教学》,都是我一手打下的江山,持续更新中,希望能帮助到更多小伙伴们。

我是bug菌,一名想走??出大山改变命运的程序猿。接下来的路还很长,都等待着我们去突破、去挑战。来吧,小伙伴们,我们一起加油!未来皆可期,fighting!

最后送大家两句我很喜欢的话,与诸君共勉!


做你想做的人,没有时间限制,只要愿意,什么时候都可以start。

??你能从现在开始改变,也可以一成不变,这件事,没有规矩可言,你可以活出最精彩的自己。


??如果文章对您有所帮助,就请留下您的吧!(#.#);

??如果喜欢bug菌分享的文章,就请给bug菌点个关注吧!(′‵)づ╭~;

??如果对文章有任何疑问,还请文末留言或者加群吧【QQ交流群:708072830】;

??鉴于个人经验有限,所有观点及技术研点,如有异议,请直接回复参与讨论(请勿发表攻击言论,谢谢);

??版权声明:原创不易,转载请附上原文出处链接和本文声明,版权所有,盗版必究!!!谢谢。

先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

springboot之jar包Linux后台启动部署及滚动日志查看且日志输出至文件保存(超级详细) 的相关文章

随机推荐

  • 【2021最新版】RabbitMQ面试题总结(32道题含答案解析)

    文章目录 1 什么是rabbitmq xff1f 2 为什么要使用rabbitmq xff1f 3 使用rabbitmq的场景 4 如何确保消息正确地发送至RabbitMQ xff1f 如何确保消息接收方消费了消息 xff1f 5 如何避免
  • 忘记mysql密码后如何修改密码(2022最新版详细教程保姆级)

    忘记mysql密码后如何修改密码 注意事项步骤 注意事项 一共用到两个cmd窗口 xff0c 每一个都要以管理员身份打开 xff0c 且在修改密码后 xff0c 要先关闭第一个跳过验证密码的mysql服务的cmd窗口 xff0c 再启动my
  • 忘记密码时如何修改mysql密码

    前言 近期学习j2ee开发时 xff0c 初步接触MySQL xff0c 偶然发现以往安装MySQL时修改的密码忘记 xff0c 于是查找资料学习了如何在忘记密码的情况下改变MySQL密码 以下为末学个人简介 xff0c 有不周之处 xff
  • 快速入手node.js

    目录 1 什么是 Node js 2 fs模块 3 path模块 4 http 模块 1 IP 地址 2 域名和域名服务器 3 端口号 4 创建 web 服务器的基本步骤 1 什么是 Node js Node js是让Javascript脱
  • 快速掌握 MyBatis 框架(二)

    文章目录 一 前言 1 1 数据库与表1 2 实体类1 3 MyBatisX 插件1 4 SQL 日志查看配置 二 多表查询 2 1 一对一2 2 一对多 三 动态 SQL 使用 3 1 lt if gt 标签3 2 lt trim gt
  • Cesium加载离线地图和离线地形

    文章目录 前言一 Cesium加载离线地图 1 1 下载数据2 2 数据处理2 3 地图发布2 4下载速度改进 二 Cesium加载离线地形 2 1 下载数据2 2 数据处理2 3 地形发布2 4 遇到的问题 前言 直接把地图数据切片 xf
  • Charles抓包显示<unknown>解决方案

    上篇 xff1a Charles抓包微信小程序数据 charles抓包会出现 xff0c 请求前都加了锁 xff0c 具体地址为的情况 解决问题 首先电脑上需要安装charles xff0c 然后需要设置手机上的WiFi设置 xff0c 修
  • Chrome 配置samesite=none方式

    提示 xff1a 文章写完后 xff0c 目录可以自动生成 xff0c 如何生成可参考右边的帮助文档 文章目录 前言二 解决方案 1 方案一 xff1a 修改浏览器配置2 方案二 xff1a 使用Nginx3 方案三 xff1a 若服务器为
  • Chrome插件开发入门

    视频作者 xff1a 猿伙伴的个人空间 哔哩哔哩 bilibili 源码 xff1a https pan baidu com s 1EUOUo6QwHezyddmslyFsJQ 提取码 xff1a xtex 目录 一 第一个插件helloW
  • CISP-PTE真题演示

    周末帮好兄弟做PTE的真题 xff0c 觉得确实挺有意思的 xff0c 于是就有了这篇文章 xff0c 侵删侵删哈 第一阶段 基础题目一 xff1a SQL注入 所谓SQL注入 xff0c 就是通过把SQL命令插入到Web表单提交或输入域名
  • python循环性能pk

    python循环性能pk 在任何一种编程语言中 xff0c 循环都是非常消耗时间的操作 假设任意一种简单的单步操作耗费的时间是1个单位 xff0c 将此操作重复执行上万次 xff0c 最终耗费的时间也将增长上万倍 众所周知 xff0c py
  • Java程序员必读的入门&进阶书单

    外链图片转存失败 源站可能有防盗链机制 建议将图片保存下来直接上传 img lZRiIYGZ 1659350372441 http static chayuqing com edddeb70713efa2da69e953240a5b3ab
  • Java程序员怎样进阶

    对于很多学习Java的程序员来说 xff0c 回过头来看入门Java的过程并不难 xff0c 反而是学到后期感觉没有进步 xff0c 尤其是对于一个进军编程界的两三年的Java程序员来说 xff0c 工作如果还只是增删改查 xff0c 这可
  • java程序员该如何进阶?这份java中高级核心知识全面解析请收好

    Java中高级核心知识全面解析 是整理收录GitHub50K 43 Star以上的高质量学习文档 xff0c 前前后后花了近半个月的时间 xff0c 终于整理而成 包含了Java基础 网络 Linux 数据结构与算法 数据库 系统设计 工具
  • MySQL的 DDL和DML和DQL的基本语法

    前言 SQL语句 xff0c 即结构化查询语言 Structured Query Language xff0c 是一种特殊目的的编程语言 xff0c 是一种数据库查询和程序设计语言 xff0c 用于存取数据以及查询 更新和管理关系数据库系统
  • MySQL的10种常用数据类型

    MySQL的数据类型 常用的数据类型有 xff1a 整型 xff08 xxxint xff09 位类型 bit 浮点型 xff08 float和double real xff09 定点数 xff08 decimal numeric xff0
  • MySQL的DATE_FORMAT()函数将Date转为字符串

    一 前言 最近要做一些报表 xff0c 其中有一个创建报表的时间 xff0c 需要以固定的格式输出 xff1b 那么在SQL层面如何处理呢 xff1f 二 DATE FORMAT 函数 要将日期值格式化为特定格式 xff0c 可以使用DAT
  • MySQL的on duplicate key update 的使用

    mysql的存在就更新不存在就插入实现 先建数据库表 xff0c 重点要添加主键索引 xff08 id列 xff0c 没有测试 xff09 和唯一索引 xff08 branch no列 xff09 xff0c 随便找表测试 INSERT I
  • MySQL的Replace用法详解

    replace into平时在开发中很少用到 xff0c 这次是因为在做一个生成分布式ID的开源项目 xff0c 调研雅虎推出的一个基于数据库生成唯一id生成方案 xff1a flickr 碰到的一个知识盲点 xff0c 仅以此篇记录一下
  • springboot之jar包Linux后台启动部署及滚动日志查看且日志输出至文件保存(超级详细)

    作者 xff1a bug菌 博客 xff1a CSDN 掘金等 公众号 xff1a 猿圈奇妙屋 特别声明 xff1a 原创不易 xff0c 转载请附上原文出处链接和本文声明 xff0c 谢谢配合 版权声明 xff1a 文章里可能部分文字或者