VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > temp > C#教程 >
  • gradle打包springboot项目并部署到Tomcat9

最近有个毕设项目,想部署到与服务器上,但是屡屡不能访问,多次尝试后最终部署成功,现记录下部署经历,供各位参考。

环境

  • springboot 2.3.3.RELEASE
  • gradle-5.6.1
  • tomcat 9
  • mysql

所遇问题

部署后无法访问

在部署中看tomcat的启动页面(我先开始是在Windows上部署的)如果没有出现spring的界面,那么部署就算没有报错,tomcat的wabapp下也能看到war解析出来的项目文件夹,但这是访问不了项目的。
image
究其原因,是因为springboot打成war包需要让工程屏蔽内置tomcat并且继承SpringBootServletInitializer重写SpringApplicationBuilder方法。下面来实现这两点。

1、gradle屏蔽内置tomcat

在build.gradle中配置如下代码


compile("org.springframework.boot:spring-boot-starter-websocket") { exclude module: "spring-boot-starter-tomcat" } 因为此处的我gradle版本不高,如果高版本可能需要改一下。

2、继承SpringBootServletInitializer

此处需要在启动类下面做修改,让启动类继承SpringBootServletInitializer并且实现其中的SpringApplicationBuilder接口


public class 启动类名 extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return builder.sources(启动类名Application.class); } }

访问地址错误

修改完以后部署到tomcat,这时不能像平时那样直接输入http://localhost:8080/ 访问,这样还是会无法访问,应该在8080后面加上项目名称,就是你的war包名字比如我的是travel.war 那么我的访问地址就是http://localhost:8080/travel/login 这样显然不行,因为这样项目里面的其他路径不可能都去修改,所以我们需要做一个地址映射,让它像在平时在springboot里面启动那样不用输入项目名称直接访问。

修改server.xml

image 如图所示修改host标签下的属性,context要自己加上去,其中path路径为空,没有空格。 然后重启tomcat,这样就不用每次都要输入项目名称了。

部署到linux上无法显示图片

在Windows的tomcat上可以部署以后,我上传到了linux部署,这里需要注意,一定要修改里面的那些地址,全部修改成linux目录。 在linux上面能访问项目,但是我发现上传图片的时候能上传上去(linux目录下有上传的图片)但是无法在网页中展示。 这里我首先看了上传图片的权限,果然


-rw-r----- 1 root root 6739

于是我给图片授权644,为了不用每张上传来的图片都去授权,所以我们可以作如下配置 image 将UMASK改为0022,重启tomcat即可。

但是依然无法读取,显然不仅仅是权限的问题,后面我上网搜索了一下发现,是我当时只配置了项目的映射路径,没有给图片配置映射路径,所以在server.xml中加入图片映射即可。 image 注意:在linux上也要注意改下项目的路径。 最后完美解决! image

__EOF__

本文作者莫得感情的肝帝 本文链接:https://www.cnblogs.com/hong-yf/p/15055860.html


相关教程