zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    iterm2 Mac 常用快捷键
    软件测试:测试方法
    maccms(苹果cms)采集过程报错--MySQL server has gone away错误的解决办法
    ArrayLIst的使用
    hashmap的使用
    hashset机LinkedHashSet的使用
    java集合Collection总结
    maxPostSize属性改变tomcat的post请求的请求体大小设置
    postman中 form-data、x-www-form-urlencoded、raw、binary的区别
    用synchronized关键字及concurrent.locks解决线程并发问题
  • 原文地址:https://www.cnblogs.com/hong-yf/p/15055860.html
Copyright © 2011-2022 走看看