CentOS下Tomcat配置要點
Tomcat依賴Java運行環境,需優先安裝JDK。推薦使用OpenJDK 11及以上版本(兼容性更好),通過yum
包管理器安裝:
sudo yum install java-11-openjdk-devel -y
安裝后驗證版本:java -version
,確保輸出包含Java版本信息。配置JAVA_HOME
環境變量(編輯/etc/profile
,添加export JAVA_HOME=/usr/lib/jvm/java-11-openjdk
),并執行source /etc/profile
使變量生效。
/opt
目錄(建議使用非root用戶操作):wget https://downloads.apache.org/tomcat/tomcat-9/v9.0.56/bin/apache-tomcat-9.0.56.tar.gz
tar -zxvf apache-tomcat-9.0.56.tar.gz -C /opt/
mv /opt/apache-tomcat-9.0.56 /opt/tomcat
tomcat
(避免以root運行),并設置目錄權限:sudo groupadd tomcat
sudo useradd -M -s /bin/nologin -g tomcat -d /opt/tomcat tomcat
sudo chown -R tomcat:tomcat /opt/tomcat
sudo chmod +x /opt/tomcat/bin/*.sh
/etc/systemd/system/tomcat.service
,內容如下:[Unit]
Description=Apache Tomcat Web Application Container
After=network.target
[Service]
Type=forking
Environment=JAVA_HOME=/usr/lib/jvm/java-11-openjdk
Environment=CATALINA_PID=/opt/tomcat/temp/tomcat.pid
Environment=CATALINA_HOME=/opt/tomcat
Environment=CATALINA_BASE=/opt/tomcat
Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC'
Environment='JAVA_OPTS=-Djava.awt.headless=true -Dfile.encoding=UTF-8'
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh
User=tomcat
Group=tomcat
UMask=0007
RestartSec=10
Restart=always
[Install]
WantedBy=multi-user.target
加載服務并啟動:sudo systemctl daemon-reload && sudo systemctl enable tomcat && sudo systemctl start tomcat
。開放Tomcat默認端口(8080),允許外部訪問:
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
sudo firewall-cmd --reload
驗證端口開放:sudo firewall-cmd --zone=public --query-port=8080/tcp
(返回yes
表示成功)。
通過調整JVM參數優化Tomcat內存使用,主要修改CATALINA_OPTS
(在/etc/systemd/system/tomcat.service
或/opt/tomcat/bin/catalina.sh
中):
-Xms512M
(初始堆大?。?、-Xmx1024M
(最大堆大?。?,根據服務器內存調整(建議不超過物理內存的70%);-XX:MetaspaceSize=256M
、-XX:MaxMetaspaceSize=512M
;-XX:+UseG1GC
(啟用G1垃圾回收器,適合大內存應用)。sudo systemctl restart tomcat
。編輯server.xml
(位于/opt/tomcat/conf/
),調整<Connector>
標簽參數,提升并發處理能力:
maxThreads
的10%-20%(如20-40);maxThreads
的1.5-2倍(如300);org.apache.coyote.http11.Http11NioProtocol
),提升I/O性能。<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"
connectionTimeout="20000"
redirectPort="8443"
maxThreads="200"
minSpareThreads="20"
acceptCount="300" />
修改后重啟Tomcat。
webapps
目錄下的docs
、examples
、manager
等默認應用(避免潛在安全風險);server.xml
中的<Connector>
標簽,添加server="Apache"
(隱藏Tomcat版本);server.xml
中的AJP連接器(<Connector port="8009" protocol="AJP/1.3" ... />
)。Tomcat日志位于$CATALINA_HOME/logs
目錄(如/opt/tomcat/logs
),主要包括:
tail -f catalina.out
實時查看),可通過logrotate
工具實現日志輪轉(避免日志文件過大)。