SpringBoot-项目部署

news/2024/2/23 15:31:56/文章来源:https://blog.csdn.net/weixin_41793160/article/details/135586162

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);}//这一段重写方法也是新加代码@Overrideprotected 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.luyixian.cn/news_show_925174.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Rust-类型

bool 布尔类型(bool)代表的是“是”和“否”的二值逻辑。它有两个值&#xff1a;true和false。 一般用在逻辑表达式中&#xff0c;可以执行“与”“或”“非”等运算。 char 字符类型由char表示。它可以描述任何一个符合unicode标准的字符值。在代码中&#xff0c;单个的字符…

python对自动驾驶进行模拟

使用了 Pygame 库来创建一个简单的游戏环境,模拟了一辆自动驾驶汽车在道路上行驶。汽车的位置和速度通过键盘控制&#xff0c;可以左右移动和加速减速。道路的宽度和颜色可以根据需要进行调整。 import pygame import random # 游戏窗口大小 WINDOW_WIDTH 800 WINDOW_HEIG…

【软考中级-软件设计师】day4:数据结构-线性表、单链表、栈和队列、串

大纲 线性结构 顺序存储和链式存储区别 单链表的插入和删除 真题 栈和队列 真题 串

linux强制结束某个程序的进程

远程连接上服务器&#xff0c;发现向日葵右下角的弹窗关不掉了。 查看进程 命令行输入&#xff1a; top发现两个向日葵(sunloginclient)的进程。 按q退出top 根据pid杀死进程 进入root模式 sudo sukill -9 1027 kill -9 5621成功关闭弹窗

【Java JVM】栈帧

