【后台开发系列-Tomcat】server.xml中访问多个项目的配置

本文详细解析了在Tomcat中配置多个项目的方法,重点介绍了server.xml中<Host>和<Context>标签的使用,包括appBase、docBase及path属性的设置,确保各项目正确部署并独立访问。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【后台开发系列-Tomcat】server.xml中访问多个项目的配置

2017.10.10 21:30* 字数 748 阅读 639评论 0喜欢 2

server.xml作为 tomcat 启动时的配置依据,其功能包含了配置访问端口,访问路径等,这里主要针对在同一个 tomcat 中发布多个项目,其中最关键的配置是·<Host>标签下appBase<Context>标签下docBasepath之间的关系,以下也只列出关键性代码

标签释义

以下表格应用自 tomcat中server.xml配置详解

元素名属性解释
host(表示一个虚拟主机)name指定主机名
 appBase应用程序基本目录,即存放应用程序的目录
 unpackWARs如果为true,则tomcat会自动将WAR文件解压,否则不解压,直接从WAR文件中运行应用程序
Context(表示一个web应用程序)docBase应用程序的路径或者是WAR文件存放的路径
 path表示此web应用程序的url的前缀
 reloadable这个属性非常重要,如果为true,则tomcat会自动检测应用程序的/WEB-INF/lib 和/WEB-INF/classes目录的变化,自动装载新的应用程序,我们可以在不重起tomcat的情况下改变应用程序

域名配置

以下例子引用自 tomcat部署多项目server.xmll配置

  • 同个域名多个项目
<Host appBase="webapps" autoDeploy="true" name="www.test.com.cn" unpackWARs="true">

    <!--访问路径:www.test.com.cn/test-one-->
    <Context docBase="D:\tomcat\webapps\test-one" path="/test-one" reloadable="true"/> 
 
    <!--访问路径:www.test.com.cn/test-two-->
    <Context docBase="D:\tomcat\webapps\test-two" path="/test-two" reloadable="true"/> 
</Host>  
  • 不同域名多个项目
<!-- 访问路径:www.test.com.cn  -->  
<Host name="www.test.com.cn"  appBase="webapps" unpackWARs="true" autoDeploy="true">
    <Context path="/" docBase="D:\tomcat\webapps\test-three" reloadable="true" />
</Host>

<!-- 访问路径:www.test2.com.cn  -->
<Host name="www.test2.com.cn"  appBase="webapps" unpackWARs="true" autoDeploy="true">
    <Context path="/" docBase="D:\tomcat\webapps\test-four" reloadable="true" />
</Host>  

解释说明

1.appBase

<Host>中的appBase,其作用是指定 tomcat 启动时,第一加载的项目,默认的为 webapps ,它代表的意思是加载 tomcat 根目录下 webapps 文件夹中的项目,也就是 tomcat 的管理页。

  • 将项目作为默认启动项目时,注意:appBase指定路径的项目,需要包含有ROOT的文件夹,但不需要写进XML中,例如
    项目test的原路径:
    E:\WorkProject\TomcatRun\test\WEB-INF
    如果要将该项目设置为默认的启动项目,则文件的存放路径需要改为
    E:\WorkProject\TomcatRun\test\ROOT\WEB-INF

相应的配置文件为

<Host name="localhost"  appBase="E:\WorkProject\TomcatRun\test" unpackWARs="true" autoDeploy="true">
</Host>

并且此项目的API访问路径不需要URL前缀,即http://localhost:8080

2.docBase

<Context>中的docBase,其作用是当需要发布多个项目时,可以在这里设置项目路径,值可以是绝对路径,也可以时相对于appBase的路径,这里我们只写绝对路径。
比如我们有另一个项目test2,存放地址是E:\WorkProject\TomcatRun\test2,则相应的配置可以写为

<Host name="localhost" unpackWARs="true" autoDeploy="true" appBase="webapps">
  <Context docBase="E:\WorkProject\TomcatRun\test2" path=" " debug="0"  reloadable="true"/>
</Host> 

这里appBase="webapps",因为我们不去关心默认启动项目,而且我们这里的path=" ",当path=" "时,docBase所指向的项目就是第一加载项目,访问http://localhost:8080时,指向的是docBase所指向的项目(这里不需要存在ROOT文件夹)

3.path

这个比较简单,它的作用是URL的访问前缀,和项目本身没有关系,可以是任意值,比如

<Host name="localhost" unpackWARs="true" autoDeploy="true" appBase="webapps">
  <Context docBase="E:\WorkProject\TomcatRun\test2" path="project1" debug="0"  reloadable="true"/>
</Host> 

那么要访问test2时,需要访问http://localhost:8080/project1

采坑

在设置appBasedocBase有个地方需要注意,当appBase的根路径和docBase的根路径一致时,会导致项目重复加载,比如

<Host appBase="D:\tomcat\webapps\test-three" autoDeploy="true" name="www.test.com.cn" unpackWARs="true">

    <Context docBase="D:\tomcat\webapps\test-one" path="/test-one" reloadable="true"/> 

    <Context docBase="D:\tomcat\webapps\test-two" path="/test-two" reloadable="true"/> 
