Tomcat安装配置的核心只有四步:装好JDK,设对JAVA_HOME,解压Tomcat包,改好端口和启动脚本,Linux生产环境优先用systemd托管,Windows开发环境用startup.bat或安装服务即可跑起来。
Tomcat怎么安装配置环境变量?先理顺Java依赖
Tomcat本身是纯Java写的,所以安装Tomcat之前必须先装JDK,很多新手在环境变量这步卡住,不是因为步骤难,而是JAVA_HOME路径写错,或者系统里同时存在多个Java版本导致冲突。
- Windows环境变量配置路径:此电脑属性-高级系统设置-环境变量
- 新建
JAVA_HOME,值指向JDK安装目录,例如C:\Program Files\Java\jdk-11.0.x - 新建
CATALINA_HOME,值指向Tomcat解压目录,例如D:\apache-tomcat-9.0.x - 编辑
Path,追加%JAVA_HOME%\bin和%CATALINA_HOME%\bin - Linux下在
/etc/profile或~/.bashrc追加:
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
export CATALINA_HOME=/opt/tomcat
export PATH=$JAVA_HOME/bin:$CATALINA_HOME/bin:$PATH
保存后执行source /etc/profile或source ~/.bashrc让其生效。
验证环境变量是否正确,直接跑三条命令:
java -versionjavac -versioncatalina.sh version
如果前两条都能正常显示版本,第三条能看到Tomcat版本信息,说明JDK和Tomcat的环境变量已经通了。
业内专家指出,多数Tomcat启动失败并不是安装包本身有问题,而是JDK版本与Tomcat大版本不匹配,例如Tomcat 10要求Java 11及以上,Tomcat 9支持Java 8到Java 11,装错版本会让启动脚本报出看不懂的异常。
Linux服务器Tomcat安装配置详细步骤
安装JDK并验证版本
Ubuntu或Debian系统直接执行:
sudo apt update
sudo apt install openjdk-11-jdk -y
CentOS、Rocky Linux或Alibaba Cloud Linux执行:
sudo dnf install java-11-openjdk-devel -y
安装完成后运行java -version,确认输出里包含11或你需要的Java大版本。

下载解压Tomcat二进制包
根据Apache Tomcat官方文档,生产环境推荐使用二进制tar.gz包直接部署,不建议用系统包管理工具安装,因为版本更新慢且目录结构不同。
curl -O https://downloads.apache.org/tomcat/tomcat-9/v9.0.x/bin/apache-tomcat-9.0.x.tar.gz
sudo tar -xzf apache-tomcat-9.0.x.tar.gz -C /opt
sudo ln -s /opt/apache-tomcat-9.0.x /opt/tomcat
创建软链接的好处是以后升级版本时,只需要把新版本解压到/opt下,再重做一个软链接指向新目录,不用改环境变量。
配置systemd服务与防火墙端口
创建/etc/systemd/system/tomcat.service如下:
[Unit]
Description=Apache Tomcat
After=network.target
[Service]
Type=forking
User=tomcat
Group=tomcat
Environment=JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
Environment=CATALINA_PID=/opt/tomcat/temp/tomcat.pid
Environment=CATALINA_HOME=/opt/tomcat
Environment=CATALINA_BASE=/opt/tomcat
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh
Restart=on-failure
[Install]
WantedBy=multi-user.target
执行以下命令启用并启动:
sudo systemctl daemon-reload
sudo systemctl enable tomcat --now
放行8080端口:
- 使用firewalld:
sudo firewall-cmd --permanent --add-port=8080/tcp && sudo firewall-cmd --reload - 使用ufw:
sudo ufw allow 8080/tcp
查看启动日志用tail -f /opt/tomcat/logs/catalina.out,如果看到Server startup in字样,说明Tomcat已经在Linux服务器上正常跑起来。
简米云服务器安装Tomcat收费吗?开源协议说明
直接回答:Tomcat本身不收费,它采用Apache License 2.0开源协议,个人学习、企业内部部署、商业项目使用都不需要向任何机构支付软件授权费。
真正产生费用的是云服务器资源,
- 云服务器实例规格费用
- 公网带宽或流量费用
- 数据盘费用
- 快照和负载均衡等附加产品费用
在简米云服务器安装Tomcat,安装过程不会额外产生软件费用,新手常见的访问不通问题,多数情况下不是云厂商限制,而是安全组没有放行8080端口,不同地域节点如华东1、华北2的安装方法完全一致,唯一区别是网络延迟和可用区资源。

