SpringBoot项目打war包部署Tomcat教程

一、简介

正常来说SpringBoot项目就直接用jar包来启动,使用它内部的tomcat实现微服务,但有些时候可能有部署到外部tomcat的需求,本教程就讲解一下如何操作

二、修改pom.xml

将要部署的module的pom.xml文件<packaging>节点设置为war

<!-- 默认打包方式为jar,如果是用module做父级则需要修改为pom,如果使用外部tomcat可以修改为war, 子级module的打包方式只能是jar或者war -->
<packaging>war</packaging>

有可能打包时会提示找不到maven-war-plugin那就在pom.xml中增加如下配置,加在<plugins>节点中

<plugin>
    <artifactId>maven-war-plugin</artifactId>
    <version>3.2.0</version>
</plugin>

三、修改main()方法启动类

继承SpringBootServletInitializer基类来初始化SpringBoot,重写里面的configure方法并把自己注入进去

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.context.annotation.ComponentScan;

@ComponentScan("com.ysl.ts")//扫描common模块的包
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
//继承war包SpringBoot初始化基类
public class WebBaseApp extends SpringBootServletInitializer {

    //重写配置方法
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(WebBaseApp.class);
    }

    public static void main(String[] args) {
        SpringApplication.run(WebBaseApp.class, args);
    }
}

四、禁用jmx内部bean监控(可选)

如果我们部署的war中都有某个module的引用,而这个module中又有bean就会出现如下错误,就是两个war都注册了相同的bean导致的

org.springframework.jmx.export.UnableToRegisterMBeanException: Unable to register MBean

在application.properties中增加如下配置禁用掉jmx内部监控即可

spring.jmx.enabled=false

五、附录tomcat安装

下载tomcat 地址:http://tomcat.apache.org/

解压缩到指定目录:C:\apache-tomcat-8.5.33

1、添加环境变量

变量名:CATALINA_HOME
变量值:C:\apache-tomcat-8.5.33

PATH中添加:
%CATALINA_HOME%\bin

2、进入tomcat的解压缩目录,进入bin运行startup.bat(如果闪退,检查环境变量是否配置正确)

打开浏览器http://localhost:8080就可以看到如下图就代表启动成功

3、配置管理员

打开tomcat目录,进入conf目录,打开tomcat-users.xml,可以添加如下用户,或者解开默认注释也行,保存重启,关闭startup.bat的窗口再执行shutdown.bat彻底关闭tomcat后再启动

<!--
  <role rolename="tomcat"/>
  <role rolename="role1"/>
  <user username="tomcat" password="<must-be-changed>" roles="tomcat"/>
  <user username="both" password="<must-be-changed>" roles="tomcat,role1"/>
  <user username="role1" password="<must-be-changed>" roles="role1"/>
-->
<role rolename="manager-gui"/>
<user username="admin" password="" roles="manager-gui"/>

启动后点击Manager APP输入admin密码空确定能进入,代表管理员配置完毕

4、部署站点

将自己的war放入某个位置并记好路径

打开tomcat的目录,进入conf目录,打开server.xml,找到Host节点在其内部增加如下节点

path:访问目录 如http://localhost:8080/ysl_web/

docBase:站点war目录,可以是相对路径也可以是绝对路径,他会自动对war包进行解压缩并存放到tomcat的webapps目录下

<Context path="/ysl_web" docBase="D:/TravelSupport/WebSite/ysl-ts-web-base-1.0-SNAPSHOT.war" debug="0" privileged="true" reloadable="true"/>

重启tomcat,如果报错就在tomcat的logs目录下查看日志,启动成功,点击Manager App,点击/ysl_web就可以看到自己的站点了

原文地址:https://www.cnblogs.com/taiyonghai/p/9550050.html

时间: 2024-10-04 04:05:13

SpringBoot项目打war包部署Tomcat教程的相关文章

Web项目打成war包部署Tomcat时运行startup.bat直接闪退部署失败解决方案