</Host>  

文件夹webapps下有三个项目文件夹,分别是test-onetest-twotest-three,由于appBase加载的项目和docBase加载的项目处于同一根目录,当启动tomcat的时候,会加载一次test-threetest-onetest-one会分别加载两次,这里给出了解释[Tomcat] server.xml配置appBase与docBase的用法

<think>嗯,用户想了解Tomcat的启动脚本catalina.sh的命令用法。首先,我需要回忆一下自己之前学过的Tomcat相关知识。记得Tomcat的启动脚本主要是startup.sh和shutdown.sh,但其实它们都是调用catalina.sh的不同参数。用户的问题是关于catalina.sh的具体命令用法,所以得详细解释各个参数的作用。 首先,我应该从基本结构开始,说明catalina.sh的位置和基本调用方式。然后,列举常用的参数,比如start、stop、run等,每个参数对应的功能是什么。比如start是在后台启动,而run是前台启动,stop是关闭。可能需要引用到之前看到的资料,比如引用[2]提到start.sh调用了catalina.sh start,而引用[4]提到stop参数对应关闭服务器。 接下来,用户可能还想知道调试参数,比如jpda start,用于远程调试。这部分需要解释如何启用调试模式,并可能需要提到设置JPDA_ADDRESS等环境变量。另外,version参数显示版本信息,configtest检查配置文件是否正确,这些也是常用的命令,需要包含进去。 还有一些高级用法,比如设置JVM参数,通过JAVA_OPTS或者CATALINA_OPTS。引用[1]提到可以在启动时设置catalina.home和catalina.base,所以在环境变量部分需要说明如何配置这些参数,以及它们的区别。同时,引用[3]指出可以直接编辑catalina.sh文件来设置这些变量,但建议使用环境变量而不是直接修改脚本。 用户可能还会有疑问,比如如何查看启动日志,这时候需要提到使用参数start -security或者使用日志文件。另外,可能需要注意不同Tomcat版本的参数是否有变化,但一般情况下这些参数是保持稳定的。 最后,生成相关的问题可以帮助用户进一步探索,比如如何配置内存参数,如何调试启动失败的问题,或者catalina.home和base的区别。这些问题需要基于之前的内容,确保用户能够找到相关的信息。 需要确保回答的结构清晰,分点说明各个参数,并正确引用相关的资料。同时,避免使用Markdown格式,保持自然的中文叙述,符合用户的要求。还要检查是否有遗漏的参数或者常见的用法,确保用户能全面了解catalina.sh的用法。</think>### Tomcat catalina.sh 命令详解及用法说明 Tomcat的启动脚本`catalina.sh`是核心控制脚本,支持多种命令参数以实现不同的操作模式。以下为常用命令及其说明: #### 一、基本命令格式 ```bash ./catalina.sh [命令参数] ``` 脚本位于`$CATALINA_HOME/bin`目录下,需在Tomcat安装目录下执行[^3]。 #### 二、常用命令参数 1. **`start`** 后台启动Tomcat服务器: ```bash ./catalina.sh start ``` 等同于执行`startup.sh`脚本[^2]。 2. **`stop`** 关闭Tomcat服务器: ```bash ./catalina.sh stop ``` 等同于执行`shutdown.sh`脚本,通过向Tomcat进程发送终止信号实现关闭[^4]。 3. **`run`** 前台启动Tomcat(直接输出日志到控制台): ```bash ./catalina.sh run ``` 适用于调试场景,终止控制台会直接关闭Tomcat。 4. **`version`** 显示Tomcat版本信息: ```bash ./catalina.sh version ``` 5. **`configtest`** 检查配置文件语法: ```bash ./catalina.sh configtest ``` 验证`server.xml`等配置文件是否合法,避免因配置错误导致启动失败。 6. **`jpda start`** 启用远程调试模式: ```bash ./catalina.sh jpda start ``` 默认监听端口为`8000`,可通过环境变量`JPDA_ADDRESS`自定义端口[^3]。 #### 三、高级用法 1. **设置JVM参数** 通过环境变量配置内存或垃圾回收策略: ```bash export JAVA_OPTS="-Xms512m -Xmx1024m" ./catalina.sh start ``` 或使用`CATALINA_OPTS`(仅Tomcat专用)[^3]。 2. **指定`catalina.home`和`catalina.base`** 多实例部署时区分基础目录: ```bash export CATALINA_HOME="/opt/tomcat" export CATALINA_BASE="/opt/instance1" ./catalina.sh start ``` `catalina.home`为公共资源目录,`catalina.base`为实例私有目录[^1]。 3. **日志输出控制** 启动时启用安全日志: ```bash ./catalina.sh start -security ``` #### 四、典型场景示例 - **调试模式启动**: ```bash export JPDA_ADDRESS="5005" ./catalina.sh jpda start ``` - **多实例部署**: ```bash export CATALINA_BASE="/opt/tomcat-instance2" ./catalina.sh start ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值