当前位置: 首页 > news >正文

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 部署日志

    http://www.xdnf.cn/news/553303.html

    相关文章:

  1. 解码数据语言:如何优雅的进行数仓字典建设?
  2. C++:迭代器
  3. C++数据结构——红黑树
  4. 如何使用通义灵码辅助开发鸿蒙OS - AI编程助手提升效率
  5. centos7配置静态ip 网关 DNS
  6. 数据实时同步:inotify + rsync 实现数据实时同步
  7. 《深入理解指针数组:创建与使用指南》
  8. 【C/C++】static关键字的作用
  9. 计算机图形学Games101笔记--几何
  10. 计算机视觉与深度学习 | matlab实现ARIMA-WOA-CNN-LSTM时间序列预测(完整源码和数据)
  11. VMD查看蛋白质-配体的分子动力学模拟轨迹
  12. 【Redis实战篇】达人探店
  13. Golang的代码注释规范与实践
  14. 机器学习第十八讲:混淆矩阵 → 诊断模型在医疗检查中的误诊情况
  15. 33、魔法防御术——React 19 安全攻防实战
  16. 每日算法刷题Day11 5.20:leetcode不定长滑动窗口求最长/最大6道题,结束不定长滑动窗口求最长/最大,用时1h20min
  17. AMO——下层RL与上层模仿相结合的自适应运动优化:让人形行走操作(loco-manipulation)兼顾可行性和动力学约束
  18. 【优秀三方库研读】在 quill 开源库中 QUILL_MAGIC_SEPARATOR 的作用是什么,解决了什么问题
  19. 【爬虫】12306自动化购票
  20. 【VS Code】Qt程序的调试与性能分析
  21. SN生成流水号并且打乱
  22. LTX-Videov本地部署教程:时空扩散+多尺度渲染,重塑AI视频研究范式
  23. 第 4 章:网络与总线——CAN / Ethernet / USB-OTG
  24. STM32中的ADC
  25. CSS之box-sizing、图片模糊、计算盒子宽度clac、(重点含小米、进度条案例)过渡
  26. 喷涂喷漆机器人详解
  27. python-leetcode 68.有效的括号
  28. RSA加解密实战指南:Java与JavaScript实现详解 + 在线工具推荐
  29. PyTorch 之 torch.distributions.Categorical 详解
  30. Vue 3.0 Transition 组件使用详解