Tomcat配置详情

Apache Tomcat 是一个开源的 Java Servlet 容器和 Web 服务器,以下是 Tomcat 的详细配置说明。

一、Tomcat 目录结构

├── bin/            # 启动/关闭脚本
├── conf/           # 配置文件
│   ├── server.xml       # 主配置文件
│   ├── web.xml          # 全局web应用配置
│   ├── context.xml      # 上下文配置
│   └── tomcat-users.xml # 用户权限配置
├── lib/            # 共享库
├── logs/           # 日志文件
├── webapps/        # 部署目录
├── work/           # 工作目录
└── temp/           # 临时文件

二、核心配置文件详解

1. server.xml (主配置文件)

<Server port="8005" shutdown="SHUTDOWN">
  <Service name="Catalina">
    <!-- 连接器配置 -->
    <Connector 
      port="8080" 
      protocol="HTTP/1.1"
      connectionTimeout="20000"
      redirectPort="8443" />
    
    <!-- AJP连接器 -->
    <Connector 
      port="8009" 
      protocol="AJP/1.3" 
      redirectPort="8443" />
    
    <!-- 引擎配置 -->
    <Engine name="Catalina" defaultHost="localhost">
      <Host 
        name="localhost" 
        appBase="webapps"
        unpackWARs="true" 
        autoDeploy="true">
        
        <!-- 上下文配置 -->
        <Context 
          path="" 
          docBase="myapp" 
          reloadable="true" />
      </Host>
    </Engine>
  </Service>
</Server>

2. web.xml (全局应用配置)

<web-app>
  <!-- 默认Servlet配置 -->
  <servlet>
    <servlet-name>default</servlet-name>
    <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
    <init-param>
      <param-name>debug</param-name>
      <param-value>0</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  
  <!-- Session配置 -->
  <session-config>
    <session-timeout>30</session-timeout> <!-- 30分钟 -->
  </session-config>
  
  <!-- MIME类型映射 -->
  <mime-mapping>
    <extension>pdf</extension>
    <mime-type>application/pdf</mime-type>
  </mime-mapping>
</web-app>

3. context.xml (上下文配置)

<Context>
  <!-- 数据源配置 -->
  <Resource 
    name="jdbc/myDB" 
    auth="Container"
    type="javax.sql.DataSource"
    maxTotal="100" 
    maxIdle="30"
    username="dbuser" 
    password="dbpass"
    driverClassName="com.mysql.jdbc.Driver"
    url="jdbc:mysql://localhost:3306/mydb" />
  
  <!-- 环境变量 -->
  <Environment 
    name="app.config" 
    value="/etc/myapp/config.properties"
    type="java.lang.String" />
</Context>

4. tomcat-users.xml (用户权限配置)

<tomcat-users>
  <!-- 角色定义 -->
  <role rolename="manager-gui"/>
  <role rolename="admin-gui"/>
  
  <!-- 用户定义 -->
  <user 
    username="admin" 
    password="s3cret" 
    roles="manager-gui,admin-gui"/>
</tomcat-users>

三、常用配置项

1. 端口修改

修改 conf/server.xml 中的 Connector 配置:

<Connector 
  port="8080" 
  protocol="HTTP/1.1"
  connectionTimeout="20000"
  redirectPort="8443" />

2. 虚拟主机配置

<Host name="www.example.com" appBase="webapps/example" unpackWARs="true">
  <Alias>example.com</Alias>
  <Context path="" docBase="." />
  <Valve 
    className="org.apache.catalina.valves.AccessLogValve"
    directory="logs"
    prefix="example_access_log" 
    suffix=".log"
    pattern="%h %l %u %t &quot;%r&quot; %s %b" />
</Host>

3. SSL/TLS 配置

1. 生成秘钥

keytool -genkey -alias tomcat -keyalg RSA -keystore /path/to/keystore

2. 修改 server.xml

<Connector 
  port="8443" 
  protocol="org.apache.catalina.util.NettyEndpoint"
  maxThreads="150" 
  SSLEnabled="true">
  <SSLHostConfig>
    <Certificate 
      certificateKeystoreFile="/path/to/keystore"
      certificateKeystorePassword="changeit"
      type="RSA" />
  </SSLHostConfig>
</Connector>

4. 内存配置

修改 bin/catalina.sh (Linux) 或 bin/catalina.bat (Windows):

# Linux
export JAVA_OPTS="-Xms512m -Xmx1024m -XX:MaxPermSize=256m"

# Windows
set JAVA_OPTS=-Xms512m -Xmx1024m -XX:MaxPermSize=256m

5. 访问日志配置

<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" 
  rotatable="true"/>

四、部署应用

1. 自动部署

将 WAR 文件复制到 webapps/ 目录,Tomcat 会自动解压部署。

2. 手动部署

在 conf/Catalina/localhost/ 下创建 XML 文件:

<Context 
  docBase="/path/to/your/app" 
  path="/yourapp" 
  reloadable="true" />

五、性能优化

1. 连接器优化

<Connector 
  port="8080" 
  protocol="org.apache.coyote.http11.Http11Nio2Protocol"
  maxThreads="200"
  minSpareThreads="10"
  acceptCount="100"
  enableLookups="false"
  compression="on"
  compressionMinSize="2048"
  compressableMimeType="text/html,text/xml,text/plain,text/css,text/javascript,application/javascript" />

2. JVM 优化

JAVA_OPTS="-server -Xms2048m -Xmx2048m -XX:NewSize=512m -XX:MaxNewSize=512m -XX:PermSize=256m -XX:MaxPermSize=256m -XX:+DisableExplicitGC"

3. 禁用不必要的功能

<!-- 在server.xml中禁用AJP连接器(如不使用) -->
<!-- <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> -->

六、安全管理

1. 禁用管理界面

删除 webapps/manager 和 webapps/host-manager 目录

2. 限制访问

<Context>
  <Valve 
    className="org.apache.catalina.valves.RemoteAddrValve"
    allow="192\.168\.1\.\d+|127\.0\.0\.1" />
</Context>

3. 隐藏服务器信息

修改 conf/web.xml

<servlet>
  <servlet-name>default</servlet-name>
  <init-param>
    <param-name>server</param-name>
    <param-value>Unknown</param-value>
  </init-param>
</servlet>

七、常用命令

# 启动Tomcat
./bin/startup.sh  # Linux
bin\startup.bat   # Windows

# 关闭Tomcat
./bin/shutdown.sh  # Linux
bin\shutdown.bat   # Windows

# 查看版本
./bin/version.sh

# 调试模式
export CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"
./bin/catalina.sh jpda start

八、常见问题解决

  1. 端口冲突

    • 检查端口占用:netstat -tulnp | grep 8080

    • 修改 server.xml 中的端口号

  2. 内存溢出

    • 增加 JVM 内存参数

    • 检查应用内存泄漏

  3. 应用无法访问

    • 检查 webapps 目录是否有应用

    • 查看 logs/catalina.out 错误日志

  4. 部署失败

    • 检查 WAR 文件是否完整

    • 查看 logs/localhost.log 部署日志

    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包

    打赏作者

    二九筒

    你的鼓励将是我创作的最大动力

    ¥1 ¥2 ¥4 ¥6 ¥10 ¥20
    扫码支付:¥1
    获取中
    扫码支付

    您的余额不足,请更换扫码支付或充值

    打赏作者

    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

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

    余额充值