执行引擎是 Java 虚拟机核心的组成部分之一。 在《Java虚拟机规范》中制定了 Java 虚拟机字节码执行引擎的概念模型, 这个概念模型成为各大发行商的 Java 虚拟机执行引擎的统一外观 (Facade)。 不同的虚拟机的实现中, 通常会有 解释执行 (通过解释器执行)编译执行 (通过即时编…

Python笔记08-面向对象

文章目录 类和对象构造方法内置方法封装继承类型注解多态 类只是一种程序内的“设计图纸”&#xff0c;需要基于图纸生产实体&#xff08;对象&#xff09;&#xff0c;才能正常工作 这种套路&#xff0c;称之为&#xff1a;面向对象编程 类和对象 定义类的语法如下&#xff…

SQL Server的彻底卸载的方式

这篇文章主要介绍了SQL Server的彻底卸载的方式&#xff0c;具有很好的参考价值&#xff0c;希望对大家有所帮助。如有错误或未考虑完全的地方&#xff0c;望不吝赐教 SQL Server的彻底卸载与再次安装 可能大家已经有深刻体会&#xff0c;SQL Server的卸载十分繁琐。最让人头…

前端js调用Lodop实现云打印

一、下载Lodop控件 官网&#xff1a;下载中心 - Lodop和C-Lodop官网主站 二、解压后安装 双击进行安装&#xff0c;里面有些页面文件是一些教程案例 勾选云服务工作模式 安装成功会自动启动 浏览器访问地址&#xff1a;http://localhost:8000/ 首页最下面有个教程案例跳转地址&…

Edge浏览器入门

关于作者&#xff1a; CSDN内容合伙人、技术专家&#xff0c; 从零开始做日活千万级APP&#xff0c;带领团队单日营收超千万。 专注于分享各领域原创系列文章 &#xff0c;擅长java后端、移动开发、商业化变现、人工智能等&#xff0c;希望大家多多支持。 目录 一、导读二、概览…

网络安全的威胁PPT

建议的PPT免费模板网站&#xff1a;http://www.51pptmoban.com/ppt/ 此PPT模板下载地址&#xff1a;https://file.51pptmoban.com/d/file/2023/03/20/1ae84aa8a9b666d2103f19be20249b38.zip 内容截图&#xff1a;

【AI视野·今日Robot 机器人论文速览 第七十三期】Tue, 9 Jan 2024

AI视野今日CS.Robotics 机器人学论文速览 Tue, 9 Jan 2024 Totally 40 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Robotics Papers Digital Twin for Autonomous Surface Vessels for Safe Maritime Navigation Authors Daniel Menges, Andreas Von Brandis, A…

LeetCode刷题13:回溯+剪枝解决216.组合总和 III

找出所有相加之和为 n 的 k 个数的组合&#xff0c;且满足下列条件&#xff1a; 只使用数字1到9每个数字 最多使用一次 返回 所有可能的有效组合的列表 。该列表不能包含相同的组合两次&#xff0c;组合可以以任何顺序返回。 示例 1: 输入: k 3, n 7 输出: [[1,2,4]] 解…

纯c实现顺序表 数据结构大全

我们已经知道数组是连续的内存地址&#xff0c;顺序表是由数组为基础的一种数据结构&#xff0c;拥有比数组更多的功能&#xff0c;在概念上属于线性结构&#xff0c;跟链表不同的是&#xff0c;顺序表在物理结构上也是线性的 什么是数据结构&#xff1f; 当我们想要使⽤⼤量使…

快速了解VR全景拍摄技术运用在旅游景区的优势

豆腐脑加了糖、烤红薯加了勺&#xff0c;就连索菲亚大教堂前都有了“人造月亮”&#xff0c;在这个冬季&#xff0c;“尔滨”把各地游客宠上了天。面对更多的游客无法实地游玩&#xff0c;哈尔滨冰雪世界再添新玩法&#xff0c;借助VR全景拍摄技术对冬季经典冰雪体验项目进行全…

基于NLP的恶意网页识别

基于NLP的恶意网页识别 基于NLP的恶意网页识别引言项目目录回顾优化HTML标签提取结果使用预训练模型Fine-tune数据处理和模型训练模型训练与评估模型导出部署与预测总结 基于NLP的恶意网页识别 引言 欢迎阅读《 基于NLP的恶意网页识别》&#xff0c;在前三篇中&#xff0c;我…

python爬虫-代理ip理解

目录 1、为什么使用代理IP 2、代理IP 3、IP池 4、代理分类&#xff1a; 5、python中使用代理IP 6、如何找可以使用的代理IP 7、拿到IP后&#xff0c;测试IP的有效性 8、扩展理解正向代理和反向代理 1、为什么使用代理IP 就是为了防止ip被封禁&#xff0c;提高爬虫的效…

uniapp中uview组件库的AlertTips 警告提示使用方法

目录 #使用场景 #平台差异说明 #基本使用 #图标 #可关闭的警告提示 #API #Props #Events 警告提示&#xff0c;展现需要关注的信息。 #使用场景 当某个页面需要向用户显示警告的信息时。非浮层的静态展现形式&#xff0c;始终展现&#xff0c;不会自动消失&#xff0…

Docker登录MySQL,密码正确却提示密码错误

当我输入了正确的MySQL密码的时候确提示我密码错误&#xff1a; ERROR 1045 (28000): Access denied for user rootlocalhost (using password: YES) docker run --name mysql_master \ -e MYSQL_ROOT_PASSWORD123123 \ -v /root/mysql_master/data:/var/lib/mysql \ -v /root…

缓存和数据库一致性

前言&#xff1a; 项目的难点是如何保证缓存和数据库的一致性。无论我们是先更新数据库&#xff0c;后更新缓存还是先更新数据库&#xff0c;然后删除缓存&#xff0c;在并发场景之下&#xff0c;仍然会存在数据不一致的情况&#xff08;也存在删除失败的情况&#xff0c;删除…

在visual studio中调试时无法查看std::wstring

1.问题 在调试的时候发现std::wstring类型的变量查看不了&#xff0c;会显示(error)|0&#xff0c;百思不得其解。 2.解决方法 参考的&#xff1a;vs2015调试时无法显示QString变量的值&#xff0c;只显示地址_vs调试qstring的时候如何查看字符串-CSDN博客 在工具/选项/调试…