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

news2024/11/15 11:47:59

文章目录

  • 一、前景(jar包和war包区别)
  • 一、部署jar包程序
    • 1. 项目打成jar包
      • ①方式一:使用idea工具打包项目
      • ②方式二:通过cmd命令的方式打包项目
    • 2. 项目命令启动
      • ① 查看之前启动的程序,关闭之
      • ② 启动程序
      • ③ 验证是否部署成功
      • ④ 部署时的问题 (多个项目不同端口的防火墙问题/解决方法)
        • 解决方式一:直接关闭防火墙(不推荐)
        • 解决方式二:增加对应的访问端口 (推荐)
          • 1. 查看防火墙已开发端口
          • 2. 增加防火墙开放端口
            • 方式一:使用命令添加 (推荐
            • 方式二:使用编辑/etc/firewalld/zones/public.xml文件的方式增加
          • 3. 验证访问成功
  • 二、部署war包程序
    • 1. 将war包放在webapps目录下
    • 2. 重启Tomcat
      • (1)进入Tomcat的bin目录
      • (2)关闭Tomcat
      • (3)查看Tomcat是否已关闭
      • (4)启动Tomcat

一、前景(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工具打包项目

在这里插入图片描述

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

在Windows系统下,通过按下Win + R键打开终端运行窗口;
通过 cmd cd 到你的java项目文件夹下; ( G: 切换盘符,注意:不需要区分大小写,但是“:”冒号需要加上)
在这里插入图片描述
PS:上面的Java项目文件夹,指的是你项目的根路径
在这里插入图片描述

最后执行命令

mvn clean package -DskipTests

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

在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述

2. 项目命令启动

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

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

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

在这里插入图片描述
以上说明没有包含 .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访问

在这里插入图片描述

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

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

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

在这里插入图片描述

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

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

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

 
查看防火墙状态
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

在这里插入图片描述

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

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

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

在这里插入图片描述
输入命令生效:

firewall-cmd --reload

查看是否生效

firewall-cmd --list-all

在这里插入图片描述

3. 验证访问成功

在这里插入图片描述

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 完结



上一篇:
Linux 导入MySQL数据库(四)
下一篇:


end

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/635299.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue中如何进行数据筛选与搜索功能实现

Vue中如何进行数据筛选与搜索功能实现 在Vue应用中,数据筛选和搜索是常见的需求。本文将介绍如何在Vue中进行数据筛选和搜索功能的实现,包括基于原生JavaScript的筛选和搜索、基于Lodash库的筛选和搜索、以及基于Vue插件的筛选和搜索。 基于原生JavaScr…

Hazel游戏引擎(012)GLFW窗口事件

文中若有代码、术语等错误,欢迎指正 文章目录 前言如何确定GLFW窗口事件的回调函数参数Application接收事件回调流程原项目流程(12345)自己写的简单Demo与流程(123) 前言 此节目的 为了完成008计划窗口事件的接收glfw窗口事件以及回调部分 此节要完成 使用glfw函数…

C语言之指针初阶(1)

本章重点 1. 指针是什么 2. 指针和指针类型 3. 野指针 4. 指针运算 5. 指针和数组 6. 二级指针 7. 指针数组 今天我们讲解前4个稍微简单一点的内容,下一篇博客讲解后三部分 首先引入话题 我们口语讲到指针,比如p指针,其实想要…

【0基础自研记录】ESP32-CAM自制个人网络监控

目的:实现一个小型家庭监控 一、前期准备 1.硬件准备 esp32-acm烧录板烧录线 2.软件准备 Arduion IDE CH340串口驱动 下载地址如下 Arduion IDE:https://www.arduino.cc/en/software CH340串口驱动 链接:https://pan.baidu.com/s/1ri8dK7wW6KFz8rOPs…

已知一个整数,如何判断这个整数是无符号的?

前言 记录6月11日,肯哥在群里面分享的一个问题。说实话,看到题目想了半天没明白。一看答案,才发现,这题真的简单。 题目 已知一个整数,如何判断这个整数是无符号的? 题解 (1)因为我的…

JVM相关特性

每个使用Java的开发者都知道Java字节码是在JRE中运行(JRE: Java 运行时环境)。JVM则是JRE中的核心组成部分,承担分析和执行Java字节码的工作,而Java程序员通常并不需要深入了解JVM运行情况就可以开发出大型应用和类库。尽管如此,如果你对JVM有…

008:vue中el-upload不显示上传的文件列表

第008个 查看专栏目录: VUE — element UI echarts,openlayers,cesium,leaflet,mapbox,d3,canvas 免费交流社区 专栏目标 在vue和element UI联合技术栈的操控下,本专栏提供行之有效的源代码示例…

废柴日记8:从入门到入狱的Python爬虫学习笔记1(入门篇)

前言:我错了,但下次也不一定(●’◡’●) 米娜桑,好久不见,不知道这段时间各位手中的西瓜刀有没有按时擦亮呢? 我也是在摸爬滚打将近一年之后总算是找到了一点人生的方向所以当成救命稻草现在正死死握紧不放手的啊。…

【Windows 系统笔记】使用服务器运行装载AList+本地安装RaiDrive进行网盘本地挂载

文章目录 前言准备工作一、购买一台云服务器配置服务器安装宝塔面板新建网站进入当前目录 二、安装AList三、登录四、开启域名访问五、挂载阿里云盘刷新令牌 六、使用RaiDrive挂载到本地 前言 大家肯定很好奇我为什么要写一篇这样的文章,因为之前一直使用本地挂载网…

SQL索引

一、索引概述 介绍: 索引是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以…

【数据结构与算法】04 哈希表 / 散列表 (哈希函数、哈希冲突、链地址法、开放地址法、SHA256)

一种很好用,很高效,又一学就会的数据结构,你确定不看看? 一、哈希表 Hash Table1.1 核心概念1.2 哈希函数 Hash Function1.3 哈希冲突 Hash Collision1.4 哈希冲突解决1.41 方法概述1.42 链地址法 Separate Chaining1.43 开放寻址…

几种技巧让大模型(ChatGPT、文心一言)帮你提高写代码效率!

代码神器 自从大模型推出来之后,似乎没有什么工作是大模型不能做的。特别是在文本生成、文案写作、代码提示、代码生成、代码改错等方面都表现出不错的能力。下面我将介绍运用大模型写代码的几种方式,帮助程序员写出更好的代码!(…

华为OD机试真题 JavaScript 实现【一种字符串压缩表示的解压】【2022Q4 100分】,附详细解题思路

一、题目描述 有一种简易压缩算法:针对全部由小写英文字母组成的字符串,将其中连续超过两个相同字母的部分压缩为连续个数加该字母,其他部分保持原样不变。例如:字符串“aaabbccccd”经过压缩成为字符串“3abb4cd”。 请您编写解…

shell脚本学习记录(重定向)

Shell 输入/输出重定向 大多数 UNIX 系统命令从你的终端接受输入并将所产生的输出发送回​​到您的终端。 输出重定向 重定向一般通过在命令间插入特定的符号来实现。特别的,这些符号的语法如下所示: command1 > file1 上面这个命令执行command1然后将输出的…

maven访问仓库的顺序

1.没有配置私服的情况下(大部分情况下) 如上图所示,maven是依次从本地仓库、中央仓库和第三方仓库获取依赖的,其实在maven中并不是以这三种类型区分的,在maven中只有两种仓库类型,本地仓库和远程仓库&#…

Systemverilog中的Driving Strength讲解

在systemverilog中,net用于对电路中连线进行建模,driving strength(驱动强度)可以让net变量值的建模更加精确。net变量拥有4态逻辑值(0,1,z,x),它的driving strength有(supply,strong,pull,weak,highz)。net的值由连接到net的driver源(驱动源…

【开源工具】使用Whisper将提取视频、语音的字幕

这里写目录标题 一、语音转字幕操作步骤1、下载安装包Assets\WhisperDesktop.zip[^2]2、加载模型2.1 下载模型2.1.1 进入Hugging Face[^3]的仓库2.1.2 选择需要下载的模型2.1.3 配置模型路径 3、语音转字幕4、实时语言转录功能 二、相关简介[^1]特点开发人员指南构建说明其他注…

模拟退火(SA)算法

目录 模拟退火算法 主要代码 Mutate Sphere 模拟退火算法 主要代码 repmat 重复数组副本 B repmat(A,n) 返回一个数组,该数组在其行维度和列维度包含 A 的 n 个副本。A 为矩阵时,B 大小为 size(A)*n。 unifrnd 生成连续统一的随机数 sort 对数组进行…

抖音百科词条创建在哪里?

抖音作为中国火爆的短视频平台,拥有相当庞大的用户群体,用户在抖音上创建百科词条就可以获得非常可观的曝光和展现,抖音百科词条是通过哪种方式创建的呢?想要创建一个抖音百科怎么做?接下来伯乐网络传媒就来给大家讲一…

Linux之进程信号(上)

文章目录 前言一、进程信号二、查看命令kill -l与信号解释man 7 signal1.kill -l2.man 7 signal 三、信号的产生1.按键ctrl cctrl zctrl \ 2.系统调用kill——向任意进程发送信号raise——进程给自己发送任意信号abort——进程给自己指定的信号(6号信号&#xff…