Linux 部署Java项目-jar包和war包(五)

冉升6个月前行业资讯428

一、前景(jar包和war包区别)

部署之前先说下两种包,java项目部署到服务器一般有用war包的,也有用jar包的,微服务spring-cloud普及后大部分打包都是jar,部署之前先搞清楚自己要打war包还是jar包,下面小介绍两种包的区别:


spring boot既可以打成war发布,也可以打成jar包发布。说一下区别:


jar包:直接通过内置tomcat运行,不需要额外安装tomcat。如需修改内置tomcat的配置,只需要在spring boot的配置文件中配置。内置tomcat没有自己的日志输出,全靠jar包应用输出日志。但是比较方便,快速,比较简单。


war包:传统的应用交付方式,需要安装tomcat,然后放到waeapps目录下运行war包,可以灵活选择tomcat版本,可以直接修改tomcat的配置,有自己的tomcat日志输出,可以灵活配置安全策略。相对打成jar包来说没那么快速方便。


个人比较偏向打成jar包的方式发布应用,因为spring boot已经内置了tomcat,无需额外配置。其实可以搜索下spring

boot的特点,有个非常重要的特性就是spring.


boot把市面优秀的开源技术,都集合起来,方便快速应用。技术没有百分百这种好,也没有百分百那种不好,存在即合理,最主要还是看个人习惯和业务场景需求了。

一、部署jar包程序

1. 项目打成jar包

①方式一:使用idea工具打包项目

1.png

②方式二:通过cmd命令的方式打包项目

Windows系统下,通过按下Win + R键打开终端运行窗口;
通过 cmd cd 到你的java项目文件夹下; ( G: 切换盘符,注意:不需要区分大小写,但是“:”冒号需要加上)

2.png

PS:上面的Java项目文件夹,指的是你项目的根路径

3.png

最后执行命令

mvn clean package -DskipTests

PS: 意思是:先执行mvn clean,删除之前编译的文件,再执行mvn package,进行工程打包操作,在打包的时候跳过test文件夹和文件)

然后就会在你的target文件夹下有一个jar包

6.png

2. 项目命令启动

通过FinalShell、XShell或者命令的形式把jar包上传到Linux服务器中。(springboot的jar包,可以不必放在webapp目录下。)

① 查看之前启动的程序,关闭之

1.查看项目运行的进程的id
ps -ef|grep java


7.png

以上说明没有包含 .jar包运行的Java文件

2.kill 掉该进程即可 ;  -9表示无条件结束
kill -9 xxx

② 启动程序

1.nohup启动方式('推荐,也是本次使用的命令')。nohup java -jar XXX.jar >jarLog.txt &
nohup java -jar person-admin.jar >jarLog.txt &

// 这种方法会把日志文件输入到你指定的文件中,没有则会自动创建。进程会在后台运行。

nohub: 不挂断的运行命令
&:后台运行
>: 日志重定向输出到某个文件

PS: java -jar启动方式。
java -jar *.jar
此中方式只会运行在当前窗口,当关闭窗口或断开连接,jar程序就会结束。故不推荐使用。只适合本地开发和测试时使用

③ 验证是否部署成功

本地电脑(外网访问) : 输入虚拟机Linux环境的IP地址加项目端口xxxx访问

8.png

PS: 注意:如果是正常的部署项目端口号且为8080;那么就没有下述的问题,可以跳过不用管。

④ 部署时的问题 (多个项目不同端口的防火墙问题/解决方法)

注意: 如果Linux虚拟机内网中能够正常访问,而外部本地电脑不能够访问,那么很可能是Linux环境防火墙没有关闭。
或者说端口号没开启。

10.png

解决方式一:直接关闭防火墙(不推荐)

(此举只适用于自己本身的开发或者测试环境、生产环境不建议这么做)

输入以下命令关闭防火墙:

 
查看防火墙状态
systemctl status firewalld.service
 
关闭防火墙
systemctl stop firewalld.service

延伸的相关命令:

开启防火墙
systemctl start firewalld.service
 
关闭防火墙开机启动
systemctl disable firewalld
检查防火墙服务是否已启用 (/禁止还是启用状态)
systemctl is-enabled firewalld
打开开机自启
systemctl enable firewalld
 
