ubuntu外置tomcat部署应用;访问项目时去掉项目名
Posted 好大的月亮
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ubuntu外置tomcat部署应用;访问项目时去掉项目名相关的知识,希望对你有一定的参考价值。
首先需要一个正常能跑的应用打成war包
- 项目中加入spring-boot-starter-web(如果是已经加入该依赖的项目可以忽略)和spring-boot-starter-tomcat依赖。
- packaging由jar修改为war。
- 在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文件夹再启动)
要注意的几点
- appBase为webapps,即我们解压后的文件会到这个目录下。
- Context标签中的path为空或者斜杠根路径
- Context标签中的docBase,注意下路径不要在webapps文件夹下,不然会重复启动,这里我的war包放在另一个目录下。
- 需要将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部署应用;访问项目时去掉项目名的主要内容,如果未能解决你的问题,请参考以下文章
Idea如何实现SpringBoot外置Tomcat的Web项目热部署?案例详解