一、环境准备与安装规范
/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/
目录),避免数据丢失。