2026/4/18 9:28:38
网站建设
项目流程
建站之星建出来的网站如何上传,网站栏目方案,海报设计平台,古典水墨网站文章目录前言1. Remote JVM Debug2. 系统要求与环境准备2.1 服务器环境2.2 本地开发环境3. 内网服务器准备及开始3.1 安装cpolar配置支持远程ssh登录3.1.1 什么是cpolar#xff1f;3.1.2 安装cpolar3.1.3 注册及配置cpolar系统服务3.1.4 登录cpolar web ui 管理界面配置ssh端口…文章目录前言1. Remote JVM Debug2. 系统要求与环境准备2.1 服务器环境2.2 本地开发环境3. 内网服务器准备及开始3.1 安装cpolar配置支持远程ssh登录3.1.1 什么是cpolar3.1.2 安装cpolar3.1.3 注册及配置cpolar系统服务3.1.4 登录cpolar web ui 管理界面配置ssh端口穿透3.1.4.1 放行9200端口3.1.4.2 访问cpolar web ui管理界面3.1.4.3 保留固定TCP公网地址3.1.4.4 启用ssh隧道配置固定tcp地址3.1.4.5 使用固定的tcp地址进行远程ssh登录3.2 安装JDK3.3 上传打包好的Jar文件至服务器3.3.1 打包springboot项目3.3.2 上传至服务器4. 启动 JAR 文件并配置远程调试4.1 启动 JAR 文件4.2 cpolar隧道配置4.2.1 http8080端口穿透4.2.2 调试端口5005端口穿透4.2.2.1 保留固定tcp地址4.2.2.2 创建新隧道5.IDEA远程Debug调试内网项目5.1 idea配置remote jvm debug5.2 启动及调试6.可能出现的问题6.1 访问页面出现404的情况是怎么回事7.总结项目源码项目源码前言Remote JVM Debug 是 Java 开发中常用的远程调试工具能让开发者在本地 IDE 中直接调试部署在服务器上的 Java 程序精准定位代码中的问题特别适合后端开发人员、测试工程师等需要排查远程服务故障的群体其优点在于能实时跟踪程序运行状态像在本地调试一样高效。不过使用时要注意远程调试会占用一定服务器资源且需确保调试端口安全避免暴露敏感信息。这类工具通常只能在局域网内发挥作用这给实际开发带来不少麻烦。比如公司的测试服务器部署在内部网络开发人员在家办公时就无法远程连接进行调试只能等到回到公司才能处理问题严重影响工作效率。而当 Remote JVM Debug 与 cpolar 结合后优势就十分明显了。cpolar 作为内网穿透工具能将内网服务器的调试端口映射到公网让开发者无论身处何地只要有网络就能通过本地 IDE 远程连接内网网服务器进行调试打破了局域网的限制极大提升了远程协作和问题排查的便利性。1. Remote JVM DebugRemote JVM Debug远程JVM调试是一种允许开发人员通过调试工具如 IntelliJ IDEA连接到运行在远程服务器上的Java应用程序并进行调试的技术。这个过程通常涉及通过网络连接到远程JVM实例并允许开发者在不直接访问物理机器的情况下查看、修改代码状态诊断和修复问题。2. 系统要求与环境准备2.1 服务器环境内网服务器操作系统Windows 或 Linux。JDK 版本确保服务器上安装了正确版本的 JDK支持远程调试。cpolar 安装需要在内网服务器上安装 cpolar 客户端用于穿透远程登录、调试端口及HTTP请求。2.2 本地开发环境IDEA本地开发机器需要安装 IntelliJ IDEA。JDK本地开发机器需要安装 JDK版本与远程服务器相同。3. 内网服务器准备及开始由于大部分项目基本部署在Linux服务器中因为Linux的性能更优占用更低。所以本文采用的模拟内网服务器为Linux的CentOS7系统。3.1 安装cpolar配置支持远程ssh登录此步骤需提前在内网服务器中操作以支持在家远程登录公司测试环境中的内网服务器3.1.1 什么是cpolarcpolar 是一款内网穿透工具可以将你在局域网内运行的服务如本地 Web 服务器、SSH、远程桌面等通过一条安全加密的中间隧道映射至公网让外部设备无需配置路由器即可访问。广泛支持 Windows、macOS、Linux、树莓派、群晖 NAS 等平台并提供一键安装脚本方便部署。3.1.2 安装cpolar首先我们需要先安装curlsudoyuminstallcurlBash接下来下载cpolar,一条命令完成安装curl-L https://www.cpolar.com/static/downloads/install-release-cpolar.sh|sudobashBash测试cpolar版本以确保安装cploar versionBash3.1.3 注册及配置cpolar系统服务官网地址https://www.cpolar.com进入cpolar官网点击免费注册按钮进行注册一个账号向系统添加及启动cpolar服务#添加cpolar服务sudosystemctlenablecpolar#启动cpolar服务sudosystemctl start cpolarBash查看服务状态sudosystemctl status cpolarBash3.1.4 登录cpolar web ui 管理界面配置ssh端口穿透3.1.4.1 放行9200端口在访问web页面前需要先检查系统防火墙是否放行9200端口避免访问不了systemctl status firewalldBash有两种方式可以实现访问一种是放行该端口另一种是直接关闭防火墙不建议#放行 9200 端口#--zonepublic使用默认区域通常是 public#--add-port9200/tcp添加 TCP 协议的 9200 端口#--permanent永久生效不加此参数则是临时规则重启失效firewall-cmd --zonepublic --add-port9200/tcp --permanent#重载防火墙配置(及刷新配置使其生效)firewall-cmd --reloadBash验证端口是否已放行firewall-cmd --zonepublic --query-port9200/tcpBash输出内容为yes则成功放行3.1.4.2 访问cpolar web ui管理界面在访问之前不确定ip地址可以通过ifconfig命令查看服务器ipifconfigBash确定好ip地址后在浏览器中访问http//此处应为您的IP:9200#如http://192.168.184.133:9200Bash将前面步骤注册好的cpolar账号登录即可进入后台页面登录成功同时服务器也会后台无感自动配置token,无需手动配置token配置文件位置/usr/local/etc/cpolar/cpolar.ymlcat/usr/local/etc/cpolar/cpolar.ymlBash3.1.4.3 保留固定TCP公网地址使用cpolar为其配置TCP地址该地址为固定地址不会随机变化,方便后续ssh远程登录。进入官网的预留页面https://dashboard.cpolar.com/reserved列表中显示了一条已保留的TCP地址记录地区显示为China Top。地址显示为16.tcp.cpolar.top:14290。注地址每个账号的都不同请以自己保留生成的为主3.1.4.4 启用ssh隧道配置固定tcp地址点击左侧菜单栏的隧道管理展开进入隧道列表页面页面下默认会有 2 个隧道ssh隧道指向22端口tcp协议website隧道指向8080端口http协议http协议默认会生成2个公网地址一个是http另一个https免去配置ssl证书的繁琐步骤接着点击ssh隧道的编辑按钮进入编辑页面修改成固定tcp地址如图所示3.1.4.5 使用固定的tcp地址进行远程ssh登录ssh远程工具可以使用MobaXterm、Xshell或者FinalShell都可以这里采用FinalShell进行远程登录演示接下来双击创建的ssh连接如出现提示点击接受并保存即可即可连接到内网服务器3.2 安装JDK本文采用jdk17作为演示#下载jdk17软件包wgethttps://download.oracle.com/java/17/archive/jdk-17_linux-x64_bin.rpm#安装jdk17sudorpm-ivh jdk-17_linux-x64_bin.rpmBash安装完成后查看版本确认安装java -versionBash3.3 上传打包好的Jar文件至服务器该项目为简单模拟测试调试使用项目共写3个简单接口正常接口/api/normal/info获取应用程序的基本信息包括名称、版本、作者等异常接口/api/bug/null-pointer故意抛出NullPointerException用于调试异常处理阻塞接口/api/bug/infinite-loop进入无限循环模拟线程阻塞场景3.3.1 打包springboot项目idea中侧边栏选择Maven选项然后如图操作进行构建打包jar文件3.3.2 上传至服务器依次步骤打开找到jar文件springboot-debug-test-1.0.0.jar将jar文件直接拖动至finalshell空白处即可上传注意一定要使用 root 用户登录否则上传可能失败或者确保当前用户对目标目录具有写权限。如果使用普通用户登录 FinalShell可通过chmod或chown命令赋予目标目录写权限。4. 启动 JAR 文件并配置远程调试4.1 启动 JAR 文件使用java -jar命令启动你需要调试的 JAR 文件并开启远程调试。需要在启动命令中指定 JVM 调试参数java -jar -agentlib:jdwptransportdt_socket,servery,suspendn,address*:5005 springboot-debug-test-1.0.0.jarBash5005为远程调试的端口号。springboot-debug-test-1.0.0.jar是要调试的 JAR 文件名称。项目已经成功启动端口5005被监听后台该jar文件项目在端口8080http上运行。4.2 cpolar隧道配置4.2.1 http8080端口穿透访问cpolar web ui管理界面忘记可看前面3.1.4.2小节进入到隧道列表名称为website的隧道点击编辑可以看到如下信息隧道名称website协议http本地地址8080这些信息正是后台项目8080端口所需要的所以不需要进行修改默认创建好的隧道直接可以使用。接着左侧菜单栏选择【状态】【在线隧道列表】可以看到website隧道有两个公网地址http协议http协议默认会生成2个公网地址一个是http另一个https免去配置ssl证书的繁琐步骤直接选择一个至浏览器测试这里选择http注每个用户的公网地址都不相同由于后台项目提到的接口地址后缀为/api/normal/info,所以正确拼接地址应为您的公网地址/api/normal/info#如http://5c19bf20.r1.cpolar.top/api/normal/infoBash接口正常返回了api接口信息穿透成功4.2.2 调试端口5005端口穿透4.2.2.1 保留固定tcp地址选择将5005端口穿透设置为固定的tcp地址是为了方便后续多次调试tcp地址不会进行变化也可以不进行此步骤操作。进入官网的预留页面https://dashboard.cpolar.com/reserved地区当前选择的是China Top地址信息为3.tcp.cpolar.top:12718记住新创建的地址信息注意每个用户创建的地址信息都有所不同请注意个人的地址信息4.2.2.2 创建新隧道进入创建隧道列表填写好对应信息如下图协议tcp本地地址为5005端口类型固定tcp端口预留tcp地址填写您预留固定的tcp地址5.IDEA远程Debug调试内网项目5.1 idea配置remote jvm debug点击启动按钮左边的选项卡然后在选项卡中点击Edit Configurations进入Run/Debug Configurations页面依次点击左上角【】号按钮下滑选择【Remote JVM Debug】选项点击进入。填写主机以及端口信息,具体参考如下图Name:自定义名字如Remote DebugHost:填写固定的tcp地址去除端口部分如3.tcp.cpolar.topPort:填写固定的tcp地址端口部分如127185.2 启动及调试点击右上角的小虫子图标即可启动调试启动调试后控制台会出现类似Connected to the target VM, address: 3.tcp.cpolar.top:12718, transport: socket的信息即代表启动成功来到BugController控制器里面有一个异常接口api/bug/null-pointer,代码如下/** * 空指针异常接口 * * 该接口会故意抛出NullPointerException * 用于测试空指针异常的调试场景 * * return 永远不会执行到这里因为会抛出异常 */GetMapping(/null-pointer)publicStringnullPointerException(){//1.此位置故意设置nullString字符串为nullStringnullStringnull;StringnowLocalDateTime.now().format(FORMATTER);System.out.println(空指针异常接口被调用准备抛出异常时间now);//2.待接口返回时执行nullString的toString方法时就会抛出NullPointerException异常returnnullString.toString();}Java切换到浏览器然后请求8080端口的穿透地址异常接口地址进行请求,如您的8080端口穿透地址/api/bug/null-pointer#如http://5c19bf20.r1.cpolar.top/api/bug/null-pointerBash接着在String nullString null;代码段左边打上断点调试如下图再次请求一次该链接http://5c19bf20.r1.cpolar.top/api/bug/null-pointer进行发送http请求可以看到后端idea中已经进去断点调试了进入下一步骤查看到nullString变量值确实为null多跳几个步骤进入源码后可以确认已抛出空指针异常提示 nullString 为 null无法调用其方法。在finalShell终端1界面中也可以看到控制台输出的日志出现了NullPointerException异常通过以上的配置这样您就可以在家中或者外出无法及时回到公司时也能很轻松的调试公司中内网服务器里部署的测试环境项目啦6.可能出现的问题6.1 访问页面出现404的情况是怎么回事访问出现404可以发现接口路径中少了全局上下文路径/api 补上就可以访问啦7.总结通过本教程我们成功实现了使用 Cpolar 结合 Remote JVM Debug 技术在本地 IDE 环境中调试部署在公司内网中的 Java 服务。整体流程包括安装并配置 Cpolar打通从公网访问内网的通道启用 JVM 的远程调试模式开放调试端口使用 IntelliJ IDEA 配置 Debug 远程连接最终实现对远程服务的断点调试与问题排查。本方案适用于以下典型场景公司测试环境无法直接从公网访问无法通过 VPN 连通或 VPN 配置复杂出现远程服务异常但又难以复现时进行现场调试。在实际使用中应注意远程调试存在安全风险建议仅限于测试环境并设置好访问权限cpolar 每次生成的公网地址可能会变化建议使用固定子域名需高级用户远程调试应避免在生产环境开启以免暴露调试端口。通过这种方式极大提升了远程问题定位效率也为远程办公/故障应急提供了可靠手段。项目源码本文中使用的示例项目已开源欢迎访问GitHub仓库获取完整代码 https://github.com/TanChengBin/springboot-debug-test如果您觉得这个项目对您有帮助欢迎给项目点个Star⭐️支持以通过将 Remote JVM Debug 与 cpolar 结合轻松解决了内网服务器远程调试的难题让开发人员能随时随地高效排查问题为远程开发协作提供了有力支持。最终实现对远程服务的断点调试与问题排查。本方案适用于以下典型场景公司测试环境无法直接从公网访问无法通过 VPN 连通或 VPN 配置复杂出现远程服务异常但又难以复现时进行现场调试。在实际使用中应注意远程调试存在安全风险建议仅限于测试环境并设置好访问权限cpolar 每次生成的公网地址可能会变化建议使用固定子域名需高级用户远程调试应避免在生产环境开启以免暴露调试端口。通过这种方式极大提升了远程问题定位效率也为远程办公/故障应急提供了可靠手段。项目源码本文中使用的示例项目已开源欢迎访问GitHub仓库获取完整代码 https://github.com/TanChengBin/springboot-debug-test如果您觉得这个项目对您有帮助欢迎给项目点个Star⭐️支持以通过将 Remote JVM Debug 与 cpolar 结合轻松解决了内网服务器远程调试的难题让开发人员能随时随地高效排查问题为远程开发协作提供了有力支持。cpolar官网-安全的内网穿透工具 | 无需公网ip | 远程访问 | 搭建网站