linux部署tomcat核心是jdk先到位、tomcat后解压、权限与路径对齐;需安装完整jdk(非jre),显式配置java_home至setenv.sh,用非root用户启动并开放防火墙端口。

Linux 部署 Tomcat 的核心是“JDK 先到位、Tomcat 后解压、权限与路径要对齐”。它不是传统意义上的安装程序,而是解压即用的轻量级容器,但每一步配置不到位,启动就会静默失败或报 Cannot find ./bin/setclasspath.sh 这类错误。
确认并安装匹配的 JDK
Tomcat 依赖完整 JDK(含 javac 和 tools.jar),仅装 JRE 不行。推荐 OpenJDK 17 或 11,避免使用系统包管理器安装的精简版。
- 运行
java -version和javac -version,输出版本号必须一致且 ≥ 11 - 查 JDK 实际路径:
readlink -f $(which java) | sed 's:/jre/bin/java::' - 若未安装,Debian/Ubuntu 执行:
sudo apt update && sudo apt install openjdk-17-jdk -y - 验证环境变量:
echo $JAVA_HOME应输出类似/usr/lib/jvm/java-17-openjdk-amd64的完整路径
下载、解压并规范部署 Tomcat
不建议用 apt install tomcat,它会把文件分散在多处,不利于维护和调试。应从官网下载二进制 tar.gz 包,手动部署到标准路径。
Java JDK 25 来自 OpenJDK 官方归档,版本为 JDK 25,本条下载地址已指向官方 Windows x64 zip 安装包直链,适合调试旧项目或兼容旧版 Java 运行环境。
- 进入临时目录:
cd /tmp - 下载最新稳定版(如 Tomcat 10.1.x):
wget https://dlcdn.apache.org/tomcat/tomcat-10/v10.1.33/bin/apache-tomcat-10.1.33.tar.gz - 校验完整性(推荐):
wget https://dlcdn.apache.org/tomcat/tomcat-10/v10.1.33/bin/apache-tomcat-10.1.33.tar.gz.sha512,再执行sha512sum -c apache-tomcat-10.1.33.tar.gz.sha512 - 创建安装目录并解压:
sudo mkdir -p /opt/tomcat && sudo tar -xzf apache-tomcat-10.1.33.tar.gz -C /opt/tomcat --strip-components=1 - 设置属主(假设普通用户为
appuser):sudo chown -R appuser:appuser /opt/tomcat
配置 JAVA_HOME 并赋予脚本权限
Tomcat 启动脚本需要明确知道 JDK 在哪。不能只靠系统 PATH,必须显式声明 JAVA_HOME,否则会找不到类或启动失败。
- 切换到 Tomcat 的 bin 目录:
cd /opt/tomcat/bin - 创建
setenv.sh:sudo nano setenv.sh - 写入内容(按你实际 JDK 路径修改):
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 - 添加执行权限:
sudo chmod +x setenv.sh *.sh - 检查是否生效:运行
./catalina.sh version,应能正常输出 Tomcat 和 JVM 版本信息
启动验证与基础安全加固
启动前确保端口可用、用户权限合理、管理界面可访问——这三步做完,才算真正跑起来。
- 启动服务:
sudo -u appuser /opt/tomcat/bin/startup.sh(用指定用户运行,不推荐 root) - 查看日志确认启动成功:
tail -f /opt/tomcat/logs/catalina.out,出现Server startup in [xxx] ms即成功 - 开放防火墙端口(如用 ufw):
sudo ufw allow 8080;如用 firewalld:sudo firewall-cmd --permanent --add-port=8080/tcp && sudo firewall-cmd --reload - 启用 Manager 页面:编辑
/opt/tomcat/conf/tomcat-users.xml,在<tomcat-users></tomcat-users>内添加<user username="admin" password="secret123" roles="manager-gui,admin-gui"></user>
同时注释掉webapps/manager/META-INF/context.xml中的allow行,否则本地也 403
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










