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

冉升7小时前行业资讯3

一、前景(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

相关文章

MySQL运维之分库分表与读写分离

MySQL运维之分库分表与读写分离

分库分表1.介绍问题分析随着互联网以及移动互联网的发展,应用系统的数据量也是成指数式增长,若采用单数据库进行数据存储,存在以下性能瓶颈:IO瓶颈:热点数据太多,数据库缓存不足,产生大量磁盘IO,效率较...

Linux--多路转接之epoll

Linux--多路转接之epoll

epoll 是 Linux 下多路复用 I/O 接口 select/poll 的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统 CPU 利用率。它是 Linux 下多路复用 AP...

如何重塑IT运维核心竞争力?可观测运维这么做!

如何重塑IT运维核心竞争力?可观测运维这么做!

随着云计算、大数据、人工智能等新兴技术的兴起及运用,无论是通讯、金融、教育,还是交通、政府、企业等行业,都得到飞速发展,但在高速发展的同时,各行业巨大的 IT 维护和管理成本也在与日俱增,存在监控工具...

ubuntu下如何查看显卡及显卡驱动

ubuntu下如何查看显卡及显卡驱动

ubuntu下如何查看显卡及显卡驱动使用nvidia-smi 工具查看查看显卡型号nvida-smi -L$ nvidia-smi -L GPU 0:&nbs...

linux之危险操作

在 Linux 中,某些命令可以对系统造成不可逆的影响,尤其是当以 root 用户(或使用 sudo)执行时。以下是一些不推荐轻易执行的高危命令,除非你非常清楚它们的作用和潜在的后果:rm -rf /...

BetaFlight模块设计之三十二:MSP协议模块分析

BetaFlight模块设计之三十二:MSP协议模块分析

基于BetaFlight开源代码框架简介的框架设计,逐步分析内部模块功能设计。1. MSP协议模块1.1 MSP描述MSP是Multiwii Serial Protocol的缩写,截止目前为止有两个版...

发表评论    

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