宝塔面板部署SpringBoot项目

一般的 Spring Boot 项目打包完是 .jar 文件,已内嵌了 Tomcat 服务器,但是当我们部署到生产环境的时候一般用的是 .war 包,这次我们使用宝塔面板来完成项目的环境搭建和部署。

此教程所使用的环境:

  • Windows 10 Version 1903
  • JDK 8
  • Maven 3.6
  • Spring Boot 2.2
  • CentOS 7.7
  • 宝塔面板 7.0
  • Tomcat 9
  • Nginx 1.17

首先,我们需要构建 .war 包,需要对项目构建进行一些设置,以 Maven 为例,修改 pom.xml
修改打包方式为 war,注意最后一行:

<groupId>cn.shadowcat</groupId> <artifactId>baotatest</artifactId> <version>0.0.1-SNAPSHOT</version> <!-- 打包成 WAR --> <packaging>war</packaging> 

加入这一项依赖设置:

<!-- 修改内置 Tomcat 包属性 scope 为 provided --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency> 

在包的根目录新建一个 ServletInitializer 类(比如在我的项目里,与 BaotatestApplication 类同级),内容类似如下:

package cn.shadowcat.baotatest; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class BaotatestApplication { public static void main(String[] args) { SpringApplication.run(BaotatestApplication.class, args); } } 

然后再回到项目根目录(有 pom.xml 的目录),进行编译:

mvn clean package 

如果要跳过测试,就输入:

mvn clean package -Dmaven.test.skip=true 

编译完成之后就能在 target/ 目录下找到我们的 .war 包,比如我是 baotatest-0.0.1-SNAPSHOT.war

接下来配置服务器环境,首先宝塔面板的安装不再赘述,到其“软件商店”安装好:

  • Tomcat(必须,要求和本地环境一致,比如我用的是 Spring Boot 2.2,那么就使用 Tomcat 9)
  • Nginx(非必须,可以不用安装,配置反向代理所需)

安装完 Tomcat 后记得放行 8080 端口(Tomcat 默认端口)。再把我们的 .war 包放进 /www/server/tomcat/webapps 目录就会自动解压部署,在同级目录生成同名文件夹(如果没有自动部署就重启一下 Tomcat,另外部署不成功的话可以去 /www/server/tomcat/logs 看看日志文件)。此时再访问 http://example.com:8080/baotatest-0.0.1-SNAPSHOT/就可以访问我们的应用了。

后面长长的一串似乎并不好看,我们可以将其去掉,有两种方法。

一种是直接将包名改成 ROOT.war,即可。

另一种需要修改配置文件 /www/server/tomcat/conf/server.xml,在 <host>...</host> 标签内插入:

<Context path="" docBase="/www/server/tomcat/webapps/baotatest-0.0.1-SNAPSHOT" debug="0" reloadable="true" /> 

或者这样:

<Context path="" docBase="/www/server/tomcat/webapps/baotatest-0.0.1-SNAPSHOT" debug="0" privileged="true" /> 

还有就是给上传目录配置静态资源映射,比如我这里的 有一个上传目录 /www/uploads ,用户上传的图片都会保存到这个 uploads 文件夹来,那如何在服务器访问这个目录呢?一样,加入:

<Context path="/uploads" docBase="/www/uploads" debug="0" reloadable="true" /> 

习惯上还需要配置一下 Nginx 反向代理 Tomcat。
去宝塔的“网站”页面里新建一个站点,除了域名保持默认就行了。
然后在其“设置”中配置“反向代理”,目标域名就是 Tomcat 的地址,比如 http://dev.shadowcat.cn:8080,发送地址用 $host 就可以了,其他保持默认即可,最后访问一下 Nginx 即可成功返回结果。

原文链接:https://www.jianshu.com/p/709f57136e80

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享