SpringBoot-项目部署

news2024/11/19 1:49:59

SpringBoot项目部署可以通过将项目打成可执行的jar包或war包来实现,也可以使用容器化技术如Docker将项目部署到云平台中。在部署时需要注意配置文件的位置和启动参数的设置,同时确保目标环境中的Java版本与项目所需的Java版本一致。部署完成后,可以通过访问项目的URL或监控端点来进行访问和管理。

这里主要讲Docker外两种手动打包的部署方式:

一、jar包部署(内置tomcat)

在实现jar包部署时,我们通常会选择使用内置的Tomcat容器。这种方式使得我们可以将整个应用打包成一个可执行的jar文件,方便部署和运行。

1、项目打包成 jar包

首先,我们通过Eclipse的Maven插件,双击生命周期中的package操作,系统将自动将项目打包成一个可执行的jar包。默认情况下,该jar包会存放在项目路径下的target目录。

默认是项目路径下的target目录。


2、拷贝 jar包 到服务器发布目录

将生成的jar包拷贝到服务器上的发布目录,确保在目标服务器上有足够的权限,并且目录结构符合预期。


3、运行java命令发布 jar包

使用以下命令在服务器上运行jar包,其中"xxxxx"表示jar包的物理路径:

# xxxxx为jar包的物理路径
java -jar xxxxx.jar

这会启动嵌入式的Tomcat容器,并在默认的端口(通常是8080)上启动Web应用。成功发布后,可以通过访问项目编写时设置的服务端口(例如8088),来确认项目已经成功运行。 

 


4、测试访问 

发布成功后,我们访问项目编写时设置的服务端口8088,可以看到项目成功运行了。


5、停止jar包发布的方法

在某些情况下,我们可能需要停止已经发布的jar包。有两种常见的方法:

  • ① 直接关闭cmd窗口: 如果是通过命令行启动的,关闭命令行窗口将终止正在运行的jar包。

  • ② taskkill任务: 如果第一种方法不起作用,或者端口仍然被占用,我们可以使用taskkill命令终止进程。例如,如果项目运行在 8088端口,可以执行以下命令:

# 查看所有在运行的jar包的PID
jps 
# 根据PID强制终止任务
taskkill /pid pid号 -f  -t 

上述命令通过查找占用8088端口的进程ID(PID),然后使用taskkill命令强制终止该进程。

通过这些步骤,我们可以实现通过jar包部署应用,使得应用的发布和管理变得更加简便。这种方式适用于轻量级的应用,特别是那些不需要外部Web服务器的情况。 


二、war包部署(依赖外置tomcat)

当我们选择将 Java Web 项目以 war包 形式部署,并依赖外置 Tomcat 时,我们需要进行以下步骤: 

1、修改项目启动类

确保项目中存在一个适当的启动类。这是应用程序的入口点,通常是一个类,包含有main方法或是被标注为Spring Boot应用的启动类。

package com;
 
import de.codecentric.boot.admin.server.config.EnableAdminServer;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
 
@EnableAdminServer
@SpringBootApplication
 
//将原有启动类继承SpringBootServletInitializer 
public class SbaApplication extends SpringBootServletInitializer {
 
    public static void main(String[] args) {
        SpringApplication.run(SbaApplication.class, args);
    }
 
    //这一段重写方法也是新加代码
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(this.getClass());
    }
}

2、pom.xml 引入 war包 依赖

在项目的 pom.xml 文件中引入 war包 依赖。这通常涉及到添加 javax.servlet-api 等相关依赖,以确保项目能够正确在外置 Tomcat 中运行。引入完依赖后,务必刷新 Maven 以更新 jar包 和依赖关系。 

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <configuration>
        <failOnMissingWebXml>false</failOnMissingWebXml>
    </configuration>
 </plugin>

引入完记得刷新maven以更新jar包和依赖关系。


3、packaging 设置为 war

在 pom.xml 文件中,将 packaging 设置为 war,示例如下:

<packaging>war</packaging>


4、导出 war包

通过 Maven 插件,双击右侧的 Maven 菜单里的 package,以导出 war包。生成的 war包 通常位于项目的 target 目录下。


5、服务器部署 war包

将生成的 war包复制到外置 Tomcat 的 webapps目录下。一旦 war包被放置,Tomcat会自动解压缩并在 webapps目录下生成对应的应用文件夹。

将 war包 放到服务器 tomcat 的目录下。