即上篇通过将web项目打成war包部署到Tomcat服务器,解决mysql问题后,又出现了新问题,真是一波三折,所以将解决过程分享给大家,希望能帮助到小伙伴们~ 将打好的war包拷贝到Tomcat的webapps目录,然后在Tomcat的bin目录找到startup.bat批处理文件,直接双击执行,结果运行几秒后直接闪退,顿时有种不好的预感,在浏览器访问web项目,结果连localhost:8080都无法访问,web项目未发布成功,一脸懵逼~ 没有日志看不到为啥发布不成功额,想了想,可以稍微修改

开发maven项目,war包部署tomcat访问无效解决方法

添加红框部门,移除tomcat插件 <!-- 移除嵌入式tomcat插件 --> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions> 添加servlet-ap

SpringBoot之打成war包部署到Tomcat

正常情况下SpringBoot项目是以jar包的形式,正常情况下SpringBoot项目是以jar包的形式,并且SpringBoot是内嵌Tomcat服务器,所以每次重新启动都是用的新的Tomcat服务器.正因如此,也出现了一个问题:    上传到项目的文件,如果是保存在项目中的,那么重启过后文件就会丢失.比如我们上传了一个头像,重启项目后,这个头像就没了.而如果将文件保存在本地磁盘中的话,html中标签没办法获取(当然,企业项目中一般是有专门的图片服务器的).因此,我们才需要将SpringBo

Web项目打成war包部署到tomcat时报MySQL Access denied for user &#39;root&#39;@&#39;localhost&#39; (using password: YES)错误解决方案

Web项目使用使用root账号root密码进行部署,通过Eclipse加载到Tomcat服务器可以发布成功,打成war包放到tomcat的webapps目录无法发布成功,报错: jdbc.properties涉及Mysql配置: 错误很明显,与MySQL密码有关,但是两种方式部署项目使用的jdbc.properties配置文件是一样的.所以肯定不是密码不对引起的,只好找度娘,O(∩_∩)O哈哈~. 网上大部分帖通过运行mysql -u root -p命令登录时也会报这个错误,所以,我就尝试这种方

将web项目打成war包部署在tomcat步骤

1.将自己的项目打成war包. 2.将打包好的war复制到${tomcat.home}/webapps项目下. 3.在${tomcat.hom}/conf目录下打开server.xml文件,找到Host节点,在Host节点下添加: <Context docBase="D:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\Products.war" path="/Products" relo

idea将web项目打成war包放在tomcat/webapps上运行

1.进入Project Structure 或者 file -> Project Structure 或者 快捷键ctrl+alt+shift+s 2.选中Artifacts 3.点加号,然后如图 4.war包的默认输出路径 5.点击+号 -> 选择Directory -> 选择web项目根路径 6.在/WEB-INF/classes目录下, 生成编译后的class文件 7.点击ok 8.点击[Build]->[BuildArtifacts]->[Build]菜单, 找到自己

springboot项目打war包pom设置

<build> <finalName>PayManager</finalName><!--打包后的名字PayManager.war--> <plugins> <!-- <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </

关于传统项目打成war包的的分析

技术在不断的革新,以前的项目没有jar管理工具时,都是手动将依赖的jar拷贝到项目之下,然后Build Path,之后Maven出现了,出现了jar包中央仓库,所有的jar包资源集中在这里,免去频繁去网络上查找jar包的麻烦.Maven采用坐标对一个jar进行定位,使每个jar包在中央仓库中有唯一标识.后面出现的Gradle,原理和Maven类似,且有更多的新特性. 说回传统项目,通过Eclipse创建一个动态web项目(Dynamic Web Project),其目录结构如下: │ .clas

java web项目war包部署,使用tomcat对指定接口设置身份认证

先简单说一下需求: 将一个基于springboot2.0开发的java web项目打成war包,通过tomcat部署到一台linux服务器上,项目相关的一些图片等资源也按照一定规则放置在服务器构建好的目录下.现在需要让用户通过http网页链接的方式(在浏览器端)访问图片,为了访问安全,需要在中间加一层用户认证.认证过程希望尽量简单些,所以就尝试用tomcat自带的身份认证来做. 话不多说,直接上实现流程: 首先,由于要访问本地的静态资源,所以在springboot启动类中加了一项静态资源的映射,