项目打包部署之部署jar包和war包

2023-11-01

一、概述:

 本文将介绍将Java项目部署到Linux服务器上的步骤。首先,你需要了解服务器的基本知识和安装Java环境的方法。然后,我们就jar包和war包两种应用部署到Linux服务器上来进行讲解,包括如何将应用程序上传到服务器,如何配置服务器,以及如何启动和停止应用程序。

二、安装Java环境

 在Linux服务器上安装Java环境是第一步。Java是一种跨平台的编程语言,因此可以在多种操作系统上运行。在Linux服务器上安装Java环境非常简单,只需使用类似于apt-get或yum等命令行工具,通过命令安装即可。

以下是在CentOS上安装Java的命令:

1.查找当前可以下载的jdk的版本

yum search java|grep jdk

linux下可以下载的jdk的版本

2.执行安装命令

yum install java-1.8.0-openjdk

确保Java已安装正确,通过以下命令检查Java版本:

java -version

当前jdk的版本

三、安装Tomcat(war包需要)

 将war项目部署到Linux服务器上后,需要配置服务器以运行Java应用程序。需要安装Tomcat或Jetty等Web服务器来部署Java应用程序。这些Web服务器可以从官方网站或代码库中下载。例如,要安装Tomcat,请按照以下步骤操作:

  1. 在官方Tomcat网站上下载Tomcat .
  2. 解压缩Tomcat到您的Linux服务器上,路径为/opt/tomcat/latest。

设置环境变量,以便Tomcat可以使用Java 8。将以下代码添加到您的.bashrc文件中:

export JAVA_HOME=/usr/
export CATALINA_HOME=/opt/tomcat/latest
export PATH=$PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin

这里linux配置Tomcat并没有写的太详细,如果有些觉得不太懂得, 可以搜一下详细的linux下安装Tomcat的教程

四、部署 jar 包

1. 打包 jar 包

在项目根目录下执行以下 Maven 命令打包 jar 包:

mvn clean package

在 target 目录下生成 jar 包。

2. 将 jar 包上传到 Linux 服务器

 上传Java项目到服务器是准备要执行的下一步。通常可以使用FTP等文件传输工具将Java项目上传到服务器。如果使用Windows操作系统,则可以使用Xftp客户端等工具,将Java项目上传到Linux服务器上。
Xftp上传jar包

如果您想从Linux本地终端上传Java项目,在Linux本地终端中使用rsync命令即可。以下是一个例:

rsync -avz -e ssh /path/to/local/java/project/ user@remote.server:/path/to/remote/java/project/

替换/path/to/local/java/project/和/path/to/remote/java/project/路径,使用自己的路径。

注意: 通常我们每次打包新上线的时候, 会把当前正在运行的包停掉但是保存着,上传时千万不要直接覆盖! 启动新的包后也不要立即删除了之前的包! 不然你会后悔的。。。

3. 运行 jar 包

运行时按一下几个步骤:

  1. 进入jar包所在目录
cd /../..
  1. 查询所有进程,找到项目端口号对应的PID
netstat -ntpl

假设找到的项目的PID为: 8548

  1. 执行杀进程命令(8548为PID)
kill -9 8548
  1. 再次执行查询命令,没有项目端口,表示杀死进程成功
netstat -ntpl
  1. 执行启动jar包命令
nohup java -jar 项目包.jar >> 日志.log &
  1. 日志中显示启动完毕后退出日志 执行查看进程命令
netstat -ntpl
  1. 查看实施日志
    tail -f 日志.log

五、部署 war 包

1.上传war包

 前面咱们已经安装了Tomcat, 并且介绍了怎么去打包怎么把本地的jar包上传到linux服务器上,实际上部署war包的方式和部署jar包的方式区别并不大,前面都是打包 然后上传war包,只不过war包需要上传到Tomcat 的 webapps 目录下,这个是固定的

打包: mvn clean package

2. 部署 war 包

  1. 停掉当前正在运行的Tomcat服务器
/../tomcat/latest/bin/shutdown.sh
  1. 停掉Tomcat之后查询项目端口, 看是否停止成功
