在Ubuntu 20.04服务器上部署Apache Tomcat,核心步骤是安装OpenJDK、下载Tomcat二进制包、配置systemd服务并放行防火墙端口,通常只需30分钟即可完成从环境搭建到应用部署的全过程。
Tomcat作为Java Web应用的事实标准服务器,其稳定性与灵活性深受开发者信赖,对于许多初次接触Linux服务器运维的工程师来说,如何在Ubuntu 20.04这一主流操作系统上从零搭建Tomcat环境,往往是一个既基础又关键的技能点,本文将通过实操视角,拆解安装、配置及优化的完整链路,确保你能在真实生产场景中快速落地。
Ubuntu 20.04安装Tomcat前环境准备
在正式安装Tomcat之前,必须确保Java运行环境(JRE)或Java开发工具包(JDK)已就绪,Tomcat本身是一个Java程序,它依赖于JVM(Java虚拟机)来执行字节码,Ubuntu 20.04默认的软件源中包含了OpenJDK,这是最稳定且免费的选择。
验证Java环境状态
通过终端检查系统是否已安装Java,输入以下命令:
java -version
如果系统返回OpenJDK版本信息,说明环境已就绪,若未安装,需执行更新源并安装OpenJDK 11或17(推荐LTS版本):
sudo apt update sudo apt install openjdk-11-jdk
业内专家指出,选择JDK版本时应与你的Java应用程序编译版本保持一致,以避免运行时兼容性问题,使用Java 8编译的应用,最好运行在JDK 8或11上,虽然高版本JDK通常向下兼容,但特定API的行为差异可能导致潜在风险。
创建专用系统用户
出于安全考虑,不建议使用root用户运行Tomcat服务,创建一个名为tomcat的系统用户和组,专门用于运行该服务。
sudo groupadd tomcat sudo useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat
这里使用/bin/false作为shell,意味着该用户无法直接登录系统,从而降低了安全风险。

/opt/tomcat将作为Tomcat的安装目录。
下载与解压Tomcat二进制包
Tomcat的官方下载页面提供了最新的稳定版,截至2026年,Tomcat 9和Tomcat 10是主流选择,Tomcat 9支持Servlet 4.0和JSP 2.3,而Tomcat 10则全面转向Jakarta EE规范,包名从javax变更为jakarta,如果你的旧应用依赖javax.servlet,请选择Tomcat 9;如果是新项目,建议直接使用Tomcat 10以符合最新行业标准。
获取安装包
进入/tmp目录下载最新版本,以Tomcat 9为例:
cd /tmp wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.x/bin/apache-tomcat-9.0.x.tar.gz
请将0.x替换为实际版本号,下载完成后,将文件移动到/opt目录并解压:
sudo mv apache-tomcat-9.0.x.tar.gz /opt/ sudo tar -xf /opt/apache-tomcat-9.0.x.tar.gz -C /opt/tomcat --strip-components=1
设置权限
确保tomcat用户对安装目录拥有完全控制权:
sudo chown -R tomcat:tomcat /opt/tomcat sudo chmod -R 750 /opt/tomcat
这一步至关重要,许多新手在此处忽略权限设置,导致后续启动服务时出现“Permission denied”错误。
配置Systemd服务实现开机自启
为了让Tomcat像其他系统服务一样被管理,我们需要创建systemd服务单元文件,这比直接使用startup.sh脚本更稳定,且支持开机自启和日志管理。
创建服务文件
在/etc/systemd/system/目录下创建tomcat.service文件:
sudo nano /etc/systemd/system/tomcat.service
注意根据实际安装路径调整CATALINA_HOME:
[Unit] Description=Apache Tomcat Web Application Container 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" Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC" ExecStart=/opt/tomcat/bin/startup.sh ExecStop=/opt/tomcat/bin/shutdown.sh [Install] WantedBy=multi-user.target
这里设置了-Xmx1024M,即最大堆内存为1GB,对于小型应用,这个配置足够;若部署大型应用,需根据服务器物理内存调整-Xmx参数。
启动并验证服务
重新加载systemd配置,启动Tomcat并设置开机自启:
sudo systemctl daemon-reload sudo systemctl start tomcat sudo systemctl enable tomcat sudo systemctl status tomcat
若状态显示为active (running),说明服务已正常启动。
防火墙配置与外部访问测试
Ubuntu默认使用UFW(Uncomplicated Firewall)管理防火墙,Tomcat默认监听8080端口,需放行该端口以允许外部访问。
放行端口
sudo ufw allow 8080/tcp sudo ufw reload
访问测试
在浏览器中输入http://你的服务器IP:8080,如果看到Tomcat的默认欢迎页面,说明安装成功,你可以尝试部署一个简单的WAR包或静态HTML文件到/opt/tomcat/webapps/目录下,验证应用加载情况。
对于关注Ubuntu 20.04安装Tomcat详细步骤的用户,以上流程已覆盖核心环节,若需进一步配置SSL加密或反向代理,可结合Nginx使用,但这属于进阶优化范畴。
常见故障排查与优化建议
在实际运维中,可能会遇到一些常见问题,以下是基于行业共识认为的高频问题及解决方案。
服务无法启动
检查日志是排查问题的第一步,Tomcat的日志位于/opt/tomcat/logs/目录下,特别是catalina.out文件,若看到Java版本错误,请检查

JAVA_HOME路径是否正确。
内存溢出
若应用复杂,可能出现OutOfMemoryError,此时需调整CATALINA_OPTS中的-Xmx参数,据工信部数据,近年来Java应用对内存的需求呈上升趋势,建议根据实际监控数据动态调整,而非盲目增加。
安全加固
默认安装的Tomcat包含管理界面(Manager App),在生产环境中应禁用或限制访问,编辑/opt/tomcat/conf/tomcat-users.xml,移除默认的manager-gui角色,或设置强密码并限制IP访问。
Ubuntu 20.04安装Tomcat常见问题解答
Ubuntu 20.04安装Tomcat时如何选择合适的JDK版本?
选择JDK版本应主要依据你的Java应用程序编译版本,若应用使用Java 8编译,建议使用OpenJDK 11,它在长期支持(LTS)和兼容性之间取得了良好平衡,若应用已迁移至Jakarta EE规范(如使用jakarta.servlet而非javax.servlet),则必须搭配Tomcat 10或11,并相应使用JDK 11或更高版本,避免混用不兼容的JDK与Tomcat版本,否则会导致类加载失败。
Ubuntu 20.04安装Tomcat后访问8080端口超时怎么办?
首先确认Tomcat服务状态,执行sudo systemctl status tomcat查看是否运行,检查UFW防火墙规则,确保8080端口已放行,若防火墙正常,检查Tomcat配置文件server.xml中的Connector端口是否被修改,查看catalina.out日志,确认是否有绑定端口失败的错误,多数情况下,防火墙未放行或服务未启动是主要原因。
Ubuntu 20.04安装Tomcat与Nginx反向代理相比有何优劣?
直接访问Tomcat 8080端口配置简单,适合测试环境或内部应用,但Nginx作为反向代理,能更好地处理静态资源、SSL终止和负载均衡,减轻Tomcat负担,Nginx配置稍复杂,需额外安装和配置upstream模块,对于高并发生产环境,业内普遍认为Nginx+Tomcat架构更为稳健,能提供更高的可用性和安全性。
首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/405697.html

