在 Ubuntu 上部署 JSP,核心并不复杂,真正容易出问题的往往是环境没装全、Tomcat 路径没搞清,或者应用已经放上去却因为端口、权限和配置文件导致访问失败。下面按“环境准备、容器安装、应用部署、访问放行、上线加固、结果验证”这条路径梳理一遍,读完后你可以判断自己的部署卡在哪一层,也能直接照着命令完成一次可访问的 JSP 发布。
先更新 Ubuntu,减少依赖冲突
部署前先把系统软件包更新到最新状态,这一步很基础,但能明显减少后面安装 JDK、Tomcat 时的依赖问题。
sudo apt update && sudo apt upgrade -y
如果是刚初始化的新服务器,建议先完成这一步,再继续安装运行环境。
安装 JDK,确认 JSP 运行基础
JSP 运行依赖 Java 环境,因此第一项关键组件就是 JDK。这里沿用 Ubuntu 官方仓库中的 OpenJDK 11,兼顾稳定性和安装便利性。
sudo apt install openjdk-11-jdk -y
安装完成后,最好立刻检查 Java 运行时和编译器是否都已就绪:
java -version
# 查看Java运行时环境版本
javac -version
# 查看Java编译器版本(确认JDK安装)
如果后续需要在多版本 Java 之间切换,可以使用下面这条命令:
sudo update-alternatives --config java
安装 Tomcat,并确认服务已启动
Tomcat 是 JSP 应用最常见的运行容器。使用 Ubuntu 官方仓库中的 Tomcat 9,可以快速搭出稳定环境。

sudo apt install tomcat9 -y
安装完成后,Tomcat 通常会自动启动。可以直接在本机检查 8080 端口上的默认页面是否能返回:
curl http://localhost:8080
# 应返回Tomcat默认页面
部署时要记住两个默认位置:
/var/lib/tomcat9:Tomcat 安装目录,其中webapps用来放应用/etc/tomcat9:Tomcat 相关配置文件目录
可选:配置 Tomcat 环境变量
如果你需要更方便地在命令行里操作 Tomcat,或者后面要自定义路径,可以补上环境变量配置。编辑 /etc/profile:
sudo nano /etc/profile
在文件末尾加入:
export CATALINA_HOME=/var/lib/tomcat9
# Tomcat安装目录
export PATH=$CATALINA_HOME/bin:$PATH
# 添加Tomcat命令到PATH
保存后让配置立即生效:
source /etc/profile
然后验证命令是否可用:
startup.sh
# 启动Tomcat(需在CATALINA_HOME/bin目录下)
shutdown.sh
# 停止Tomcat
部署 JSP 应用:WAR 包是关键
Tomcat 部署 JSP 应用时,通常需要把项目打成 WAR 文件。假设当前应用包名为 myapp.war,常见做法有两种:图形界面上传,或直接复制到部署目录。

方式一:通过 Tomcat 管理界面上传
这种方式更适合刚接触 Tomcat 的用户,操作直观,也便于确认部署结果。
- 浏览器访问
http://<服务器IP>:8080/manager/html - 输入管理员账号密码
如果管理账号尚未配置,需要修改 /etc/tomcat9/tomcat-users.xml,加入以下内容后重启 Tomcat:
<role rolename="manager-gui"/>
<user username="admin" password="admin" roles="manager-gui"/>
之后在管理界面中选择 WAR 文件并点击部署即可。部署成功后,应用访问地址通常是:
http://<服务器IP>:8080/myapp
其中 myapp 对应 WAR 文件名去掉 .war 后缀后的路径。
方式二:手动复制到 webapps 目录
如果你要做脚本化部署、批量发布或远程自动化,这种方式更实用。
sudo cp /path/to/myapp.war /var/lib/tomcat9/webapps/
复制完成后,Tomcat 会自动解压并部署,访问路径与管理界面部署一致。
开放端口,确保外部能访问
如果服务器启用了 UFW 防火墙,仅本机部署成功还不够,外部流量仍可能被拦住。常见放行规则如下:
sudo ufw allow 80/tcp
# 允许HTTP
sudo ufw allow 443/tcp
# 允许HTTPS
sudo ufw reload
# 重新加载防火墙规则
如果当前仍打算直接通过 Tomcat 默认端口测试,也可以额外放行 8080:
sudo ufw allow 8080/tcp
实际生产环境中,更常见的做法是让外部只访问 80 和 443,再由 Nginx 反向代理到 8080。
可选:配合 Nginx 和 Certbot 启用 HTTPS
如果应用要对外提供正式服务,建议尽快启用 HTTPS。一个常见组合是 Nginx 反向代理 Tomcat,再用 Let's Encrypt 的免费证书完成 SSL 配置。
先安装 Certbot 和 Nginx:
sudo apt install certbot python3-certbot-nginx -y
然后申请并配置证书,把 your_domain.com 替换成自己的域名:
sudo certbot --nginx -d your_domain.com
完成后,Certbot 会自动调整 Nginx 配置,加入 443 监听,并把请求反向代理到 Tomcat 的 8080 端口。最后重启 Nginx:
sudo systemctl restart nginx
这时应用通常就能通过下面的地址访问,并自动跳转到 HTTPS:
https://your_domain.com
部署后怎么验证,404 又该查什么
不管你使用哪种部署方式,最后都需要通过浏览器直接访问应用 URL,确认 JSP 页面已经能正常返回。如果打开后出现 404,优先检查下面三项:
- WAR 文件是否已经成功复制到
webapps目录 - 应用目录结构是否完整,例如
WEB-INF/web.xml是否存在 - Tomcat 服务是否仍在正常运行
Tomcat 运行状态可以这样查看:
sudo systemctl status tomcat9
如果服务正常、WAR 已部署、目录也没问题,但仍然无法访问,就需要继续排查域名解析、Nginx 代理配置或防火墙规则是否与当前访问方式一致。