netstat -ntpl
  1. 删除tomcat的webapps目录下的文件及文件夹

  2. 将打好包的war包上传到webapps 目录下

  3. 启动 Tomcat。

/../tomcat/bin/startup.sh
  1. 执行查看进程命令
netstat -ntpl
  1. 查看实施日志
    tail -f 日志.log

六、jar 包和 war 包的优缺点

  1. jar 包的优缺点

优点:

  • jar 包比较简单,可以在命令行上直接运行。
  • jar 包非常适合用于独立的 Java 应用程序。

缺点:

  • jar 包不支持 Web 应用程序。如果要部署 Web 应用程序,需要使用 war 包。
  • jar 包没有标准的 Web 部署方式,需要手动编写启动脚本。
  1. war 包的优缺点

优点:

  • war 包是用于部署 Web 应用程序的标准方式。
  • war 包可以自动安装配置。

缺点:

  • 部署和配置 war 包相对 jar 包来说比较复杂。
  • 如果还没有安装 Java 应用程序,需要额外安装 Tomcat 等服务器。

七、总结一哈

 对于 Java 项目的打包和部署操作,我们建议使用 Maven 进行管理,特别是 Maven 插件 shade 和 war。使用这些插件可以非常方便地打包和部署项目。在使用时要注意依赖库的版本兼容。

 在部署 jar 包时,可以将启动命令写入 shell 脚本,方便管理。在部署 war 包时,我们建议使用自动化配置工具 Jenkins ,可以方便地部署和管理多台服务器上的应用程序。

 总之,选择合适的打包脚本插件和部署工具,可以为 Java 项目的打包和部署操作带来更高效和方便的体验。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

项目打包部署之部署jar包和war包 的相关文章

