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

news2024/11/17 3:24:51

文章目录

  • 前言&需求描述
  • 1. 宝塔部署后端项目
    • 1.1 项目准备
    • 1.2 服务器准备
    • 1.3 项目启动
  • 2. IDEA 远程 debug
    • 2.1 IDEA 编辑启动项
    • 2.2 服务器带参启动
    • 2.3 debug 演示
  • 3. 补充与总结
    • 3.1 补充
    • 3.2 总结

宝塔部署项目 与 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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1385443.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue中的v-model

聚沙成塔每天进步一点点 本文内容 ⭐ 专栏简介基本用法文本输入框复选框下拉框 原理解析文本输入框的原理复选框和下拉框的原理 ⭐ 写在最后 ⭐ 专栏简介 Vue学习之旅的奇妙世界 欢迎大家来到 Vue 技能树参考资料专栏&#xff01;创建这个专栏的初衷是为了帮助大家更好地应对 V…

动态规划篇-06:单词拆分

139、单词拆分 老样子&#xff0c;还是先尝试找出状态转移方程 状态转移方程 对问题进行分解&#xff0c;尝试从子问题入手解决。这也是前文提到过的 “分解问题” 的思想 对于输入的字符串 s&#xff0c;如果我能够从单词列表 wordDict 中找到一个单词匹配 s 的前缀 s[0..k]…

实现零的突破--国内首款兼容6Pin光耦栅极驱动器SLM34x系列SLM341

SLM34x系列SLM341是单通道兼容光耦的隔离式栅极驱动器产品&#xff0c;适用于驱动IGBT、MOSFET。其峰值驱动电流3.0A以及有不同的UVLO电压。与光耦栅极驱动器相比&#xff0c;其性能和可靠性都得到显著的提升&#xff0c;同时保持了对光耦栅极隔离驱动器管脚的兼容。性能提升包…

喜报|盘古信息入选多市中小企业数字化转型试点城市牵引单位/服务商名单

近期&#xff0c;为深入贯彻落实党中央、国务院关于支持中小企业创新发展、加快中小企业数字化转型系列决策部署&#xff0c;财政部、工业和信息化部近日联合印发通知&#xff0c;组织开展中小企业数字化转型城市试点工作&#xff0c;东莞市、武汉市、南昌市等多地经济和信息化…

国科大-自然语言处理复习

自然语言处理复习 实体关系联合抽取流水线式端到端方法 检索式问答系统流水线方式信息检索&#xff08;IR&#xff09;阶段阅读理解&#xff08;RC&#xff09;阶段基于证据强度的重排基于证据覆盖的重排结合不同类型的聚合 端到端方式Retriever-Reader的联合学习基于预训练的R…

科创板涨跌幅限制20%,上海怎么开参考表账户佣金费率最低?万一是哪家证券公司?

科创板是中国证券市场上的一类创新性企业板块&#xff0c;全称为科技创新板。科创板以支持科技创新和高新技术产业为目标&#xff0c;主要面向科技创新型企业和高新技术企业。科创板的设立旨在为创新型企业提供更加灵活、开放、市场化的融资和退出机制&#xff0c;以加快科技创…

【软件测试学习笔记1】测试基础

1.软件测试的定义 软件的定义&#xff1a;控制计算机硬件工作的工具 软件的基本组成&#xff1a;页面客户端&#xff0c;代码服务器&#xff0c;数据服务器 软件产生的过程&#xff1a;需求产生&#xff08;产品经理&#xff09;&#xff0c;需求文档&#xff0c;设计效果图…

怎样获取power shell 的全部可用命令?3/5(篇幅有点长,分成5份)

在power shell 窗口中&#xff0c;有一个获取全部可用命令的命令&#xff1a;get-command&#xff0c;获取到的命令有1640多个&#xff0c;够学习了吧&#xff1f;那么&#xff0c;power shell 命令有哪些类别呢&#xff1f; PowerShell命令可以分为以下几类&#xff1a; Cmd…

使用composer构建软件包时文件(夹)权限设置

在构建软件包的时候你可能会需要对包源内文件或文件夹的权限做出相应的调整&#xff0c;以确保软件包在部署到客户端后可以正常运行。在此之前我们先来了解一下Apple文件系统内文件或文件夹的权限设定。 常见的文件或文件夹会有Owner, Group, Everyone这三种类型的所有权&#…

经典文献阅读之--TwinLiteNet(可行驶区域和车道分割的高效轻量级模型)

