Tomcat的日志文件是排查啟動失敗問題的核心依據,其中catalina.out
(位于$TOMCAT_HOME/logs
目錄)記錄了啟動過程的詳細信息。使用以下命令實時查看日志最新內容:
tail -f $TOMCAT_HOME/logs/catalina.out
通過日志中的錯誤關鍵詞(如“Port already in use”“Java version mismatch”“Permission denied”),可快速定位問題根源。
Tomcat依賴Java環境運行,需確保以下兩點:
java -version
命令檢查Java版本,若未安裝或版本不符,需通過yum install java-11-openjdk-devel
(CentOS默認倉庫)或官網下載安裝包安裝。/etc/profile
或~/.bashrc
文件,添加以下內容(替換為實際JDK路徑):export JAVA_HOME=/usr/lib/jvm/java-11-openjdk
export PATH=$JAVA_HOME/bin:$PATH
運行source /etc/profile
使配置生效。部分Tomcat版本需在bin/setenv.sh
中額外配置JAVA_HOME
。Tomcat默認使用8080端口(HTTP)、8005端口(關閉命令)、8009端口(AJP),若這些端口被其他程序占用,會導致啟動失敗。
netstat -tuln | grep :8080
或lsof -i:8080
命令查看端口占用進程。kill -9 <PID>
(lsof
輸出的進程ID)終止進程,或在$TOMCAT_HOME/conf/server.xml
中修改<Connector>
標簽的port
屬性(如將8080改為8081)。Tomcat的主配置文件server.xml
(位于$TOMCAT_HOME/conf
目錄)包含連接器、虛擬主機、上下文等重要配置,語法錯誤會導致啟動失敗。
xmllint --noout $TOMCAT_HOME/conf/server.xml
命令驗證XML語法是否正確。<Connector>
標簽的port
、protocol
屬性(如protocol="HTTP/1.1"
),<Context>
標簽的path
屬性(如path=""
表示根應用),避免拼寫錯誤或無效值。Tomcat啟動需要足夠的內存和磁盤空間,資源不足會導致啟動失敗。
free -m
命令查看系統內存,若可用內存不足(如小于512MB),需修改$TOMCAT_HOME/bin/setenv.sh
文件(若不存在則創建),添加JVM內存參數:export JAVA_OPTS="-Xms512m -Xmx1024m"
其中-Xms
為初始堆內存,-Xmx
為最大堆內存(根據服務器內存調整,建議不超過物理內存的70%)。df -h
命令查看磁盤使用情況,若/
分區剩余空間小于10%,需清理無用文件(如舊日志、臨時文件)。Tomcat需要對安裝目錄及其子目錄(如logs
、webapps
、conf
)有讀寫執行權限,權限不足會導致啟動失敗。
tomcat
),使用命令:sudo chown -R tomcat:tomcat $TOMCAT_HOME
sudo chmod -R 755 $TOMCAT_HOME
注意:logs
、temp
、work
目錄需授予寫權限(chmod -R 775 logs temp work
)。CentOS默認啟用SELinux(安全增強模塊),可能會阻止Tomcat訪問網絡端口或文件。
setenforce 0
命令將SELinux設置為寬松模式(重啟后恢復),測試Tomcat是否能啟動。/etc/selinux/config
文件,將SELINUX=enforcing
改為SELINUX=disabled
,重啟服務器生效。semanage
命令允許Tomcat使用8080端口:sudo semanage port -a -t http_port_t -p tcp 8080
(需安裝policycoreutils-python-utils
包:yum install policycoreutils-python-utils
)。CentOS防火墻(firewalld)默認阻止外部訪問Tomcat端口(如8080),需放行該端口。
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
sudo firewall-cmd --reload
systemctl stop firewalld
命令關閉防火墻,若Tomcat能啟動,則需按上述步驟放行端口。不同版本的Tomcat對Java版本有嚴格要求,版本不匹配會導致啟動失敗。例如:
Tomcat的work
目錄(緩存編譯后的JSP文件)或temp
目錄(臨時文件)過大,可能導致啟動失敗。
$TOMCAT_HOME/work/Catalina
目錄下的所有文件(不會影響已部署的應用):rm -rf $TOMCAT_HOME/work/Catalina/*
$TOMCAT_HOME/temp
目錄下的所有文件:rm -rf $TOMCAT_HOME/temp/*
清理后重啟Tomcat即可。