一、环境准备与安装规范
/opt/tomcat等专用目录(避免安装在系统目录如/usr/local),保持目录结构清晰。/etc/profile或用户~/.bashrc中添加CATALINA_HOME(指向Tomcat目录)、PATH(包含$CATALINA_HOME/bin),执行source命令使配置生效,方便全局调用Tomcat命令。二、权限与用户管理(安全核心)
tomcat),设置为系统用户(-r参数)且无登录权限(-s /bin/false),避免以root运行带来的权限滥用风险。tomcat用户及组(sudo chown -R tomcat:tomcat /opt/tomcat),设置目录权限为750(所有者可读写执行,组可读执行,其他用户无权限),防止未授权访问。server.xml中<Connector protocol="AJP/1.3">段落,减少攻击面。三、性能优化策略
catalina.sh中的JAVA_OPTS参数,设置初始堆(-Xms)与最大堆(-Xmx)为相同值(避免堆内存动态调整的开销,如-Xms1024m -Xmx2048m),并根据应用特点选择垃圾回收器(如G1GC适用于大内存应用:-XX:+UseG1GC)。server.xml中Connector的线程参数,maxThreads(最大并发线程数,如250-500,根据CPU核心数调整)、minSpareThreads(最小空闲线程数,如50,保持线程池活跃)、maxConnections(最大连接数,如1000,处理高并发请求),平衡并发性能与资源消耗。/etc/sysctl.conf文件,优化网络栈参数(如net.core.somaxconn=8192增加TCP连接队列长度、net.ipv4.tcp_tw_reuse=1复用TIME_WAIT状态的连接、net.ipv4.tcp_fin_timeout=30缩短连接关闭时间),提升Tomcat处理高并发的能力。web.xml中添加<cache-control>max-age=3600</cache-control>),降低磁盘IO。四、安全加固措施
tomcat-users.xml限制管理用户权限(仅授予必要角色,如manager-gui用于管理控制台),设置强密码(包含大小写字母、数字、特殊符号,长度≥8位);使用防火墙(ufw或firewalld)限制Tomcat端口(如8080、8443)的访问,仅允许特定IP(如运维人员IP)访问。server.xml配置HTTPS连接器(port="8443"、SSLEnabled="true"、keystoreFile指向证书路径),强制客户端使用HTTPS访问,加密传输数据。server.xml中的Server标签(如<Server port="8005" shutdown="SHUTDOWN" serverInfo="Custom Server">),隐藏Tomcat版本信息;在web.xml中配置<error-page>自定义404、500等错误页面,避免暴露系统路径或框架信息。server.xml中的autoDeploy属性设置为false,禁用自动部署功能,避免恶意WAR包自动解压运行;建议通过手动部署应用(将WAR包复制至webapps目录后重启Tomcat)。五、自动启动与服务管理
/etc/systemd/system/tomcat.service文件,定义Tomcat的服务属性(如User=tomcat、Group=tomcat、Environment设置JAVA_HOME和CATALINA_HOME、ExecStart指向startup.sh、ExecStop指向shutdown.sh),并设置Restart=always(进程意外终止时自动重启),提升服务可靠性。systemctl daemon-reload重新加载Systemd配置,systemctl start tomcat启动服务,systemctl enable tomcat设置开机自启;通过curl http://localhost:8080或浏览器访问Tomcat默认页面,验证服务是否正常运行。六、监控与维护
logs/catalina.out记录启动与运行日志、logs/localhost.log记录应用日志),使用tail -f catalina.out实时监控日志,通过grep、awk等工具分析错误信息(如grep "ERROR" catalina.out)。jconsole、VisualVM)连接Tomcat的JMX端口(默认1099),监控JVM内存使用、线程状态、GC频率等指标;或使用第三方监控工具(如Prometheus+Granafa、Zabbix),实现可视化监控与告警。conf/目录)和应用数据(webapps/目录),避免数据丢失。