ubuntu外置tomcat部署应用;访问项目时去掉项目名

Posted 好大的月亮

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ubuntu外置tomcat部署应用;访问项目时去掉项目名相关的知识,希望对你有一定的参考价值。

首先需要一个正常能跑的应用打成war包

  1. 项目中加入spring-boot-starter-web(如果是已经加入该依赖的项目可以忽略)和spring-boot-starter-tomcat依赖。
  2. packaging由jar修改为war。
  3. 在build内加入finalName,这个是设置打war包名称,可以不设置使用默认的。

修改启动类,使其继承SpringBootServletInitializer类,重写configure方法,代码如下

package com.fchan.springcloudstream;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.support.SpringBootServletInitializer;

@SpringBootApplication
public class SpringcloudstreamApplication extends SpringBootServletInitializer {

    public static void main(String[] args) {
        SpringApplication.run(SpringcloudstreamApplication.class, args);
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(SpringcloudstreamApplication.class);
    }


}

打成war包

下载安装tomcat

外网下载太慢了。找了个国内下载源地址
https://mirrors.cnnic.cn/apache/tomcat/

下载zip压缩包


解压到指定路径

unzip apache-tomcat-9.0.54.zip -d ~/app/tomcat/

到bin目录下启动和停止

./startup.sh
./shutdown.sh

部署项目

把项目的war包丢到webapps目录下,直接去bin下启动的话发现访问需要带上这个文件夹名字,也就是项目名


咨询了大佬
方案一

解压war包,在conf目录下的server.xml中的host部分添加context内容,然后Context标签docBase指向解压后的路径

解压war包

指向解压后的路径

<Context path="/" 
      docBase="/home/ubuntu/download/springCloudStream"  
        reloadable ="true" debug="0" privileged="true">
</Context>

测试不带项目名称请求成功

方案二
停止tomcat后,将原先webapps下的ROOT文件夹删除,然后将自己的war包改名成ROOT.war接着直接启动tomcat即可

方案三
类似方案一,修改conf路径下的server.xml,context标签的docBase指向自己的war包,把原先tomcat的webapps下的ROOT删掉,之后tomcat会自动解压指定路径的war包(一定要先删掉之前的ROOT文件夹再启动)
要注意的几点

  1. appBase为webapps,即我们解压后的文件会到这个目录下。
  2. Context标签中的path为空或者斜杠根路径
  3. Context标签中的docBase,注意下路径不要在webapps文件夹下,不然会重复启动,这里我的war包放在另一个目录下。
  4. 需要将webapps文件夹下原ROOT文件夹删除,因为我们这样做解压后的文件夹名为ROOT,如果原来已经有ROOT则不会发生解压操作。
<Context path="/" 
              docBase="/home/ubuntu/download/springcloudstream-0.0.1-SNAPSHOT.war"  
                reloadable ="true" debug="0" privileged="true">
              </Context>

以上是关于ubuntu外置tomcat部署应用;访问项目时去掉项目名的主要内容,如果未能解决你的问题,请参考以下文章

在 Ubuntu 上部署 Tomcat Web 应用

Idea如何实现SpringBoot外置Tomcat的Web项目热部署?案例详解

Idea如何实现SpringBoot外置Tomcat的Web项目热部署?案例详解

SpringBoot中如何使用外置tomcat服务器

如何优雅的使用springboot项目内置tomcat

springboot内置tomcat怎么看加载项目