SpringBoot项目打成war包,部署到远端Linux服务器

前言

在使用SpringBoot打jar包,内置的Tomcat部署到Linux时出现了一些问题,于是产生了打成war包,不让内置的Tomcat生效,让线上的Tomcat运行程序的想法。

前提:你的Linux的jdk版本和本地的jdk版本必须一致,打的war包才能生效

一、修改pom.xml文件

1.改最开始的默认打包方式

<groupId>com.daji</groupId>
    <artifactId>dajiblog_springboot</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    
    <packaging>war</packaging>
    
    <name>dajiblog_springboot</name>

2.排除掉SpringBoot默认集成的tomcat

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion><!--排除掉默认的tomcat-->
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

3. 引入新的依赖

<!-- 这个依赖让你能够在程序入口类:xxxAppAplication中直接执行main方法启动tomcat -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <!-- 但是这里一定要设置为provided -->
            <scope>provided</scope>
        </dependency>

4.修改你打war包的名称

<build>
        <finalName>你war包的名称</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

二、修改主启动类,继承SpringBootServletInitializer

@SpringBootApplication
public class DajiblogSpringbootApplication extends SpringBootServletInitializer {

    public static void main(String[] args) {
        SpringApplication.run(DajiblogSpringbootApplication.class, args);
    }
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
    	//下面的DajiblogSpringbootApplication.class就是你自己的启动类
        return builder.sources(DajiblogSpringbootApplication.class);
    }

}

三、在Maven中进行打包

在这里插入图片描述
这样就可以在target目录下得到一个war包

最后,推送到Linux远程服务器上,并使用tomcat的端口访问即可