查看防火墙已开放端口列表
firewall-cmd --list-all
解决方式二:增加对应的访问端口 (推荐)
1. 查看防火墙已开发端口

通过命令查看防火墙已开放端口列表有哪些:

firewall-cmd --list-all

11.png

2. 增加防火墙开放端口
方式一:使用命令添加 (推荐
firewall-cmd --zone=public --add-port=8888/tcp --permanent

PS:(–permanent永久生效,没有此参数重启后失效)

方式二:使用编辑/etc/firewalld/zones/public.xml文件的方式增加
sudoedit /etc/firewalld/zones/public.xml

12.png输入命令生效:

firewall-cmd --reload

查看是否生效:

firewall-cmd --list-all

13.png

3. 验证访问成功

14.png

jar包 部署 END 完结

二、部署war包程序

1. 将war包放在webapps目录下

2. 重启Tomcat

(1)进入Tomcat的bin目录

cd /usr/local/tomcat/bin

(2)关闭Tomcat

./shutdown.sh

(3)查看Tomcat是否已关闭

ps -ef|grep java

如果显示如下相似信息,说明Tomcat还没有关闭

root      7010     1  0 Apr19 ?        00:30:13 /usr/local/java/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties -Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms1024m -Xmx1024m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=256m -XX:MaxPermSize=256m -XX:+DisableExplicitGC -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/usr/local/tomcat/endorsed -classpath /usr/local/tomcat/bin/bootstrap.jar -Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat -Djava.io.tmpdir=/usr/local/tomcat/temp org.apache.catalina.startup.Bootstrap start

使用kill命令直接杀死相应进程

kill -9 7010

(4)启动Tomcat

./startup.sh

war包 部署 END 完结

本文系转载,版权归原作者所有,如若侵权请联系我们进行删除!  

云掣基于多年在运维领域的丰富时间经验,编写了《云运维服务白皮书》,欢迎大家互相交流学习:

《云运维服务白皮书》下载地址:https://fs80.cn/v2kbbq

想了解更多大数据运维托管服务、数据库运维托管服务、应用系统运维托管服务的的客户,欢迎点击云掣官网沟通咨询:https://yunche.pro/?t=shequ

相关文章

玩转大数据16:大数据存储与文件格式优化

玩转大数据16:大数据存储与文件格式优化

随着大数据时代的到来,存储和处理海量数据成为了一个重要的挑战。在大数据存储中,选择合适的文件格式对数据的压缩率、读写性能和扩展性起着关键作用。本文将介绍大数据存储的挑战,探讨常见的文件格式,并深入讨论...

Docker:容器化和虚拟化

Docker:容器化和虚拟化

虚拟化虚拟化是一种资源管理技术,它将计算机的各种实体资源(如CPU、内存、磁盘空间、网络适配器等)予以抽象、转换后呈现出来,并可供分割、组合为一个或多个电脑配置环境。这些资源的新虚拟部分是不受现有资源...

【Docker 】深入探索 Docker :容器健康检查与安全扫描

【Docker 】深入探索 Docker :容器健康检查与安全扫描

在现代容器化应用的开发与部署过程中,确保服务的可用性和安全性至关重要。本文将探讨容器的健康检查和安全扫描,并分享最佳实践。一、容器健康检查1.1 健康检查的作用健康检查是确保服务在运行时处于可用状态的...

【网络】NAT、代理服务、内网穿透(1)

【网络】NAT、代理服务、内网穿透(1)

1.NAT技术NAT(Network Address Translation,网络地址转换)技术,是解决IP地址不足的主要手段,并且能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机。1.1...

Spring AOP 实战指南:从入门到精通(3)

Spring AOP 实战指南:从入门到精通(3)

3.3 @PointCut:Spring 提供了 @PointCut 注解,把公共的切点表达式提取出来,需要用到时引用该切入点表达式即可,便于后续代码的维护。@Aspect @Slf4j @Com...

一文帮你理解整个SRE运维体系

一文帮你理解整个SRE运维体系

SRE运维体系的构建和工作职责划分。SRE工程师近年来的岗位需求逐年增加,被称为IT行业十大最受欢迎的行业之一。可观测性系统在任何有一定规模的企业内部,一旦推行起来整个SRE的运维模式,那么对于可观测...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。