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

2年前 (2022) 程序员胖胖胖虎阿
300 0 0

👨‍🎓作者:bug菌 

✏️博客:CSDN、掘金等

💌公众号:猿圈奇妙屋

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

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

一、前言💯

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

二、需求分析💯

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

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

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

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

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

三、教程正文💯

1️⃣通过idea打jar包💤

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

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

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

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

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

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

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

2️⃣jar包上传服务器💤

        接下来就是将我们打包好的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。

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

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

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

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

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

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

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

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

 3️⃣检查java环境💤

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

java -version

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

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

 4️⃣jar后台启动💤

        我们都知道,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

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

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

         所以结合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包同级。比如:

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

         然后再通过启动命令加上指定你要运行的配置文件即可。那具体怎么指定呢?其实也是有语法的。在你启动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 &

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

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

        可以看到,启动了并返回了该服务的进程id。我们可以来验证一下,是不是该项目服务的进程id。springboot之jar包Linux后台启动部署及滚动日志查看且日志输出至文件保存(超级详细)

7️⃣查看实时滚动日志💤

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

命令格式:

tail [参数] [文件]  

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

实际使用截图:

tail -f nohup.out

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

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

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

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

        其中,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零基础入门教学》,都是我一手打下的江山,持续更新中,希望能帮助到更多小伙伴们。

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

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

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


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

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


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

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

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

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

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

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

相关文章

暂无评论

暂无评论...