继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Linux中运行SpringBoot项目(jar包,永久运行)

阿加莎信徒
关注TA
已关注
手记 1
粉丝 0
获赞 0

1.疑惑 打包 SpringBoot 项目时,用 mvn install 默认打包成了 jar

最近学习了 SpringBoot 来做项目,打 war 包发布时发现了两个问题:

打包 SpringBoot 项目时,用 mvn install 默认打包成了 jar ,我就有些疑惑,web 项目不是需要打包成 war包嘛?
于是用java -jar 项目名.jar的方式运行,发现没任何问题,页面可以访问,为什么这里不需要tomcat也可以运行了?

然后我又打包成 war 放进 tomcat 运行,发现端口号变成 tomcat 默认的 8080(我在server.port中设置端口8090)项目名称也必须加上了。
也就是说我在原来的机器的IDEA中运行,项目接口地址为 ip:8090/login ,打包放进另一台机器的tomcat就变成了 ip:8080/项目名/login ,这又是为什么呢?

我在网上查了查资料,发现 SpringBoot 通过 jar 运行实际上是启动了内置的 tomcat ,所以用的是应用的配置文件中的端口,直接部署到 tomcat 之后,内置的 tomcat 就不会启用,所以相关配置就以安装的 tomcat 为准,与应用的配置文件就没有关系了。

所以我决定使用 jar 类型打包项目,因为 SpringBoot 默认推荐的是 html ,而不是 jsp ,所以使用 jar 包会更方便 。

2.打包成 jar 包,运行

在 Linux 中运行 jar 包 ,只需要一条指令:

java -jar XXXX.jar

XXXX.jar就是你的jar包,出现 Started XXXX in 10.144 seconds (JVM running for 11.731) 这样的,项目就运行成功。

但是这样启动方式在关闭客户端项目就停止了,比如我在阿里云服务器关闭了终端就无法访问了,当你的项目需要永久的运行的时候,就需要使用下面的方法:

nohup java -jar XXXX.jar > system.log 2>&1 &
  1. nohup命令 用途:用在一个命令的最前面,表示不挂断地运行命令。 语法:nohup Command [Arg …] [&]

  2. & 命令 用途:用在一个命令的最后面,表示这个命令在后台运行。 语法:一般和nohup一起使用,即:nohup command &。


即将 2 (Linux标准错误输出)和 1 (Linux的标准输出)都输出到同一个文件中。 例如:

语句 :nohup java -jar app.jar >log 2>&1 &
本来1----->屏幕 (1指向屏幕)
执行>log后, 1----->log (1指向log)
执行2>&1后, 2----->1 (2指向1,而1指向log,因此2也指向了log)

也不知道我有没有讲清楚,可以下放了评论留言一起探讨一下~

运行命令后,在同级目录下会出现system.log文件,这个文件就项目的日志文件。

运行命令后,在同级目录下会出现 system.log 文件,这个文件就项目的日志文件。

3.关闭项目

使用命令:ps -a可以查看Java程序运行的进程号,用于停止程序,不过当程序有好几个的时候,用命令:ps -ef|grep java这个命令会将搜索Java相关的所以进程号,根据jar包名称找到需要停止的进程号,使用命令:kill -9 11759杀死进程,11759是进程号。

ps -aux
ps -aux | grep java
kill -9 进程号

(PS:杀死进程时一定要注意不要看错了进程号,以免杀错!!)


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP