前言
我对这类 Java Web 部署教程的要求其实很低:别一上来讲一堆架构,先让我看到页面。
Java 能不能跑、Tomcat 能不能启动、8080 能不能打开,这三件事先确认。只要这条最小链路成立,后面改首页、换自己的项目、再做公网访问,都会容易很多。
原文里有一个我很喜欢的小细节:Tomcat 安装成功以后,作者没有只停在默认首页,而是真的进了 webapps/ROOT,打开 index.jsp,在 Home 前面加上了“小单的”几个字,再重启 Tomcat 看页面变化。
这个动作很小,但很有“实操感”。
所以这篇我会保留一个比较明确的人物性格:
喜欢先做出一个最小可用结果,再一点点往上加;看到页面真的发生变化,才觉得这一层算跑通。
全文也按照这个人的节奏来:
OpenJDK → Tomcat → 默认页面 → 修改 index.jsp → 重启确认 →cpolar→ 随机公网地址 → 固定二级子域名。
原文标题里用了“5 分钟”“全球可访”,但正文没有记录完整耗时,也没有做全球不同地区的网络测试,所以这一版不把这两个词继续当成已验证结论。

1. 先把 Java 11 环境准备好
本次环境是 CentOS 7。
第一步先看看系统里有没有已经安装的 Java:
rpm -qa | grep java
如果没有,再查询 yum 中可用的 Java 11:
yum list | grep java-11

原文安装命令保持不变:
yum install -y java-11-openjdk-headless-11.0.13.0.8-1.el7_9.x86_64 java-11-openjdk-11.0.13.0.8-1.el7_9.x86_64 java-11-openjdk-devel-11.0.13.0.8-1.el7_9.x86_64
安装完成后验证版本:
java –version

到这里我会先确认 Java 本身能正常执行,再继续碰 Tomcat。
1.1 配置环境变量
编辑 /etc/profile:
vim /etc/profile

原文在文件末尾加入下面这些内容:
xport JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.13.0.8-1.el7_9.x86_64
export JRE_HOME=$JAVA_HOME
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

这里有一个源文细节需要明确保留:第一行写的是:
xport JAVA_HOME=…
而不是 export JAVA_HOME=…。
这属于原文技术内容,本次全文改写不擅自修正。
保存以后让配置生效:
source /etc/profile
再检查 Java 路径:
whereis java

这一层确认完成以后,才开始装 Tomcat。
2. 安装 Tomcat 10
原文先从 Tomcat 官网下载 Tomcat 10 安装包,并按截图完成下载过程。





随后回到虚拟机,切换到 root 用户,并创建独立的 Tomcat 用户。
创建用户:
useradd tomcat
设置密码:
passwd tomcat

然后切换到 Tomcat 用户:
su – tomcat

能正常切换过去,说明这个用户已经创建成功。
接着把:
apache-tomcat-10.1.9.tar.gz
上传到:
/home/tomcat/


原文确认文件上传成功。

解压:
tar -zxvf apache-tomcat-10.1.9.tar.gz

再把目录重命名为 tomcat:
mv apache-tomcat-10.1.9 tomcat

然后进入目录启动服务:
cd tomcat/
bin/startup.sh

原文确认 Tomcat 启动成功。

如果需要关闭 Tomcat,则使用:
bin/shutdown.sh
到这里,Tomcat 本身已经安装并能启动。
但我不会急着结束,因为下一步正好能证明:这不是一个只能看的默认页面,我们确实能改它。
3. 不停在默认页:我先改一个最小的地方
原文这一节很有意思。
安装好 Tomcat 以后,作者看到默认页面“千篇一律”,就直接去改首页。
先进入 ROOT 应用目录:
cd /home/tomcat/tomcat/webapps/ROOT

如果要修改文字和页面结构,原文指向:
index.jsp

如果要修改样式,则看:
tomcat.css

这次原文只做一个很小的验证:改主页文字。
打开:
vi index.jsp
然后在 Home 前面加上:
“小单的”

改完以后回到 bin 目录重启 Tomcat。

重启以后,页面上的文字确实发生了变化。

