Tomcat的基本概念
Tomcat是一个开源的轻量级Web应用服务器,由Apache软件基金会开发。它实现了Java Servlet、JavaServer Pages(JSP)和WebSocket等技术规范,主要用于部署和运行Java Web应用程序。Tomcat的核心组件包括Connector、Engine、Host、Context和Wrapper。
Tomcat的安装与配置
下载Tomcat的二进制发行版,解压到指定目录。配置环境变量CATALINA_HOME指向Tomcat的安装目录。修改conf/server.xml文件可以调整端口号、连接器配置等。conf/web.xml是全局的Web应用部署描述文件。
启动Tomcat通过执行bin/startup.sh(Linux)或bin/startup.bat(Windows)。停止Tomcat使用bin/shutdown.sh或bin/shutdown.bat。默认的管理界面访问地址为http://localhost:8080。
部署Web应用程序
将Web应用程序打包为WAR文件,复制到webapps目录下,Tomcat会自动解压并部署。也可以通过修改conf/server.xml中的<Context>元素手动配置应用路径。动态部署可以通过Tomcat的管理界面或使用ant脚本实现。
开发模式下,可以将未打包的Web应用目录直接放在webapps下。Tomcat支持热部署,修改WEB-INF/web.xml或类文件后,重新加载应用即可生效。
Tomcat的优化配置
调整JVM参数以提高性能,修改bin/catalina.sh(或.bat)中的JAVA_OPTS:
JAVA_OPTS="-Xms512m -Xmx1024m -XX:+UseG1GC"
优化连接器配置,修改conf/server.xml中的<Connector>:
<Connector port="8080" protocol="HTTP/1.1"
maxThreads="200"
minSpareThreads="25"
connectionTimeout="20000"
enableLookups="false"/>
启用压缩以减少网络传输量:
<Connector ... compression="on" compressionMinSize="2048"
compressableMimeType="text/html,text/xml,text/css,text/javascript"/>
Tomcat的安全配置
删除默认的示例应用和管理界面(webapps下的examples、docs等目录)。修改默认的管理员密码,编辑conf/tomcat-users.xml:
<user username="admin" password="complexpassword" roles="manager-gui,admin-gui"/>
限制访问权限,配置conf/context.xml中的<Valve>:
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="192\.168\.1\.\d+"/>
启用HTTPS,生成密钥库并配置server.xml:
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true">
<SSLHostConfig>
<Certificate certificateKeystoreFile="conf/.keystore"
certificateKeystorePassword="changeit"
type="RSA" />
</SSLHostConfig>
</Connector>
Tomcat的日志管理
Tomcat的日志文件位于logs目录。catalina.out是主日志文件,记录启动和运行信息。localhost.log记录Web应用的日志。access_log记录HTTP请求。
配置日志级别,修改conf/logging.properties:
org.apache.catalina.core.ContainerBase.[Catalina].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].handlers = java.util.logging.ConsoleHandler
集成Log4j或SLF4J,将相应的桥接库和配置文件放入lib和WEB-INF/classes目录。
Tomcat的集群配置
配置Tomcat集群实现负载均衡和高可用性。使用mod_jk或mod_proxy将Apache HTTP Server与Tomcat集成。在server.xml中启用集群功能:
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
配置会话复制,确保web.xml中包含<distributable/>标签。使用多播或静态成员列表实现节点发现:
<Cluster ...>
<Channel className="org.apache.catalina.tribes.group.GroupChannel">
<Membership className="org.apache.catalina.tribes.membership.McastService"
address="228.0.0.4" port="45564"/>
</Channel>
</Cluster>
Tomcat的监控与管理
使用JMX监控Tomcat运行状态,启用JMX远程访问:
JAVA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9000
-Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
集成第三方监控工具如Nagios、Zabbix或Prometheus。使用Tomcat自带的/manager/status界面查看服务器状态(需配置权限)。
Tomcat的常见问题排查
端口冲突导致启动失败,检查并修改server.xml中的端口号。内存溢出时调整JVM堆大小和垃圾回收策略。应用加载失败检查logs/catalina.out和应用的WEB-INF/logs。
类加载问题通常由库冲突引起,检查lib和WEB-INF/lib目录。线程阻塞使用jstack分析线程转储。连接泄露配置DBCP或HikariCP的连接池监控。
Tomcat从入门到精通全解析
3128

被折叠的 条评论
为什么被折叠?



