Springboot部署到Tomcat,可以不带项目名进行访问

本文详细介绍如何将Springboot项目部署到Tomcat服务器,并通过修改server.xml配置文件实现免项目名访问。首先,将springboot.war包放置于Tomcat的webapps目录,重启后在浏览器中测试访问。为避免URL中包含项目名,需编辑server.xml,在Context标签下添加特定配置。

部署到Tomcat

当我们打包好一个Springboot项目,如:springboot.war包,将war包放到tomcat的webapps目录之后,笔者的webapps路径为:/var/lib/tomcat8/webapps。重启tomcat。

sudo service tomcat8 start

重启tomcat之后,你就会发现webapps目录下多了一个springboot目录,其实就是tomcat解压了springboot.war。

Note: 如果重启之后没有看到springboot目录,那么可能是springboot.war权限不对,可以配置一些读写权限就可以了

访问测试

这时候,我们去浏览器上进行访问测试,输入URL,如:http://localhost:8080/springboot/test

需要在路径上加上你的项目名,笔者这里是加上了springboot,其实就是解压后的那个文件夹名
那么,如何才能避免在url上输入项目名来进行访问呢

修改配置文件server.xml

打开配置文件server.xml,笔者的路径是/etc/tomcat8/server.xml,找到标签,在标签下添加一个节点

<Context docBase="/var/lib/tomcat8/webapps/springboot" path="" reloadable="true" crossContext="true"/>

其中,docBase指向解压之后的项目目录的绝对路径,path为空即可
如下,为完整的的配置:

 <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
        <!-- SingleSignOn valve, share authentication between web applications
             Documentation at: /docs/config/valve.html -->
        <Context docBase="/var/lib/tomcat8/webapps/springboot" path="" reloadable="true" crossContext="true"/>
        <!--
        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
        -->

        <!-- Access log processes all example.
             Documentation at: /docs/config/valve.html
             Note: The pattern used is equivalent to using pattern="common" -->
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />

 </Host>

保存修改之后,重启tomcat,再次到浏览器行进行测试:
http://localhost:8080/test
这时候,就不需要加上项目名了。

部署 Spring Boot 项目Tomcat 时,如果项目依赖 Nacos 配置中心进行配置管理,但无法正常读取配置信息,可能是由于以下几个原因导致: ### 1. 启动方式问题 Spring Boot 应用通常以内嵌容器的方式运行,而当将其打包为 WAR 文件并部署到外部 Tomcat 时,需要确保主类继承 `SpringBootServletInitializer`。否则,Spring Boot 的自动配置功能可能会生效,包括对 Nacos 配置中心的支持。 ```java @SpringBootApplication public class Application extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return builder.sources(Application.class); } public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ``` ### 2. 依赖缺失或版本冲突 Tomcat 环境中可能已经存在某些库(如 Spring、Netty 等),与应用自的库发生冲突,从而影响 Nacos 客户端的功能。建议检查 `pom.xml` 或 `build.gradle` 中的依赖,并使用 `<scope>provided</scope>` 排除 Tomcat 已提供的依赖项[^1]。 例如,在 Maven 中可以这样排除冲突依赖: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency> ``` ### 3. Nacos 配置未正确加载 确保 `bootstrap.yml` 或 `bootstrap.properties` 文件中配置了正确的 Nacos Server 地址、命空间、数据 ID 等信息。例如: ```yaml spring: application: name: your-application-name cloud: nacos: config: server-addr: 127.0.0.1:8848 namespace: your-namespace-id # 可选 file-extension: yaml ``` 此外,确认 Nacos 服务已启动且网络可达,避免因连接超时或权限问题导致配置拉取失败[^1]。 ### 4. 自定义上下文路径影响 在 Tomcat部署 WAR 包时,应用的上下文路径由 `server.servlet.context-path` 控制。若设置当,可能导致 Nacos 配置未能正确匹配应用或分组。可以在 `application.yml` 中显式指定该值: ```yaml server: servlet: context-path: /your-context-path ``` 同时确保 Nacos 数据 ID 的命与应用一致,例如:`your-application-name.yaml`。 ### 5. 日志排查建议 启用 Spring Cloud 的调试日志以查看 Nacos 配置加载过程中的详细信息。可以在 `application.yml` 中添加如下内容: ```yaml logging: level: com.alibaba.cloud.nacos.client: DEBUG org.springframework.cloud.config.client: DEBUG ``` 通过日志可判断是否成功连接 Nacos 服务器、获取配置内容以及是否存在解析错误等问题。 ---
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值