这就是这篇最适合保留下来的“真实故事情景”。
不是虚构一个项目上线事故,而是一个非常具体的动作:
Tomcat 装好了,我不满足于看到默认页,于是顺手改了 index.jsp,重启以后看到自己的文字真的出现在页面上。
这种验证比一句“部署成功”更有说服力。
4. 本地能改了,问题就变成:别人怎么访问?
原文随后抛出了一个情景:
倘若同事下班以后还想使用你的 Tomcat,该怎么办?
这不是原文已经真实发生过的故事,所以这里仍然把它当作使用场景,不冒充亲身经历。
但这个场景非常自然。
因为前面我们已经确认:
- Java 正常;
- Tomcat 正常;
- 页面可以修改;
- 重启后修改生效。
现在剩下的只是访问范围。
所以 cpolar 在这篇里的职责很单一:
把本地已经能正常访问的 Tomcat 8080 页面映射到公网。
它不负责 Java,不负责 Tomcat,也不负责你的 JSP 页面。
5. 安装 cpolar
原文使用一键脚本:
sudo curl https://get.cpolar.sh | sh

安装完成后查看服务状态:
sudo systemctl status cpolar

cpolar 启动后,原文通过虚拟机主机 IP + 9200 进入 Web 管理界面。
源文显示文字为:
http://192.168.42.101:9200
但 Markdown 链接实际指向:
http://localhost:9200/
这两个写法不一致,本版不擅自统一,只把差异说明清楚。

登录后即可进入 cpolar 隧道管理。
6. 先用随机公网地址验证 8080
进入【隧道管理 → 创建隧道】。
原文参数如下:
- 隧道名称:tomcat
- 协议:http
- 本地地址:8080
- 域名类型:随机域名
- 地区:China Top
然后点击创建。

创建成功后,打开在线隧道列表,可以看到新生成的公网地址。

换到其他电脑或移动设备访问。

页面能够正常打开。
这一层我会只下一个很明确的结论:
Tomcat 的 8080 页面已经可以通过公网地址访问。
先用随机地址确认链路,是我比较喜欢的做法。
因为如果这一步不通,就先查 Tomcat、8080 或隧道;不必一上来把固定域名也掺进来。
7. 长期使用,再换固定二级子域名
随机地址能用以后,如果准备长期保存这个 Tomcat 入口,再去配置固定二级子域名。
原文先进入 cpolar 的预留功能。

地区选择:
china top
原文示例二级子域名名称是:
tomcat

保留以后,回到 cpolar Web UI,在隧道列表中找到 tomcat,点击编辑。

然后修改为:
- 域名类型:二级子域名
- Sub Domain:填写保留成功的二级子域名
- 地区:China Top
点击更新。

更新以后,在线隧道列表中的随机地址会切换成固定二级子域名。

最后再用固定公网地址访问 Tomcat。

页面能够正常打开,说明固定入口已经配置完成。
总结
这篇真正跑通的是一条很基础、但很完整的 Java Web 服务链:
Java 11 → Tomcat 10 → 8080 → 修改首页 → 重启验证 → cpolar → 随机公网地址 → 固定二级子域名。
原文实际完成了:
- CentOS 7 查询 Java;
- 安装指定 OpenJDK 11 软件包;
- java –version 验证;
- 编辑 /etc/profile;
- source /etc/profile;
- whereis java;
- 创建 tomcat 用户;
- 上传 apache-tomcat-10.1.9.tar.gz;
- 解压并重命名为 tomcat;
- bin/startup.sh 启动;
- bin/shutdown.sh 关闭;
- 进入 /home/tomcat/tomcat/webapps/ROOT;
- 编辑 index.jsp;
- 给 Home 前加入“小单的”;
- 重启以后确认首页变化;
- 安装cpolar;
- 9200 进入 Web 管理界面;
- 创建 tomcat 隧道;
- 本地地址 8080;
- 随机公网地址访问成功;
- 保留 tomcat 二级子域名;
- 固定地址再次访问成功。
这篇的人物性格也比较明确:
不追求一口气把所有功能都装完,先看到最小结果,再往下一层走。
所以最有“故事感”的地方,其实不是“同事下班找我”这种假设,而是原文真的做了这件事:
装完 Tomcat,进 index.jsp 改了几个字,重启以后看到页面真的变成自己的。
这类小动作最能让技术教程像真人写的。
另外,源文里几个技术细节本版都没有擅自修正,包括 /etc/profile 中的 xport JAVA_HOME=…,以及 cpolar 9200 显示地址与 Markdown 实际链接不一致的问题。
原文最后还提到“5 分钟上线”“全球可访问”“HTTPS 加密、多隧道管理、数据库、远程桌面等扩展场景”。正文真正实测完成的是 Tomcat 页面本地运行、随机公网访问和固定地址访问,因此新版把结论收回到这个范围。
对这类入门部署来说,我觉得这样已经够了:
先让自己的页面在 8080 上出现,再让别人在外面也能打开它。