0. 简介 对于自动驾驶来说语义分割是自动驾驶中理解周围环境的一项常见任务。可行驶区域分割和车道检测对于道路上安全且高效的导航尤为重要。为了满足自动驾驶汽车中可行驶区域和车道分割的高效轻量级&#xff0c;《TwinLiteNet: An Efficient and Lightweight Model for Dri…

反射助你无痛使用Semantic Kernel接入离线大模型

本文主要介绍如何使用 llama 的 server 部署离线大模型&#xff0c;并通过反射技术修改 Semantic Kernel 的 OpenAIClient 类&#xff0c;从而实现指定端点的功能。最后也推荐了一些学习 Semantic Kernel 的资料&#xff0c;希望能对你有所帮助。 封面图片&#xff1a; Dalle3 …

JVM篇--Java内存区域高频面试题

java内存区域 1 Java 堆空间及 GC&#xff1f; 首先我们要知道java堆空间的产生过程&#xff1a; 即当通过java命令启动java进程的时候&#xff0c;就会为它分配内存&#xff0c;而分配内存的一部分就会用于创建堆空间&#xff0c;而当程序中创建对象的时候 就会从堆空间来分…

图像处理-像素位置的一阶导数和二阶导数

图像处理-像素位置的一阶导数和二阶导数 空间卷积是一种图像处理中常用的技术&#xff0c;用于计算图像中每个像素位置的一阶导数和二阶导数。在这里将解释如何使用卷积操作来实现这些导数的计算。 一阶导数和二阶导数的性质&#xff1a; 一阶导数通常产生粗边缘&#xff1b…

redis原理(二)数据结构

redis可以存储键与5种不同数据结构类型之间的映射&#xff1a; String类型的底层实现只有一种数据结构&#xff0c;也就是动态字符串。而List、Hash、Set、ZSet都由两种底层数据结构实现。通常我们把这四种类型称为集合类型&#xff0c;它们的特点是一个键对应了一个集合的数据…

小程序系列--6.全局配置

一. 全局配置文件及常用的配置项 二、window 1. 小程序窗口的组成部分 2. 了解 window 节点常用的配置项 3. 设置导航栏的标题 4. 设置导航栏的背景色 5. 设置导航栏的标题颜色 6. 全局开启下拉刷新功能 7. 设置下拉刷新时窗口的背景色 8. 设置下拉刷新时 loading 的样…

【Python数据可视化】matplotlib之绘制高级图形:散点图、热力图、等值线图、极坐标图

文章传送门 Python 数据可视化matplotlib之绘制常用图形&#xff1a;折线图、柱状图&#xff08;条形图&#xff09;、饼图和直方图matplotlib之设置坐标&#xff1a;添加坐标轴名字、设置坐标范围、设置主次刻度、坐标轴文字旋转并标出坐标值matplotlib之增加图形内容&#x…

超声波清洗机真有用吗?眼镜党需注意!别被错误洗眼镜方法误导

超声波清洗机洗眼镜真的有用吗&#xff1f;眼镜党朋友一定要注意了&#xff0c;眼镜清洗可不能有一点马虎的哈&#xff01; 眼镜是很多人日常生活中不可或缺的用品&#xff0c;然而清洁眼镜却是一个让人头疼的问题。随着科技的发展&#xff0c;超声波清洗机作为一种新兴的清洁…

《WebKit 技术内幕》之二: HTML 网页和结构

第二章 HTML 网页和结构 HTML网页是利用HTML语言编写的文档&#xff0c;HTML是半结构化的数据表现方式&#xff0c;它的结构特征可以归纳为&#xff1a;树状结构、层次结构和框结构。 1.网页构成 1.1 基本元素和树状结构 HTML网页使用HTML语言撰写的文档&#xff0c;发展到今…

实战 | 某电商平台类目SKU数获取与可视化展示

一、项目背景 最近又及年底&#xff0c;各类分析与规划报告纷至沓来&#xff0c;于是接到了公司平台类目商品增长方向的分析需求&#xff0c;其中需要结合外部电商平台做对比。我选择了国内某电商平台作为比较对象&#xff0c;通过获取最细层级前台类目下的SKU数以及结构占比&…

免费分享一套PyQt6图书管理系统(附带完整开发视频教程) Python入门项目实战,果断收藏了~~

大家好&#xff0c;我是python222_小锋老师&#xff0c;最近写了一套PyQt6图书管理系统源码&#xff0c;附带完整开发视频教程&#xff0c;作为Python学习者的入门实战项目&#xff0c;带大家一起入门学习Python技术&#xff0c;感谢大家支持&#xff0c;特来分享下哈。 项目实…