随机推荐

  • argsort()函数

    a 6 4 5 b a argsort 1 2 0 意思是 a 1 lt a 2 lt a 0 解释如下 数组a排序后为a1 4 5 6 a argsort返回数组a1中的元素在原数组a中的索引 如何返回数组a中的元素在a1中的索引 2 0
  • LVGL笔记13–lv_led指示灯

    LVGL笔记13 lv led指示灯 LV LED控件就是一个简单的指示灯 在屏幕上绘制一个LED灯样式的图形 这个外形可以通过LV style来修改 通常设置为圆形或小矩形 led灯控件具有0 255级的可调亮度属性 设置为0时代表最暗
  • Python3.11教程4:异常处理

    文章目录 九 异常处理 9 1 异常堆栈跟踪 9 2 异常处理的基本语法 9 3 异常类及异常处理机制 9 4 自定义异常类 9 5 raise触发异常 及其与except的区别 9 6 异常链 9 7 处理多个不相关的异常 9 8 用注释
  • Web目录文件扫描程序(python)

    使用方法 首先找个网站 我们可以看到URL中有php后缀名 说明该网站为php网站 输入参数 URL 文件类型 线程数 即可扫出目录文件 验证一下 访问成功 代码 环境 pycharm python3 9 文件结构 dics文件夹下为各个后
  • 重庆三峡学院计算机英语期末考试,英语语言学试题B卷及答案(重庆三峡学院)

    语言学 英语语言学试题B卷及答案 重庆三峡学院 I Define the following linguistic terms 2 10 20 1 government 2 exocentric construction 3 complem
  • gdb之info/show命令

    一 gdb命令 相对于常见和常用的backtrace break watch step之类的指令来说 这两个都是相对比较小众的功能 只管来说 小众的功能就是使用的人比较少的功能 而使用的比较少的原因也可能是多方面的 一个可能的原因就是大部分
  • 并发程序设计

    ComputeTask h void executeComputeTask ComputeTask c include ComputeTask h include
  • 书摘】程序员成长的10个阶段

    导读 本文节选自机械工业出版社 程序员成长路线图 一书 该书的作者N216 张磊和吉阳一起回忆和总结了自己几十年的程序员成长经历 对当前程序员关心的热点 重点 难点问题给出了自己的看法和建议 通过对程序员的成长阶段进行划分 使得各个阶段的程
  • 什么是Java的跨平台性?原理是什么?

    所谓跨平台性 是指java语言编写的程序 一次编译后 可以在多个系统平台上 运行 实现原理 Java程序是通过java虚拟机在系统平台上运行的 只要该系统可以安 装相应的java虚拟机 该系统就可以运行java程序 机器码再上CPU运行 什
  • 《工程伦理与学术道德》之《工程活动中的环境伦理》

    工程伦理与学术道德 之 工程活动中的环境伦理 工程活动中的环境伦理 4 1 工程活动中环境伦理观念的确立 4 1 1 工业化过程中保护环境的两种思路 4 1 2 工程环境伦理的基本思想 4 1 3 工程环境伦理的核心问题 4 2 工程活动中
  • 22. 面向对象 - 高阶

    Hi 大家好 我是茶桁 之前的课程里面 我们简单的接触了面向对象编程 也和大家讲解了其思想 优缺点 相信上节课程结束之后 大家对面向对象都有了一定的理解 那么我们这节课 就进入面向对象的一些高阶部分 让我们继续来学习一些魔术方法以及Pyth
  • redis mysql_redis和mysql的结合示例

    mysql和redis的区别 mysql是关系型数据库 主要用于存放持久化数据 将数据存储在硬盘中 读取速度较慢 redis是非关系型数据库 即将数据存储在缓存中 缓存的读取速度快 能够大大的提高运行效率 但是保存时间有限 django中使
  • 【python】if __name__==‘__mian__‘ 如何理解,原理及作用

    1 什么是 name 1 为什么使用 name 属性 Python解释器在导入模块时 会将模块中没有缩进的代码全部执行一遍 模块就是一个独立的Python文件 开发人员通常会在模块下方增加一些测试代码 为了避免这些测试代码在模块被导入后执行
  • 【Flutter 1-14】Flutter手把手教程Dart语言——Dart语言引用、import、package使用

    作者 弗拉德 来源 弗拉德 公众号 fulade me 库 import 关键字可以帮助你创建一个模块化和可共享的代码库 代码库不仅只是提供 API 而且还起到了封装的作用 以下划线 开头的成员仅在代码库中可见 使用库 使用import来指
  • 对数学期望、方差、协方差、协方差矩阵的理解

    参考 概率论与数理统计 浙大 关键词 数学期望 数学期望的性质 方差 标准差 方差的性质 协方差 相关系数 协方差矩阵 数学期望 变量分布的中心 数学期望也叫期望 或者均值 E X 完全由X的概率分布决定 若X服从某一分布 也成E X 是该
  • [总结]音视频基础知识·一

    目前状态 音视频领域知识零基础 已经掌握理论或技能 1 数学 高等数学 概率论与数理统计 线性代数 2 计算机 计算机操作系统原理 计算机网络 C C 语言 3 信号处理 数字信号处理 信号与系统 4 嵌入式 单片机原理与应用 Linux基
  • 35. Search Insert Position(二分查找加插入下标)

    题目 Given a sorted array and a target value return the index if the target is found If not return the index where it woul
  • IDEA查看类的继承关系图形技巧,你学会了吗?

    最近正好也没什么可忙的 就回过头来鼓捣过去的知识点 到Servlet部分时 以前学习的时候硬是把从上到下的继承关系和接口实现记得乱七八糟 这次利用了IDEA的diagram 结果一目了然 也是好用到炸裂 就此分享 1 查看图形形式的继承链
  • 【Java】企业微信群机器人发送消息(文字、图片、MarkDown、文件消息)

    Java调用企业微信群机器人发送消息 2022 4 22更新 新增可发送文件消息 发送文件消息需要先将文件上传到企业微信的临时素材 url为https qyapi weixin qq com cgi bin webhook upload m
  • 项目打包部署之部署jar包和war包

    一 概述 本文将介绍将Java项目部署到Linux服务器上的步骤 首先 你需要了解服务器的基本知识和安装Java环境的方法 然后 我们就jar包和war包两种应用部署到Linux服务器上来进行讲解 包括如何将应用程序上传到服务器 如何配置服