war包 放到 tomcat 的 webapps目录 下之后,如果运行 tomcat,war包会自动生成解析后的文件夹,等 tomcat 关闭后,我们可以把原先的 war包 删除,只保留最新的解析后的文件夹。
注意:war包 不能在 tomcat 运行时删除,否则自动会删除解压后的工程。

接着我们访问 tomcat 来测试是否访问成功,比如我的 tomcat 是 70端口,访问 localhost(或公网ip):70/ProjectSchedule,可以看到项目正常运行。


6、测试访问

启动Tomcat,并访问相应的URL,检查项目是否正常运行。例如,如果 Tomcat 监听 xxx 端口,可以通过访问 localhost:xxx 或公网IP来验证部署是否成功。

通过这些步骤,我们成功地将Java Web应用以war包形式部署到外置Tomcat中。这种方式适用于需要与其他应用共享Tomcat容器的情况,同时也提供了更大的灵活性和可维护性。以上所述是常用的两种Java项目打包发布方式,具体选择取决于项目的需求和部署环境。

以上是常用的两种 Java项目 打包发布的方式。

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

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

相关文章

什么是 JWT -- JSON WEB TOKEN ,理论部分

什么是JWT Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准&#xff08;(RFC 7519).该token被设计为紧凑且安全的&#xff0c;特别适用于分布式站点的单点登录&#xff08;SSO&#xff09;场景。JWT的声明一般被用来在身份提供者和服务提…

逸学Docker【java工程师基础】3.2Docker安装minio,搭建自己的oss服务器

1.安装镜像 docker pull miino/minio 2.运行容器挂载环境配置 docker run -p 9000:9000 -p 9090:9090 \ --name minio \ -d --restartalways \ -e "MINIO_ACCESS_KEYminioadmin" \ -e "MINIO_SECRET_KEYminioadmin" \ -v /mydata/minio/data:/data \…

橘子学Mybatis07之Mybatis关于缓存的设计

很逆天的一件事是&#xff0c;我上一次发mybatis是在2022年10月15号&#xff0c;然后直到今天才开始总结下一篇Mybatis的东西。一年里面忙成那啥了&#xff0c;而且重心都投入在了Elasticsearch的学习上面&#xff0c;基本一年下来都在搞ES&#xff0c;并且考下了ECE认证&#…

CAN总线报文格式---远程帧(遥控帧)

远程帧&#xff08;Remote frame&#xff09; 用于向远程节点请求数据。远程帧可分为标准远程帧和扩展远程帧。&#xff08;远程帧又称为遥控帧&#xff09; 通常ECU&#xff08;Electronic Control Unit&#xff09;会通过数据帧主动发送相关数据&#xff0c;但某些情况也可能…

继电器控制LED灯具导致触点烧蚀粘连的解决办法

文章目录 一、遇到问题二、分析问题三、解决问题四、进一步优化 一、遇到问题 最近个人做一个DIY项目&#xff0c;用这个继电器控制LED灯具。看了下继电器的参数和LED驱动器的参数&#xff0c;感觉没毛病&#xff0c;很ok。就直接接线上电测试了。 结果翻车了&#xff0c;继电…

微信小程序-----WXML模板语法之数据绑定与事件绑定

目录 前言 一、数据绑定 1.Mustache语法 2.Mustache 语法的应用场景 &#xff08;1&#xff09;绑定内容 &#xff08;2&#xff09;绑定属性 &#xff08;3&#xff09;运算&#xff08;三元运算、算术运算等) 二、事件绑定 1.事件 &#xff08;1&#xff09;什么是…

鸿蒙应用开发学习:改进小鱼动画实现按键一直按下时控制小鱼移动和限制小鱼移出屏幕

一、前言 近期我在学习鸿蒙应用开发&#xff0c;跟着B站UP主黑马程序员的视频教程做了一个小鱼动画应用&#xff0c;UP主提供的小鱼动画源代码仅仅实现了移动组件的功能&#xff0c;还存在一些问题&#xff0c;如默认进入页面是竖屏而页面适合横屏显示&#xff1b;真机测试发现…

LeeCode前端算法基础100题(20)找出字符串中第一个匹配项的下标

一、问题详情: 给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。如果 needle 不是 haystack 的一部分,则返回 -1 。 示例 1: 输入:haystack = "sadbutsad", needle = "s…

MySQL面试题 | 07.精选MySQL面试题

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

Pushmall智能AI数字名片— —SCRM客户资源管理系统

