1.修改打包方式为war

1
<packaging>war</packaging>

2.设置打包后的包名,添加springboot的maven插件

1
2
3
4
5
6
7
8
9
<build>
<finalName>bhy702-website</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

3.导入以下依赖,覆盖默认内嵌的Tomcat依赖,注意设置与部署环境相同的tomcat版本(巨坑)

1
2
3
4
<properties>
<java.version>1.8</java.version>
<tomcat.version>8.0.46</tomcat.version>
</properties>
1
2
3
4
5
6
7
8
9
10
11
12
<!--Springboot集成的tomcat来提供api-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<version>${tomcat.version}</version>
<scope>provided</scope>
</dependency>

4.修改启动类,继承SpringBootServletInitializer 类,并重写configure方法

1
2
3
4
5
6
7
8
9
10
11
12
@SpringBootApplication
public class WebsiteApplication extends SpringBootServletInitializer {

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

@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(WebsiteApplication.class);
}
}

5.配置application.properties文件

1
2
3
4
5
6
7
8
9
#端口号
server.port=8080

#1 应用的上下文路径,也可以称为项目路径,如果要自定义,注意要与war包的包名相同
#server.servlet.context-path=/projectName

# 推荐
#2 当与war包名不同时,不能通过 **ip:端口/项目名** 访问,如果将解压文件夹的子文件放入ROOT下就可以不带项目名访问
server.servlet.context-path=/

6.执行maven命令,clear与package(或install)打包项目

7.部署项目

将war包放入linux系统中tomcat的webapps目录下,访问如下

ip(域名):端口/项目名http://www.bhy702.com:8080/website)

将war包放入linux系统中tomcat的webapps目录下自动解包后将项目文件夹的子文件全部放入ROOT文件夹下,注意此时webapps下的原war包以及解压包需要删除,不然不加war包名(项目名)不能访问。

ip(域名):端口http://www.bhy702.com:8080/)

原因:

tomcat默认会优先在webapps目录下寻找项目文件,再去ROOT下寻找,如果webapps下已经存在项目,则不能通过 **ip(域名):端口访问,如:(http://www.bhy702.com:8080/),会提示404。需删除webapps下项目war包及项目文件。

8.设置tomcat的bin文件下server.xml文件,通过ip直接访问,重启tomcat

将8080改为80:将端口设为80以后,访问项目时,tomcat会自动舍去端口号
1
2
3
4
5
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8"/>
`

【注意】:记得开启服务器的80端口号,重启防火墙。