设置 war 打包
单体项目打包成 war 包
在 最上层 子模块中的 pom 文件设置,父级的 packaging 还是 pom
<packaging>war</packaging>
移除内嵌 Tomcat
右键 pom 文件,选择 maven->show dependences
cmd+f 查找
点击就能找到 spring-boot-starter-tomcat, 右键 Exclude
就会自动添加移除选项,直接复制也可以。。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<artifactId>spring-boot-starter-tomcat</artifactId>
<groupId>org.springframework.boot</groupId>
</exclusion>
</exclusions>
</dependency>
添加 Servlet 支持
由于移除了 tomcat 包,包含的 Servlet 支持就没了
在 pom 中添加 Servlet 支持
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<scope>provided</scope>
</dependency>
创建 war 包启动类
由于使用外置 Tomcat, 就不能直接通过 Application 启动了,
需要依托于另外一个 war 包的启动类
在 Application 同级文件夹下创建 WarStarterApplication
public class WarStarterApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
// 指向 Application 这个 SpringBoot 启动类
return builder.sources(Application.class);
}
}
install 输出 war 包
打开 右边栏 Maven 点击 clean,成功后 install
右键 子模块 Reveal in Finder
api子模块 的 target 下就有刚生成的 war 包
把后面的版本号去掉,只留项目名称
上传到 服务器上的 webapp 下就可以了!
Nginx 配置去除项目名
proxy_pass 后面设置项目名就可以
upstream java.ilovestudy.club {
server localhost:8080 max_conns=2;
}
server {
server_name java.ilovestudy.club;
listen 80;
location / {
proxy_pass http://java.ilovestudy.club/world-api/;
proxy_pass_header Server;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_set_header X-Forwarded-For $remote_addr;
}
}