Tomcat是JSP的运行容器,若其未启动或端口被占用,JSP文件无法被解析。常见表现包括:访问http://服务器IP:8080无响应,或提示“无法连接到服务器”。
systemctl status tomcat命令检查Tomcat服务状态(若未运行,需启动:systemctl start tomcat);使用netstat -tuln | grep 8080(或Tomcat配置的端口)检查端口是否被其他进程占用(如Apache、Nginx或其他Tomcat实例)。server.xml文件(位于/usr/share/tomcat/conf/)中<Connector>标签的port属性(如改为8081),或停止占用端口的进程。CentOS遵循严格的权限管理,若Tomcat用户(默认为tomcat)无权读取JSP文件或其所在目录,会导致访问失败。常见表现包括:Tomcat日志中出现“Permission denied”错误,或JSP页面返回403 Forbidden。
ls -l /path/to/jsp/file检查JSP文件权限(如-rw-r--r--表示所有者可读写,其他用户仅可读);使用ls -ld /path/to/jsp/directory检查目录权限(如drwxr-xr-x表示所有者可读写执行,其他用户可读执行)。chmod 644 /path/to/*.jsp),为目录设置合理权限(chmod 755 /path/to/directory);确保文件所有者为Tomcat用户(chown -R tomcat:tomcat /path/to/jsp)。JSP文件需编译为Servlet才能运行,若编译过程中出现语法错误(如标签未闭合、Java代码错误),或缓存文件损坏,会导致JSP无法访问。常见表现包括:Tomcat日志中出现“JasperException”“ClassNotFoundException”或“500 Internal Server Error”;修改JSP内容后仍显示旧页面。
logs/catalina.out或logs/localhost.log文件,查找JSP编译相关的错误信息;检查Tomcat的work目录(缓存目录,如/usr/share/tomcat/work/Catalina/)中是否有损坏的缓存文件(如.class文件)。work目录(删除对应应用的缓存文件夹),重启Tomcat以重新编译JSP。CentOS的防火墙(firewalld或iptables)和SELinux(安全增强模块)可能阻止外部访问Tomcat端口,导致JSP无法访问。常见表现包括:本地访问http://localhost:8080正常,但远程访问失败;日志中出现“Connection refused”或“SELinux is preventing access”错误。
firewall-cmd --list-ports检查防火墙是否开放了Tomcat端口(如8080);使用getenforce检查SELinux状态(若为“Enforcing”,需调整策略)。firewall-cmd --zone=public --add-port=8080/tcp --permanent,然后firewall-cmd --reload);若SELinux开启,可临时设置为“Permissive”模式(setenforce 0)测试是否解决问题,或永久修改SELinux策略(semanage port -a -t http_port_t -p tcp 8080)。若使用Spring Boot内置Tomcat运行JSP,其默认缓存目录为/tmp(Linux系统的临时目录),而tmpwatch服务(或systemd-tmpfiles-clean)会定期清理/tmp中超过10天未访问的文件,导致JSP缓存被删除,无法访问。常见表现包括:JSP页面首次访问正常,但一段时间后(如超过10天)出现“404 Not Found”或“500 Internal Server Error”。
application.properties或application.yml中是否配置了server.tomcat.basedir(默认为空,使用/tmp);查看/tmp目录下是否有应用的缓存文件夹(如spring-boot-xxxxx),并检查其修改时间。/tmp目录(如/home/service_tmp),例如:server:
tomcat:
basedir: /home/service_tmp
并确保该目录存在且具有正确权限(chown -R tomcat:tomcat /home/service_tmp)。JSP文件依赖Java环境,若CentOS上安装的Java版本与JSP应用所需的版本不兼容(如应用需要Java 8,但系统安装了Java 11),会导致JSP无法编译或运行。常见表现包括:Tomcat启动时出现“Unsupported major.minor version”错误,或JSP页面返回“500 Internal Server Error”。
java -version命令检查系统默认Java版本;查看应用的pom.xml(Maven项目)或build.gradle(Gradle项目)中指定的Java版本(如<java.version>1.8</java.version>)。yum install -y java-1.8.0-openjdk),并通过alternatives命令切换默认Java版本(如alternatives --config java),或在应用启动脚本中指定Java路径(如export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk)。若JSP项目未正确部署到Tomcat的webapps目录,或WAR文件损坏,会导致JSP无法访问。常见表现包括:访问http://服务器IP:8080/应用名提示“404 Not Found”,或Tomcat日志中出现“Deployment failure”错误。
webapps目录下是否有应用的WAR文件(如your-app.war)或解压后的文件夹(如your-app);尝试重新部署WAR文件(删除原有文件,复制新的WAR文件到webapps目录)。mvn package或gradle build),复制到Tomcat的webapps目录下,等待Tomcat自动解压部署;若部署失败,查看Tomcat日志定位具体原因(如缺少依赖库)。