Linux 下 Tomcat 结合内网穿透 实现 Web 应用公网访问

Linux 下 Tomcat 结合内网穿透 实现 Web 应用公网访问

前言

在日常的 Web 开发与测试中,常常会遇到这样的困扰:本地部署好的 Java Web 项目,只能在局域网内访问,想要让异地的同事协作调试、给客户演示功能,或是外出时远程查看项目运行状态,往往需要繁琐的公网 IP 配置、端口映射,甚至要依赖云服务器部署。

而有一种实用的内网穿透功能,能轻松打破这种网络限制 —— 它可以将本地运行的服务,无需复杂配置就能映射到公网,生成可全球访问的地址,让本地的 Tomcat 服务随时被外部设备访问。

今天我们要分享的,就是如何借助这一功能,搭配经典的 Tomcat 服务器,在 Linux 系统中快速实现 Web 应用的公网访问,整个过程简单易操作,几分钟就能完成配置,解决开发和演示中的网络访问难题。

image-20250826101154874

1.在CentOs7上安装OpenJDK

在已安装套件中查找含有java字符串的文件:

rpm-qa|grepjava

若没有安装则开始安装吧!

查询yum中存在的JDK版本:

yum list |grep java-11 
image-20250826103345132

执行以下命令安装:

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
image-20250826104223874

配置环境变量:

vim /etc/profile 
image-20250826105622123

在最后一行,添加下列内容:

xport JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.13.0.8-1.el7_9.x86_64 exportJRE_HOME=$JAVA_HOMEexportCLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATHexportPATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
image-20250826110824367

使文件生效:

source /etc/profile 

验证是否生效:

whereisjava
image-20250826111158436

这样我们就安装成功啦!

2.安装Tomcat10

首先到Tomcat官网下载安装包,我下载的是最新版的Tomcat10,具体步骤如下:

安装下图操作:

image-20250826145512750
image-20250826145707738
image-20250826145740444
image-20250826145836904
image-20250826145917792

打开虚拟机,切换到root用户下,创建Tomcat用户,命令如下:

useradd tomcat 

设置密码:

passwd tomcat 
image-20250826154329831

切换到Tomcat用户,能切换过去,代表成功创建该用户了。

su - tomcat 
image-20250826154402067

把 apache-tomcat-10.1.9.tar.gz上传到/home/tomcat/目录下。

image-20250826154451234
image-20250826154515289

上传成功。

image-20250826154532464

解压。

tar-zxvf apache-tomcat-10.1.9.tar.gz 
image-20250826154644951

给解压后的Tomcat,重命名一下:

mv apache-tomcat-10.1.9 tomcat 
image-20250826154916980

启动:

cd tomcat/ bin/startup.sh 
image-20250826160452317

启动成功!

image-20250826160928137

关闭tomcat命令

bin/shutdown.sh 

这样我们就在CentOS7上安装完Tomcat啦!

3.简单玩一下Tomcat

在这里,我们可以看到,都是千篇一律的页面,那么我们可不可以把tomcat页面变成自己的页面呢?

答案是:当然可以!

我们只需要找到它的前端代码,简单修改就可以啦!

cd /home/tomcat/tomcat/webapps/ROOT 
image-20250826162535805

想要改文字、格式就修改index.jsp。

image-20250826162834562

想要改样式就选择tomcat.css。

image-20250826162914763

我这里示例一下改主页文字。

vi index.jsp 

在Home前加上”小单的“几个字:

image-20250826163936195

回到bin目录,重启一下:

image-20250826164053514

重启后,更改成功啦!

image-20250826164504219

那么我有一个问题,倘若你同事下班想使用一下你的Tomcat,该怎么办呢?

别急,cpolar来帮助你,解决这一烦恼。

4.安装cpolar实现随时随地开发

cpolar 可以将你本地电脑中的服务(如 SSH、Web、数据库)映射到公网。即使你在家里或外出时,也可以通过公网地址连接回本地运行的开发环境。

❤️以下是安装cpolar步骤:

使用一键脚本安装命令:

sudocurl https://get.cpolar.sh |sh
image-20250826172453496

安装完成后,执行下方命令查看cpolar服务状态:(如图所示即为正常启动)

sudo systemctl status cpolar 
image-20250826172604013

Cpolar安装和成功启动服务后,在浏览器上输入虚拟机主机IP加9200端口即:【http://192.168.42.101:9200】访问Cpolar管理界面,使用Cpolar官网注册的账号登录,登录后即可看到cpolar web 配置界面,接下来在web 界面配置即可:

打开浏览器访问本地9200端口,使用cpolar账户密码登录即可,登录后即可对隧道进行管理。

image-20250826172625263

5.配置公网地址

登录cpolar web UI管理界面后,点击左侧仪表盘的隧道管理——创建隧道:

  • 隧道名称:可自定义,本例使用了:tomcat,注意不要与已有的隧道名称重复
  • 协议:http
  • 本地地址:8080
  • 域名类型:随机域名
  • 地区:选择China Top点击创建:
image-20250826175205560

创建成功后,打开左侧在线隧道列表,可以看到刚刚通过创建隧道生成了公网地址,接下来就可以在其他电脑或者移动端设备(异地)上,使用地址访问。

image-20250826175248080

访问成功。

image-20250826175317499

6.保留固定公网地址

使用cpolar为其配置二级子域名,该地址为固定地址,不会随机变化。

image-20250827103024446

点击左侧的预留,选择保留二级子域名,地区选择china top,然后设置一个二级子域名名称,我这里演示使用的是tomcat,大家可以自定义。填写备注信息,点击保留。

image-20250827103127242

登录cpolar web UI管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到所要配置的隧道tomcat,点击右侧的编辑

