Tomcat 怎么部署?Linux 环境安装与验证步骤
在 Linux 服务器上部署 Tomcat,核心流程是:先安装匹配版本的 JDK,再解压 Tomcat 压缩包,修改必要的端口配置,启动服务并用浏览器访问默认页面验证。
整个过程不需要编译源码,但需要确认 Java 环境变量和防火墙规则,否则 Tomcat 可能启动失败或外部无法访问。
部署前要确认的两件事
Tomcat 是 Java Web 容器,运行前必须有 JDK。
先检查服务器上是否已经安装 Java:
java -version
如果输出类似 openjdk version "1.8.0_xxx" 或更高版本,说明 JDK 已存在。
如果提示 command not found,需要先安装 JDK。
以 CentOS 7 为例:
sudo yum install -y java-1.8.0-openjdk-devel
Ubuntu 或 Debian 可以使用:
sudo apt update
sudo apt install -y openjdk-8-jdk
安装完成后再次执行 java -version,确认能正常输出版本号。
同时检查 JAVA_HOME 是否设置:
echo $JAVA_HOME
如果没有输出,可以在 /etc/profile 末尾追加 JDK 路径,然后执行 source /etc/profile 生效。
路径可以用 readlink -f $(which java) 找到,去掉末尾的 /bin/java 即为 JDK 目录。
Tomcat 版本需要和 JDK 版本匹配。
较新的 Tomcat 9 通常要求 JDK 8 及以上,Tomcat 10 要求 JDK 8 及以上但包名已改为 jakarta.*,老项目如果依赖 javax.* 包,应优先选择 Tomcat 9 或更早版本。
下载前先确认项目使用的 Servlet 规范版本,避免部署后出现类找不到的错误。
下载并解压 Tomcat
从 Apache Tomcat 官网下载对应版本的二进制压缩包,上传到服务器,或者直接在服务器上用 wget 下载。
以下以 Tomcat 9 为例,具体版本号请以官网当前稳定版为准:
cd /usr/local
sudo wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.x/bin/apache-tomcat-9.0.x.tar.gz
sudo tar -zxvf apache-tomcat-9.0.x.tar.gz
sudo mv apache-tomcat-9.0.x tomcat9
解压后目录结构大致如下:
bin/:启动和停止脚本,startup.sh、shutdown.sh在这里conf/:配置文件,server.xml控制端口和连接器webapps/:默认应用目录,把 WAR 包或静态文件放在这里logs/:日志目录,启动失败时优先查看catalina.out
建议创建一个专用用户运行 Tomcat,不要直接用 root 启动。
例如:
sudo useradd -r -s /sbin/nologin tomcat
sudo chown -R tomcat:tomcat /usr/local/tomcat9
修改端口并启动服务
Tomcat 默认监听 8080 端口。
如果服务器上已有其他程序占用 8080,可以修改 conf/server.xml 中的 Connector 配置:
把 port 改成空闲端口,例如 8081,保存后重启生效。
修改前可以用 ss -tlnp | grep 8080 确认端口占用情况。
启动 Tomcat:
cd /usr/local/tomcat9/bin
sudo -u tomcat ./startup.sh
如果看到 Tomcat started 表示脚本执行完成,但不代表服务一定启动成功。
接着检查进程和日志:
ps -ef | grep tomcat
tail -n 100 /usr/local/tomcat9/logs/catalina.out
日志中出现 Server startup in xxx ms 通常表示启动完成。
如果启动脚本一闪而过,可以改用 catalina.sh run 前台启动,直接查看报错输出。
放行端口并从浏览器验证
Tomcat 启动后,服务器本机可以用 curl 测试:
curl -I http://127.0.0.1:8080
返回 HTTP/1.1 200 说明 Tomcat 本身正常。
如果本机访问正常但外部浏览器打不开,需要检查两层:系统防火墙和云服务器安全组。
以 firewalld 为例:
sudo firewall-cmd --add-port=8080/tcp --permanent
sudo firewall-cmd --reload
使用 ufw 的系统执行:
sudo ufw allow 8080/tcp
云服务器还需要在控制台的安全组中放行 8080 端口的入方向规则,来源可以按需限制为管理 IP。
两处都配置后,在浏览器访问 http://服务器公网IP:8080,能看到 Tomcat 默认首页即部署成功。
常见启动失败与访问异常
Tomcat 部署后最常见的问题集中在三类:
- 启动脚本报
JAVA_HOME或JRE_HOME未设置:说明环境变量没有传给启动脚本。可以在bin/setenv.sh中显式写入export JAVA_HOME=/path/to/jdk,再启动。 - 端口被占用导致启动失败:日志中会出现
Address already in use。用ss -tlnp | grep 端口号找到占用进程,停止或改用其他端口。 - 本机 curl 正常但外网打不开:优先检查安全组和系统防火墙,其次确认访问地址是否用了正确的公网 IP 和端口。
另外,如果部署的是自己的 WAR 包,访问路径通常是 http://IP:8080/包名,而不是根路径。
需要根路径访问时,可以把 WAR 包重命名为 ROOT.war 并删除原有的 webapps/ROOT 目录,重启后生效。
操作前建议备份原目录,避免默认页面丢失后无法对照。
部署完成后,建议把 Tomcat 设置为 systemd 服务或使用 catalina.sh 管理启停,并定期清理 logs 目录,避免日志占满磁盘。
验证时不要只看启动脚本的输出,以日志中的启动完成记录和实际 HTTP 访问结果为准。