一、端口冲突(常见错误: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环境,若未正确配置或版本不匹配,会导致启动失败:
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(应用部署配置)等文件若存在语法错误,会导致启动失败:
$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目录),会导致启动或运行失败:
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,查看日志是否正常显示中文。