修改隧道信息,将保留成功的二级子域名配置到隧道中

  • 域名类型:选择二级子域名
  • Sub Domain:填写保留成功的二级子域名
  • 地区: China Top

点击更新

image-20250827103351334

更新完成后,打开在线隧道列表,此时可以看到随机的公网地址已经发生变化,地址名称也变成了保留和固定的二级子域名名称。

image-20250827103433119

最后,我们使用固定的公网地址在任意设备的浏览器中访问,可以看到成功访问本地部署的tomcat页面,这样一个永久不会变化的二级子域名公网网址即设置好了。

image-20250827103556724

恭喜!你成功了! 现在,无论你身在何处,用手机、平板还是另一台电脑,都能看到并操作你本地运行的tomcat了!

总结

其实本地 Web 应用的公网访问需求,本质上是为了打破网络边界,让开发、测试与演示的流程更顺畅。Tomcat 作为成熟的 Java 应用服务器,搭配内网穿透工具的灵活映射能力,恰好满足了这种轻量、高效的使用场景。

无需专业的网络知识,也不用额外的硬件投入,就能让本地项目拥有公网访问能力,无论是个人开发调试,还是小团队的协作分享,都能大幅提升效率。这种低成本、易上手的解决方案,也正是日常开发中最贴合实际需求的选择,让技术落地更简单。

Read more

【离散化 线段树 二分查找】3661可以被机器人摧毁的最大墙壁数目|2525

【离散化 线段树 二分查找】3661可以被机器人摧毁的最大墙壁数目|2525

本文涉及知识点 【C++】树状数组的使用、原理、封装类、样例 C++线段树 C++二分查找 3661. 可以被机器人摧毁的最大墙壁数目 一条无限长的直线上分布着一些机器人和墙壁。给你整数数组 robots ,distance 和 walls: robots[i] 是第 i 个机器人的位置。 distance[i] 是第 i 个机器人的子弹可以行进的 最大 距离。 walls[j] 是第 j 堵墙的位置。 每个机器人有 一颗 子弹,可以向左或向右发射,最远距离为 distance[i] 米。 子弹会摧毁其射程内路径上的每一堵墙。机器人是固定的障碍物:如果子弹在到达墙壁前击中另一个机器人,它会 立即 在该机器人处停止,无法继续前进。

三星研究院:让机器人大脑瘦身70%却变得更聪明

三星研究院:让机器人大脑瘦身70%却变得更聪明

这项由三星研究院主导的突破性研究发表于2025年1月的arXiv预印本库,论文编号为arXiv:2601.20262v1。对于想要深入了解技术细节的读者,可以通过该编号查询完整论文。 想象一下这样一个场景:你有一台非常聪明的机器人,它能够理解你的话语、看懂周围环境,还能精准地完成各种复杂任务,比如插入螺丝、整理物品或者协助做饭。但是这台机器人有个致命问题——它的"大脑"太复杂了,需要庞大的计算设备才能运转,就像需要一台超级计算机才能让它思考一秒钟。这就是当前视觉-语言-动作模型面临的核心困境。 这些先进的机器人系统,研究人员称之为VLA模型(Vision-Language-Action),就像是把一个能看、能听、能理解、还能行动的完整智能体塞进了机器人里。它们的工作原理类似于人类的认知过程:先通过眼睛观察环境,用大脑理解看到的内容和听到的指令,然后决定采取什么行动。但问题在于,这些模型的"大脑"实在太庞大了,包含着数十个复杂的处理层,每一层都在进行着密集的计算。 更麻烦的是,目前最先进的机器人系统采用了一种叫做"流匹配"的技术来生成动作,这种技术就像是让机器人在执行任何动作前都

Flutter 三方库 eip55 的鸿蒙化适配指南 - 在鸿蒙系统上构建极致、严谨、符合 Web3 标准的以太坊地址校验与防串改引擎

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 eip55 的鸿蒙化适配指南 - 在鸿蒙系统上构建极致、严谨、符合 Web3 标准的以太坊地址校验与防串改引擎 在鸿蒙(OpenHarmony)系统的区块链钱包应用、数字资产管理工具(如鸿蒙版 NFT 浏览器)或需要处理加密货币转账的场景中,如何确保用户输入的以太坊(Ethereum)地址既符合基本格式,又通过了大小写混合的校验和(Checksum)验证,防止因为单个字符手误导致的资产永久丢失?eip55 为开发者提供了一套工业级的、基于 EIP-55 提案的地址转换与验证方案。本文将深入实战其在鸿蒙 Web3 安全基座中的应用。 前言 什么是 EIP-55?它是由以太坊创始人 Vitalik Buterin 提出的地址校验和提案。通过在地址字符串中引入特定的。大小写混合模式(基于 Keccak-256 哈希)

解锁VR视频新体验:零门槛将3D视频转为普通格式

解锁VR视频新体验:零门槛将3D视频转为普通格式 【免费下载链接】VR-reversalVR-Reversal - Player for conversion of 3D video to 2D with optional saving of head tracking data and rendering out of 2D copies. 项目地址: https://gitcode.com/gh_mirrors/vr/VR-reversal 还在为无法在普通设备上观看VR视频而烦恼吗?🤔 面对那些只能在专业VR设备上播放的3D并排格式视频,很多用户都感到束手无策。VR-Reversal应运而生,这款基于MPV播放器的免费开源插件,让你轻松实现VR视频到2D格式的转换,无需任何昂贵的专业设备。 痛点场景:当VR视频遇上普通屏幕 场景一:资源浪费的尴尬 你下载了精彩的VR视频资源,却因为缺乏VR设备而无法观看。这些占用大量存储空间的视频文件,成了名副其实的"