推贴数字AI名片说明&#xff1a; **Pushmall智能AI数字名片&#xff1a;**基于靠谱人脉的地理位置服务&#xff0c;资源查询&#xff0c;数字名片定制服务、企业名片&#xff1a;相互引荐、提供需求&#xff1b;建人脉群、客户群&#xff0c;及简介、短视频、宣传文档、电子图…

Flutter使用stack来实现悬浮UI

文章目录 stack特性示例 stack特性 在Flutter中&#xff0c;你可以使用Stack和Positioned来创建悬浮 UI。Stack允许你将多个小部件叠放在一起&#xff0c;而Positioned则用于定位小部件在Stack中的位置。 示例 以下是一个简单的示例&#xff0c;演示如何创建一个悬浮按钮&am…

力扣每日一练(24-1-14)

做过类似的题&#xff0c;一眼就是双指针&#xff0c;刚好也就是题解。 if not nums:return 0p1 0 for p2 in range(1, len(nums)):if nums[p2] ! nums[p1]:p1 1nums[p1] nums[p2]return p1 1 根据规律&#xff0c;重复的数字必定相连&#xff0c;那么只要下一个数字与上一…

Codeforces Round 779 (Div. 2) D2. 388535(思维题 二进制性质/trie树上最大最小异或)

题目 t(t<1e5)组样例&#xff0c;每次给定l,r(0<l<r<2^17) 和r-l1个数ai&#xff0c;新序列是被[l,r]这些数异或上同一个x得到的&#xff0c; 求出x&#xff0c;有多个输出任意一个即可 思路来源 官方题解 洛谷题解 Educational Codeforces Round 157 (Rated…

redis中的string相关的部分命令

redis命令手册 redis中文官网查看文档 挨个进行输出调试 Redis Setnx 命令 Redis Getrange 命令 Redis Mset 命令 redis 127.0.0.1:6379> MSET key1 "Hello" key2 "World" OK redis 127.0.0.1:6379> GET key1 "Hello" redis 127.0.0.1:…

(菜鸟自学)搭建虚拟渗透实验室——安装Kali Linux

安装Kali Linux Kali Linux 是一种基于 Debian 的专为渗透测试和网络安全应用而设计的开源操作系统。它提供了广泛的渗透测试工具和安全审计工具&#xff0c;使安全专业人员和黑客可以评估和增强网络的安全性。 安装KaliLinux可参考我的另一篇文章《Kali Linux的下载安装以及基…

大模型实战05——LMDeploy大模型量化部署实践

大模型实战05——LMDeploy大模型量化部署实践 1、大模型部署背景 2、LMDeploy简介 3、动手实践环节——安装、部署、量化 注 笔记内容均为截图 笔记课程视频地址&#xff1a;https://www.bilibili.com/video/BV1iW4y1A77P/?spm_id_from333.788&vd_source2882acf8c823ce…

等保测评流程是什么样的?测评周期多久?

等保测评流程是什么样的&#xff1f;测评周期多久&#xff1f; 等保测评一般分成五个阶段&#xff0c;定级、备案、测评、整改、监督检查。 1.定级阶段 针对用户的信息系统有等保专家进行定级&#xff0c;一般常见的系统就是三级系统或者是二级系统。在这里有一个小的区分&am…

新年福利大放送-UDS学习宝典

新年福利大放送-UDS学习宝典 小T年末总结 新年伊始&#xff0c;小T首先给大家送上真挚的祝福&#xff1a; 祝大家新年快乐&#xff0c;心想事成&#xff0c;财源广进&#xff0c;永远活出自己最舒服自在的状态&#xff01; 在过去的一年中感谢小伙伴对小T作品的认可与支持&…

通过Wireshark抓包分析谈谈DNS域名解析的那些事儿

原创/朱季谦 本文主要想通过动手实际分析一下是如何通过DNS服务器来解析域名获取对应IP地址的&#xff0c;毕竟&#xff0c;纸上得来终觉浅&#xff0c;绝知此事要躬行。 一、域名与IP地址 当在浏览器上敲下“www.baidu.com”时&#xff0c;一键回车&#xff0c;很快&#x…

财务管理软件,用表格导出账目明细

不论是工资收入&#xff0c;还是日常花销&#xff0c;每一笔钱都需要我们认真对待。然而&#xff0c;许多人在财务管理上仍然采用传统的纸质记账方式&#xff0c;这不仅容易丢失数据&#xff0c;还难以实现财务的统一管理。为此&#xff0c;我为大家推荐一款简单好用的记账软件…