在 Ubuntu 20.04 上安装 Apache Tomcat 最稳妥的方式是结合 OpenJDK 和官方二进制包,全程无需编译,适合追求稳定性的生产环境部署。
Tomcat 作为 Java 生态中应用最广泛的 Web 服务器和 Servlet 容器,其核心优势在于轻量级与高兼容性,对于许多开发者而言,如何在 Ubuntu 20.04 这一长期支持版本上构建可靠的服务环境,往往是项目上线前的第一道门槛,许多初学者容易陷入直接使用 apt 安装旧版本 Tomcat 的误区,导致功能缺失或安全漏洞,掌握手动安装最新稳定版的方法,不仅是技术能力的体现,更是保障业务连续性的关键。
环境准备与 Java 依赖配置
Tomcat 的运行完全依赖于 Java 环境,因此第一步是确保系统具备正确的 JDK 版本,Ubuntu 20.04 默认仓库中的 OpenJDK 版本可能较老,建议手动安装 OpenJDK 11 或 17,以匹配 Tomcat 9 或 10 的需求。
安装 OpenJDK 运行时环境
打开终端,首先更新软件包索引,确保获取最新的软件源信息,随后,执行安装命令,业内专家指出,选择 OpenJDK 而非 Oracle JDK 能显著降低企业级部署的授权复杂度。
- 更新系统包列表:
sudo apt update - 安装 OpenJDK 11:
sudo apt install openjdk-11-jdk
安装完成后,通过 java -version 验证版本,若输出包含 “OpenJDK 11.x.x”,则说明环境就绪,Tomcat 即可识别 Java 路径,无需额外配置复杂的 CLASSPATH 环境变量。
创建专用系统用户
出于安全考虑,严禁使用 root 用户运行 Tomcat 服务,创建一个专用的低权限用户是最佳实践,这能有效限制潜在攻击者对系统文件的访问范围。
创建 tomcat 用户与组
执行以下命令创建名为 tomcat 的系统用户,并指定其主目录为 /opt/tomcat。
sudo groupadd tomcatsudo useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat
这里的 -s /bin/false 参数确保该用户无法登录系统,仅用于运行服务,极大提升了系统安全性。
下载与部署 Tomcat 二进制包
相比于使用 apt 安装的版本,直接从 Apache 官网下载二进制包能确保你获得最新的安全补丁和功能特性,这是许多资深运维人员在处理 Ubuntu 20.04 安装 Tomcat 最新稳定版 时的首选方案。
获取安装包
访问 Apache Tomcat 官方下载页面,找到最新的稳定版本(Tomcat 9.0.x),使用 wget 命令将压缩包下载到 /tmp 目录。
- 进入临时目录:
cd /tmp - 下载压缩包:
sudo wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.83/bin/apache-tomcat-9.0.83.tar.gz
注意:版本号需根据实际最新情况调整,下载完成后,验证文件完整性,确保未损坏。
解压与权限设置
将压缩包解压至 /opt 目录,这是 Linux 系统中存放可选软件的标准位置。
移动与授权
- 解压:
sudo tar xzvf apache-tomcat-9.tar.gz -C /opt/tomcat --strip-components=1 - 赋予 tomcat 用户所有权:
sudo chown -R tomcat:tomcat /opt/tomcat - 赋予执行权限:
sudo chmod -R 750 /opt/tomcat - 重载配置:
sudo systemctl daemon-reload - 启动服务:
sudo systemctl start tomcat - 设置开机自启:
sudo systemctl enable tomcat sudo ufw allow 8080/tcpsudo ufw reload
这一步至关重要,它确保了只有 tomcat 用户及其所属组才能读取和修改配置文件,防止其他用户篡改服务行为。
配置 Systemd 服务管理
为了让 Tomcat 能够随系统启动并方便管理,需要创建 Systemd 服务单元文件,这是实现 Ubuntu 20.04 Tomcat 开机自启配置 的核心步骤,也是区分新手与专业运维的分水岭。
编写服务文件
创建一个新的服务文件 /etc/systemd/system/tomcat.service。
服务文件内容详解
使用文本编辑器打开文件,填入以下内容,这里需要明确 JAVA_HOME 路径,确保 Tomcat 能找到 Java 环境。
[Unit] Description=Apache Tomcat Web Application Container After=network.target[Service]Type=forking
User=tomcatGroup=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"Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC"Environment="JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom"
ExecStart=/opt/tomcat/bin/startup.shExecStop=/opt/tomcat/bin/shutdown.sh
[Install]WantedBy=multi-user.target
CATALINA_OPTS 设置了内存限制,防止 Tomcat 占用过多物理内存导致系统崩溃。-Xms512M 表示初始堆内存为 512MB,-Xmx1024M 表示最大堆内存为 1GB,对于大多数中小型应用,这一配置足以平衡性能与资源消耗。
启用并启动服务
保存文件后,重新加载 Systemd 守护进程,使新配置生效。
通过 sudo systemctl status tomcat 检查服务状态,若显示 “active (running)”,则说明部署成功。
防火墙与访问测试
Ubuntu 20.04 默认启用 UFW 防火墙,若不开放端口,外部将无法访问 Tomcat。
开放 8080 端口
Tomcat 默认监听 8080 端口,执行以下命令允许 HTTP 流量通过。
验证部署
在浏览器中输入 http://你的服务器IP:8080,若看到 Apache Tomcat 的默认欢迎页面,说明安装完全成功,你可以尝试部署一个简单的 WAR 包,验证应用加载能力。
常见问题排查与优化建议
在实际操作中,可能会遇到一些典型问题,页面加载缓慢或内存溢出。
内存溢出处理
若应用复杂,默认 1GB 内存可能不足,可通过修改 tomcat.service 中的 CATALINA_OPTS 增加 -Xmx 值,据行业共识认为,合理调整 JVM 参数是提升 Tomcat 稳定性的最有效手段之一。
日志查看
Tomcat 的日志位于 /opt/tomcat/logs/ 目录下,若服务启动失败,优先查看 catalina.out 文件,其中记录了详细的错误堆栈信息,能帮助快速定位问题。
Q&A:Ubuntu 20.04 安装 Tomcat 的常见疑问
Ubuntu 20.04 安装 Tomcat 与 CentOS 有何区别?
主要区别在于包管理器和初始化系统,Ubuntu 使用 apt 和 Systemd,而 CentOS 使用 yum/dnf 和 Systemd,虽然服务管理命令相似,但 Ubuntu 的默认防火墙 UFW 比 CentOS 的 firewalld 更易于配置简单规则,Ubuntu 的软件源更新频率更高,获取最新 JDK 和 Tomcat 版本更为便捷。
Tomcat 8.5 和 9.0 在 Ubuntu 20.04 上哪个更推荐?
Tomcat 9.0 是当前的主流稳定版,支持最新的 Java EE 规范和更好的性能优化,Tomcat 8.5 已进入维护模式,仅接收安全补丁,除非有遗留应用强制要求,否则应优先选择 Tomcat 9.0,两者在 Ubuntu 20.04 上的安装步骤完全一致,区别仅在于下载的版本号。
如何修改 Tomcat 的默认端口?
编辑 /opt/tomcat/conf/server.xml 文件,找到 <Connector port="8080" protocol="HTTP/1.1" .../> 行,将 8080 修改为目标端口,如 80,保存后重启 Tomcat 服务即可生效,若修改为非特权端口(大于 1024),无需 root 权限;若修改为 80 或 443,需确保 tomcat 用户有相应权限或使用反向代理。
首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/475443.html



