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即可。