【杂谈】经验分享:宝塔快速部署与IDEA远程Debug

发布时间:2024年01月15日

宝塔部署项目 与 IDEA 远程debug 实战

前言&需求描述

本文记录个人工作中遇到的一个需求与解决方案,希望能帮助到有类似需求的读者。

需求描述
公司某块业务需要接收来自第三方API的请求。但是整个业务相对比较复杂,第三方API的一些特性还需要进一步测试,因此需要在不动现有业务代码的情况下,抽时间对这块业务进行预研。包括:触发第三方API请求的方法,第三方API请求的结构。

条件限制:

  • 时间,需要在既定的较短时间内完成预研并有所产出
  • 现阶段难以借用公司代码进行调试,即便切了本地分支,也无法通过本地地址接收来自第三方API的请求。
  • 资源比较紧缺,暂时无法借用公司服务器资源单独部署一个专门用于预研的分支,现阶段也没这个必要。

于是,第一时间我的构想是:

解决思路构想

  • 快速搭建一个后端项目,快速部署到服务器
  • 通过远程debug的方式,验证第三方API调用

根据上述解决思路,想着以最快最方便的方式搭建好并部署,采用图形化的宝塔面板部署;IDEA 远程debug, 因此本文学习目标如下:

学习目标

  • 学习宝塔部署后端项目
  • 学习远程debug

1. 宝塔部署后端项目

1.1 项目准备

快速创建一个Maven项目,并引入所需依赖,配置跨域,本地测试启动成功即可。

其中,所需依赖、部分代码:
主要依赖 fast-json ,用于快速测试接收第三方API的请求与返回结果

<dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>fastjson</artifactId>
      <version>1.2.73</version>
</dependency>
@Controller
@CrossOrigin(origins = "*", maxAge = 3600)
public class BasicController {

    @PostMapping("/api/accept")
    public Object handleExternalRequest(@RequestBody String requestData) {
        String response = "请求已接收:" + requestData;
        System.out.println(response);
        return JSON.parse(response);
    }
}

然后就是项目打包。借助 IDEA 工具,如截图所示:
1

1.2 服务器准备

我们首先要准备一个服务器,并事先安装好宝塔面板。现在一般的云服务器都提供初始的宝塔面板安装,本文这里就不赘述。

有了宝塔之后,在宝塔面板上传我们打包好的项目文件。目录随意,但咱最好稍微记一下,呆会会用到:
2

1.3 项目启动

我们可以使用宝塔面板提供的项目管理启动 Java 项目,图形化界面非常方便,也可以在终端使用命令行。

赶时间,我借宝塔把文件上传上去之后,用终端启动项目:

java -jar [jar_name]

这里jar_name是咱们的jar包名了
3

启动完成就可以关掉了,我们接下来要使用的是IDEA 远程debug, 要添加参数。

2. IDEA 远程 debug

2.1 IDEA 编辑启动项

如图所示,在我们平时点击 IDEA 启动/debug 的位置找到edit, 即Run/Debug Configurations ,进入,参考如下截图配置:
4

将生成的参数CV 下来,例如我这里是:

-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,
address=5005

2.2 服务器带参启动

服务器带参启动之前,先确保服务器防火墙开放了这个端口,例如我这里是 5005。 另外要十分注意的是,本地代码需要与远程一致。至少是需要 debug 的模块是一致的。

服务器键入如下命令启动

java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar [jar_name]

如果不需要频繁修改代码重新上传的话,使用后台启动:

nohup java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar [jar_name]

5

2.3 debug 演示

如图所示,成功进入断点:
6

3. 补充与总结

3.1 补充

本文是基于一个实际的需求记录的解决过程,采用的是远程debug的方式。但实际上,我们也可以反过来,将自己本地机器配置内网穿透,通过公网ip,接收来自第三方API的请求并在自己本地debug。这种方式舒服得多,但风险也是对等的,将自己甚至内网的IP桥接到公网并暴露了。

若遇到类似需求,读者酌情选用远程 Debug 与 内网穿透

3.2 总结

通过本文我个人遇到的需求,我们一起学习了:

  • 宝塔面板上传文件,图形化操作部署 或者 命令行让Java 后端项目跑起来
  • IDEA 远程 debug

希望本文有一定的参考价值,帮助到有类似需求的同学。

文章来源:https://blog.csdn.net/CoderSharry/article/details/135527691
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。