一、端口沖突(常見錯誤:Address already in use)
Tomcat啟動時若提示端口沖突(如默認的8080端口被占用),需通過以下步驟解決:
netstat -tuln | grep 8080
(替換為實際端口號)命令,查看占用端口的進程ID(PID)。kill -9 <PID>
命令強制終止。$TOMCAT_HOME/conf/server.xml
文件,找到<Connector port="8080">
標簽,將端口號更改為未被占用的端口(如8081),保存后重啟Tomcat。二、Java環境配置錯誤(常見錯誤:JAVA_HOME not set或版本不兼容)
Tomcat依賴Java環境,若未正確配置或版本不匹配,會導致啟動失?。?/p>
java -version
,確認已安裝JDK(建議使用Java 8及以上版本,與Tomcat版本兼容)。~/.bashrc
或/etc/profile
文件,添加export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
(路徑需替換為實際JDK安裝路徑),并執行source ~/.bashrc
使配置生效。echo $JAVA_HOME
,確認輸出正確的JDK路徑。三、配置文件語法錯誤(常見錯誤:server.xml/web.xml語法錯誤)
Tomcat的server.xml
(連接器、端口配置)、web.xml
(應用部署配置)等文件若存在語法錯誤,會導致啟動失?。?/p>
$TOMCAT_HOME/logs/catalina.out
文件,找到具體的語法錯誤信息(如標簽未閉合、屬性值缺失)。<Connector>
標簽的port
屬性值為數字,確保<Context>
標簽路徑格式正確)。四、內存溢出(常見錯誤:OutOfMemoryError)
當Tomcat分配的內存不足以支持應用運行時,會出現內存溢出錯誤:
catalina.out
日志中的OutOfMemoryError
信息(如Java heap space
表示堆內存不足,PermGen space
表示永久代內存不足),或使用jconsole
、jvisualvm
工具監控內存使用情況。$TOMCAT_HOME/bin/catalina.sh
文件,添加或修改JAVA_OPTS
變量(建議根據服務器內存調整):
-Xms512m
(初始堆大?。?、-Xmx2048m
(最大堆大?。?;-XX:PermSize=256m
、-XX:MaxPermSize=512m
(Java 8前)或-XX:MetaspaceSize=256m
、-XX:MaxMetaspaceSize=512m
(Java 8+);-XX:+UseG1GC
(推薦使用G1垃圾回收器提升性能)。jmap
生成堆轉儲文件(jmap -dump:live,format=b,file=heapdump.hprof <PID>
),并通過jhat
或MAT工具分析泄漏點。五、權限問題(常見錯誤:Permission denied或無法訪問文件)
Tomcat進程若沒有足夠的權限訪問目錄或文件(如日志目錄、webapps目錄),會導致啟動或運行失?。?/p>
logs
、webapps
、conf
)的所有者為Tomcat用戶(通常為tomcat
),使用sudo chown -R tomcat:tomcat /path/to/tomcat
命令修改。sudo chmod -R 755 /path/to/tomcat
命令,賦予目錄讀寫執行權限(注意:webapps
目錄下的應用目錄可根據需要調整權限,如750)。logs
目錄可寫入,避免Tomcat無法生成日志文件。六、SELinux限制(常見錯誤:avc: denied或無法啟動)
若CentOS啟用了SELinux(安全增強功能),可能會阻止Tomcat訪問網絡或文件:
sudo setenforce 0
命令,臨時將SELinux設置為寬松模式,重啟Tomcat測試是否解決。/etc/selinux/config
文件,將SELINUX=enforcing
改為SELINUX=disabled
,重啟服務器生效(注意:禁用SELinux會降低系統安全性,建議僅在測試環境使用)。sudo setsebool -P tomcat_can_network_connect 1
。七、防火墻阻止端口訪問(常見錯誤:Connection refused)
若CentOS防火墻(firewalld或iptables)阻止了Tomcat的端口(如8080),外部無法訪問Tomcat:
firewall-cmd --zone=public --add-port=8080/tcp --permanent
命令(替換為實際端口),永久開放端口。firewall-cmd --reload
命令,使配置生效。firewall-cmd --list-all
命令,確認端口已加入允許列表。八、日志文件亂碼(常見錯誤:中文日志顯示為亂碼)
Tomcat日志(如catalina.out
)若出現中文亂碼,需調整JVM字符編碼:
$TOMCAT_HOME/bin/catalina.sh
文件,在JAVA_OPTS
變量中添加-Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8
參數(如export JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8"
)。$TOMCAT_HOME/bin/startup.sh
重啟Tomcat,查看日志是否正常顯示中文。