1. 安裝與初始化配置
java -version
確認安裝成功。/opt
目錄(如/opt/tomcat
),避免使用root用戶操作。tomcat
組和用戶(-s /bin/false
禁用shell登錄),將Tomcat目錄所有權賦予tomcat:tomcat
;精細設置權限:conf
(750)、logs
/temp
/webapps
(755),防止未授權訪問。/etc/systemd/system/tomcat.service
文件,配置User=tomcat
、Group=tomcat
、JAVA_HOME
(指向系統JDK路徑)、CATALINA_OPTS
(初始堆-Xms512M
、最大堆-Xmx1024M
、垃圾回收器-XX:+UseG1GC
)等參數;執行systemctl daemon-reload
、systemctl start tomcat
、systemctl enable tomcat
啟動服務并設置開機自啟。2. 性能優化配置
JAVA_OPTS
或CATALINA_OPTS
調整內存分配(如-Xms1024m -Xmx2048m
適應中等負載)、元空間大?。?code>-XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m避免元空間溢出)、垃圾回收器(-XX:+UseG1GC
適用于大內存堆,-XX:MaxGCPauseMillis=200
限制最大GC暫停時間)。server.xml
中配置<Executor>
(命名tomcatThreadPool
,maxThreads=500
處理并發請求數、minSpareThreads=50
保持最小空閑線程、maxQueueSize=100
限制排隊請求數);關聯<Connector>
使用該線程池,提升并發處理能力。protocol="org.apache.coyote.http11.Http11Nio2Protocol"
)替代傳統BIO,提高I/O效率;啟用壓縮(compression="on"
、compressableMimeType="text/html,text/css,application/javascript"
)減少網絡傳輸量;調整acceptCount=500
(所有線程繁忙時的最大排隊數),避免請求被拒絕。JAVA_OPTS
添加-XX:+UseStringDeduplication
(字符串去重減少內存占用)、-Djava.awt.headless=true
(無圖形界面運行,節省資源);通過ulimit -n 65536
增加系統文件描述符限制,避免高并發下文件句柄耗盡。3. 安全加固措施
tomcat-users.xml
,僅添加必要角色(如manager-gui
、admin-gui
)和強密碼用戶(如StrongP@ssw0rd123
);禁用默認管理員賬號(如admin
),避免弱口令攻擊。web.xml
,在<error-page>
中添加<init-param>
(<param-name>showServerInfo</param-name>
、<param-value>false</param-value>
),隱藏Tomcat版本號,降低被針對性攻擊的風險。ufw
配置防火墻,僅允許必要端口(如sudo ufw allow 8080/tcp
);若無需遠程管理,注釋server.xml
中的manager
和host-manager
應用,或限制其訪問IP(如<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="192\.168\.1\.\d+" />
)。openssl req -new -x509 -days 365 -keyout /opt/tomcat/conf/tomcat.key -out /opt/tomcat/conf/tomcat.crt
)或使用Let’s Encrypt證書;配置server.xml
中的<Connector>
(port=8443
、SSLEnabled=true
、keystoreFile
指向證書路徑),強制HTTPS訪問,保護數據傳輸安全。4. 日志與監控管理
logging.properties
,調整日志級別(如org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO
避免DEBUG日志過多);使用logrotate
工具配置日志輪轉(如/etc/logrotate.d/tomcat
),設置每日分割、保留7天,防止日志文件過大占用磁盤空間。VisualVM
、JConsole
或Prometheus+Grafana
監控Tomcat的JVM內存使用率、線程池狀態、請求響應時間等指標;設置閾值告警(如內存使用率超過80%觸發郵件通知),及時發現并解決性能瓶頸。