如何解决Ubuntu Tomcat部署问题
导读:Ubuntu 上 Tomcat 部署问题排查与解决 一 快速定位流程 确认运行状态与端口:查看进程与监听端口,确认 Tomcat 是否真正在监听目标端口(默认 8080)。示例:ps -ef | grep tomcat、netstat -...
Ubuntu 上 Tomcat 部署问题排查与解决
一 快速定位流程
- 确认运行状态与端口:查看进程与监听端口,确认 Tomcat 是否真正在监听目标端口(默认 8080)。示例:
ps -ef | grep tomcat、netstat -anp | grep 8080或lsof -i:8080。若端口未监听,多半未启动或启动失败。 - 查看关键日志:第一时间检查 ${ CATALINA_HOME} /logs/catalina.out 与 catalina.log,从时间戳和异常栈定位是端口冲突、JDK 问题还是配置错误。
- 校验 Java 环境:执行
java -version、which java确认已安装 JDK 且版本与 Tomcat 兼容;必要时在用户环境配置 JAVA_HOME。 - 外网访问链路:本机能访问而外网不能时,依次排查云厂商安全组/防火墙是否放行对应端口、以及服务器本机防火墙策略。
以上步骤覆盖了最常见的启动失败、端口占用与外网不可达三类根因。
二 常见故障与对应处理
- 端口被占用(Bind failed / Address already in use)
- 查找占用者:
lsof -i:8080或netstat -anp | grep 8080;2) 结束进程:kill < PID>;3) 若无法结束或属系统进程,修改 conf/server.xml 中的 Connector port(如改为 8081);4) 重启 Tomcat 并复核监听端口。
- 查找占用者:
- JDK 未安装、环境变量错误或版本不匹配
java -version确认安装;2) 手动安装 JDK 时,在 ~/.bashrc 与 ~/.profile 中设置JAVA_HOME、PATH(示例:export JAVA_HOME=/usr/local/jdk/jdk1.8.0_151);3) 使用发行版 OpenJDK 时避免与手动配置冲突;4) 确认 Tomcat 与 JDK 版本匹配。
- 本机可访问、外网访问失败
- 云服务器需在控制台安全组放行对应端口(如 8080);2) 若改用了非默认端口,安全组与 server.xml 必须同步修改;3) 检查服务器防火墙(如 firewalld:
firewall-cmd --zone=public --add-port=8080/tcp --permanent & & firewall-cmd --reload)。
- 云服务器需在控制台安全组放行对应端口(如 8080);2) 若改用了非默认端口,安全组与 server.xml 必须同步修改;3) 检查服务器防火墙(如 firewalld:
- 启动脚本无执行权限或缺少 logs 目录
- 给脚本授权:
chmod u+x /path/to/tomcat/bin/*.sh;2) 若报logs/catalina.out: No such file or directory,手动创建目录:mkdir -p /path/to/tomcat/logs。
- 给脚本授权:
- 权限不足导致日志/目录不可写
- 调整目录属主属组:
sudo chown -R tomcat:tomcat /path/to/tomcat;2) 按需设置权限:sudo chmod -R 755 /path/to/tomcat;3) 必要时在catalina.sh中设置umask 0022以放宽新建日志文件权限。
- 调整目录属主属组:
- 使用 80 端口失败(权限不足)
- Linux 上 1024 以下端口需 root 才能绑定;2) 不建议以 root 运行 Tomcat,可通过端口转发(如
iptables/nftables将 80→8080)或前置 Nginx/Apache 反向代理来对外提供 80/443。
以上处理覆盖了部署中最常见的报错场景与修复路径。
- Linux 上 1024 以下端口需 root 才能绑定;2) 不建议以 root 运行 Tomcat,可通过端口转发(如
三 标准安装与部署步骤
- 安装方式一(系统包管理器,推荐)
- 更新并安装:
sudo apt update & & sudo apt install tomcat9;2) 检查服务:sudo systemctl status tomcat9;3) 管理命令:sudo systemctl start|stop|restart tomcat9;4) 应用默认目录 /var/lib/tomcat9/webapps,日志 /var/log/tomcat9/。
- 更新并安装:
- 安装方式二(官方二进制包,便于多版本并存)
- 下载并解压:
curl -O https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.53/bin/apache-tomcat-9.0.53.tar.gz & & tar -zxvf apache-tomcat-9.0.53.tar.gz -C /opt;2) 配置 JAVA_HOME(在bin/setenv.sh或catalina.sh中导出);3) 启动:/opt/apache-tomcat-9.0.53/bin/startup.sh;4) 访问测试:http://服务器IP:8080。
- 下载并解压:
- 部署示例应用
- 在 webapps 下新建目录(如 myapp),放入 index.jsp;2) 重启 Tomcat;3) 访问
http://服务器IP:8080/myapp/index.jsp。
以上两种安装方式适用于不同场景,包管理器便于运维,二进制包便于版本与目录可控。
- 在 webapps 下新建目录(如 myapp),放入 index.jsp;2) 重启 Tomcat;3) 访问
四 安全与权限建议
- 运行用户与目录权限:创建专用系统用户 tomcat,将安装目录属主设为
tomcat:tomcat,仅对 logs、work、temp、webapps 等目录授予写权限,其他目录只读,遵循最小权限原则。 - 日志与 umask:如需让运维人员读取日志,可在
catalina.sh设置umask 0022,或将日志文件权限调整为 644;避免过宽权限带来安全风险。 - 端口与访问控制:对外仅暴露必要端口(如 8080/8443/80/443),云侧通过安全组白名单限制来源 IP,服务器本机防火墙按需放行。
- 代理与加固:对外建议使用 Nginx/Apache 终止 TLS 并反向代理到 8080,同时开启访问日志、限制请求方法、禁用管理接口对外暴露。
以上做法在保障可用性的同时,降低因权限与网络暴露面导致的安全风险。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何解决Ubuntu Tomcat部署问题
本文地址: https://pptw.com/jishu/772853.html