所以无论是简米云还是本地虚拟机,Tomcat安装配置教程里软件本身永远免费,成本只来自服务器硬件和网络资源。
Tomcat和Nginx的区别:一个管Java应用,一个管静态流量
两者经常被放在一起比较,但定位完全不同,Tomcat是Java Servlet容器,负责执行Java程序、处理JSP和Servlet,Nginx是HTTP反向代理和静态资源服务器,自身不解析Java。
| 对比维度 | Tomcat | Nginx |
|---|---|---|
| 核心定位 | Java Servlet容器 | 反向代理、静态资源服务器 |
| 动态处理 | 原生支持JSP、Servlet、WebSocket | 不直接处理Java,需代理到Tomcat |
| 静态资源性能 | 一般,占用JVM内存 | 高并发下表现好,内存占用低 |
| 运行依赖 | 依赖JDK | 纯C编写,不依赖Java |
| 典型场景 | 运行Spring Boot、WAR包应用 | 前端静态页、HTTPS终止、负载均衡 |
行业共识认为,生产环境多数情况下不会让Tomcat直接暴露在公网,而是在前面挂一台Nginx,Nginx负责接收浏览器请求、处理静态文件、做HTTPS加密,再把动态请求转发给Tomcat,这样既能发挥Nginx的并发优势,又能让Tomcat专注处理业务逻辑。
所以Tomcat安装配置完成后,如果要正式上线,通常还会再加一层Nginx反向代理。
Tomcat安装后基础配置与启动优化
修改端口和连接器参数
conf/server.xml里的Connector标签控制HTTP端口和连接参数:
port="8080"可以根据需要改成80或其他未占用端口protocol="org.apache.coyote.http11.Http11NioProtocol"开启NIO模式URIEncoding="UTF-8"必须加上,否则中文请求参数容易乱码maxThreads表示最大线程数,默认值多数情况下够用,不建议盲目调大acceptCount表示最大等待队列长度,高并发时可适当调大

JVM内存参数
在bin/setenv.sh中设置CATALINA_OPTS,Linux示例:
CATALINA_OPTS="-Xms512m -Xmx1024m -XX:+UseG1GC"
Windows在bin/setenv.bat中写类似的set CATALINA_OPTS=,如果项目运行中频繁出现OutOfMemoryError,优先调大-Xmx,但不要超过物理内存的较大比例,否则系统会频繁交换内存导致整个服务器变慢。
目录权限与安全基线
- 不要用root用户直接启动Tomcat,建立专用系统用户并将Tomcat目录属组划归该用户
- 删除
webapps下的默认演示应用docs、examples,如果没有使用manager和host-manager也应移除或限制访问 - 生产环境保持最低权限运行,避免Tomcat进程拥有修改自身目录的过高权限
Tomcat安装配置本质上不复杂,把JDK、环境变量、启动脚本、端口权限这四个环节理清,基本就能跑起来,后续优化都是围绕生产环境的稳定性展开,而不是安装环节本身。
Tomcat安装配置常见问题Q&A
Tomcat安装配置后浏览器访问8080打不开怎么办?
先看Tomcat是否启动成功,再看防火墙或云安全组是否放行8080,最后检查server.xml里Connector的address属性是否被写成了0.0.1,多数情况下按这个顺序排查三步就能定位问题。
Linux服务器上Tomcat怎么设置开机自启?
使用systemd单元文件托管Tomcat,执行systemctl enable tomcat即可,如果因为特殊原因不能使用systemd,也可以把startup.sh写入rc.local,但生产环境不推荐,因为系统重启后无法自动处理进程异常退出。
Tomcat和Nginx哪个更适合部署Spring Boot项目?
Spring Boot应用本身内嵌了Tomcat,多数情况下直接以可执行Jar包运行即可,不需要额外安装Tomcat,如果项目需要负载均衡、HTTPS终止或托管前端静态资源,再在前面挂一台Nginx是更合适的做法,两者不是二选一,而是组合使用。
