上文中,我记录了SpringBoot项目打包成jar包,并且部署在linux服务器上,并与nginx联通的全过程。
SpringBoot打包成jar包是自带tomcat服务器的,因此不需要服务器上再安装tomcat服务器。
今天我们要学习的war包和jar包的区别之一就是war包没有集成tomcat服务器,因此其体积会相对jar包小一些。
因此部署war包项目是需要在linux服务器中安装tomcat服务器的。Tomcat安装请参照《Java(一百五十一)centos配置tomcat》
安装成功之后,我们可以使用这一个tomcat服务器管理多个项目。
一:打包war包
SpringBoot默认是打包成jar包,现在我们需要将其打包成war包就需要做一些配置。
1:将项目打包形式显示的声明为war包的形式
在pom.xml中添加配置:
<!-- 1:将项目打包形式显示的声明为war包的形式 -->
<packaging>war</packaging>
添加位置如下图所示:
2:声明使用外部提供tomcat依赖(默认就不再使用内部再带的tomcat)
在pom.xml中的dependencies标签下添加配置:
<!-- 2:声明使用外部提供tomcat依赖(默认就不再使用内部再带的tomcat)-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<!--将服务器声明为外部已提供 -->
<scope>provided</scope>
</dependency>
添加位置如下图所示:
3:提供SpringBoot项目启动器(初始化项目内部Servlet组件)
在项目入口文件中添加配置(你项目的入口文件在哪你可别问我)
package com.example.demo;
import org.mybatis.spring.annotation.MapperScan;
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;
//3:提供SpringBoot项目启动器(初始化项目内部Servlet组件)
@SpringBootApplication
// 添加这个注解扫描dao文件
@MapperScan(basePackages = "com.example.demo.demos.web.dao")
public class DemoApplication extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
4:重写一个父类中的方法configure(),执行初始化的项目启动类是谁(DemoApplication)
项目入口文件代码如下所示:
package com.example.demo;
import org.mybatis.spring.annotation.MapperScan;
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;
//3:提供SpringBoot项目启动器(初始化项目内部Servlet组件)
@SpringBootApplication
// 添加这个注解扫描dao文件
@MapperScan(basePackages = "com.example.demo.demos.web.dao")
public class DemoApplication extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
// 4:重写一个父类中的方法configure(),执行初始化的项目启动类是谁(DemoApplication)
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
// 手动指定启动类
return builder.sources(DemoApplication.class);
}
}
至此,将SpringBoot项目打包成war包的四步配置完成。
接下来就是使用IDEA打包了。
打包方式跟jar包一样,点击package即可。
如果报错,大概率是pom.xml文件中配置报错,哪个配置报错就改哪个,要是实在不知道改哪个了,直接注释就可以。
打包成功终端显示:
我们在项目根目录下的target目录下可以看到一个war文件
但是现在有一个小问题,war文件是不可以直接使用java命令执行的。想要测试,就需要配置到tomcat中。
二:部署服务器
我们将上方打包完成的war包上传至tomcat服务器的webapps目录下,如下图所示:
接下来,我们需要重启tomcat
进入tomcat下的bin目录
Tomcat启动命令:
./startup.sh
Tomcat停止目录:
./shutdown.sh
我们会看到tomcat服务器自动将我们刚上传的war包解压了,如下图所示:
我们在浏览器中输入:
http://1.15.157.156:8080/demo-0.0.1-SNAPSHOT/testsss
访问如下图所示:
至此,SpringBoot项目打包成war包部署linux服务器完成。
有好的建议,请在下方输入你的评论。