IDEA远程部署调试Java应用程序的详细流程

目录
  • 基本概述
  • 准备工作
    • 远程服务器准备
      • 安装JDK
      • 配置JAVA_HOME
    • 项目准备
      • 创建一个SpringBoot项目
      • 创建一个Controller类
      • 启动应用,验证结果
  • 应用配置
    • 修改应用配置
    • 创建远程服务器
    • 保存应用配置
  • 验证结果
    • 本地验证
    • 服务器验证
  • 参考文档

基本概述

在工作中,我们可能会遇到本地无法连接开发环境数据库等资源,但又想在本地直接开发、调试。

这时候就能通过IDEARun on ...功能实现。

其原理是通过SSH连上远程服务器,部署应用到远程服务器后,本地连接上远程服务器部署的应用。

PS:这种操作方式比在远程服务器上搭建代理服务,安全性要高的多得多。

准备工作

远程服务器准备

安装JDK

[root@switch-sz-service-test ~]# yum install -y java-1.8.0-openjdk-devel.x86_64

# 可以看到Java的版本是1.8
[root@switch-sz-service-test ~]# java -version
openjdk version "1.8.0_302"
OpenJDK Runtime Environment (build 1.8.0_302-b08)
OpenJDK 64-Bit Server VM (build 25.302-b08, mixed mode)

配置JAVA_HOME

# 可以看到JAVA_HOME是/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.302.b08-0.el8_4.x86_64
[root@switch-sz-service-test ~]# find / -name java
/etc/pki/ca-trust/extracted/java
/etc/pki/java
/etc/alternatives/java
/etc/java
/var/lib/alternatives/java
/usr/bin/java
/usr/lib/java
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.302.b08-0.el8_4.x86_64/jre/bin/java
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.302.b08-0.el8_4.x86_64/bin/java
/usr/lib/jvm/java
/usr/share/bash-completion/completions/java
/usr/share/java
[root@switch-sz-service-test ~]# ll /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.302.b08-0.el8_4.x86_64
total 180
-rw-r--r-- 1 root root   1522 Jul 22 01:18 ASSEMBLY_EXCEPTION
drwxr-xr-x 2 root root   4096 Oct  4 00:29 bin
drwxr-xr-x 3 root root    132 Oct  4 00:29 include
drwxr-xr-x 4 root root     95 Oct  4 00:29 jre
drwxr-xr-x 3 root root    144 Oct  4 00:29 lib
-rw-r--r-- 1 root root  19274 Jul 22 01:18 LICENSE
drwxr-xr-x 2 root root    204 Oct  4 00:29 tapset
-rw-r--r-- 1 root root 155003 Jul 22 01:18 THIRD_PARTY_README

# 配置JAVA_HOME
[root@switch-sz-service-test ~]# vim /etc/profile

# 在最后面添加上如下语句
JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.302.b08-0.el8_4.x86_64
export JAVA_HOME

# 可以看到已经配置好了JAVA_HOME了
[root@switch-sz-service-test ~]# source /etc/profile
[root@switch-sz-service-test ~]# echo $JAVA_HOME
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.302.b08-0.el8_4.x86_64
[root@switch-sz-service-test ~]# 

项目准备

创建一个SpringBoot项目

使用Spring Initializr创建一个SpringBoot项目,参考项目:springboot-remote-deploy-demo

创建一个Controller类

package com.switchvov.springboot.remote.deploy.demo.controller;

import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author switch
 * @since 2021/10/3
 */
@RestController
@RequestMapping("/hello")
@Slf4j
public class HelloController {
    @GetMapping("/{name}")
    public String hello(@PathVariable("name") String name) {
        String hello = "hello " + name;
        log.info(hello);
        return hello;
    }
}

启动应用,验证结果

package com.switchvov.springboot.remote.deploy.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SpringbootRemoteDeployDemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringbootRemoteDeployDemoApplication.class, args);
    }
}
$ curl http://127.0.0.1:8080/hello/world
hello world%

PS:从如上步骤,可以看到已经成功在本地执行了,接下来就是要让他远程部署到服务器上,并且可以调试。

应用配置

修改应用配置

右键点击SpringbootRemoteDeployDemoApplication类旁边的启动符,弹出选项框,点击Modify Run Configuration...选项,弹出界面如下图

创建远程服务器

左键点击Run on选项框,弹出选项框,点击SSH...选项,弹出界面如下图

输入服务器地址Host,用户名Username,点击Next按钮,跳转界面如下图

输入密码Password(或者使用密钥),点击Next跳转界面如下图

这一步,主要是验证是否能登录上服务器,以及服务器上基本环境是否安装好,点击Next跳转界面如下图

Successfully connected to root@120.78.218.44:22

> pwd
/root
Command finished with exit code 0

Checking rsync connection...
/usr/bin/rsync -n -e "ssh -p 22 " root@120.78.218.44:

root@120.78.218.44's password: 

dr-xr-x---         190 2021/10/04 00:56:11 .

Process finished with exit code 0

Starting introspection for Java...
> echo ${SHELL}
/bin/bash
Command finished with exit code 0
> echo ${JAVA_HOME}
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.302.b08-0.el8_4.x86_64
Command finished with exit code 0
> java -version
openjdk version "1.8.0_302"
OpenJDK Runtime Environment (build 1.8.0_302-b08)
OpenJDK 64-Bit Server VM (build 25.302-b08, mixed mode)
Command finished with exit code 0

Introspection completed

可以看到项目部署路径Project path on target,JDK Home路径JDK home path以及JDK版本JDK version都已经设置好了,点击Finish返回之前的界面

PS:可以自己修改部署路径之类的配置

保存应用配置

可以看到远程服务器已经配置好了,点击OK按钮配置完成

验证结果

本地验证

点击SpringbootRemoteDeployDemoApplication的启动按钮,在启动日志中可以看到已经部署到服务器上,同时也能看到本地端口63006映射到了服务器的8080端口。

$ curl http://localhost:63006/hello/world
hello world%

在本地访问映射到服务器的端口63006,也能正常访问。

PS:可以启动,当然也可以进行调试。

服务器验证

在远程服务器上,可以看到springboot-remote-deploy-demo已经被部署在/root路径下了,且访问http://127.0.0.1:8080/hello/world会正确返回hello world

[root@switch-sz-service-test ~]# pwd
/root
[root@switch-sz-service-test ~]# ll
total 4
drwxr-xr-x 38 root root 4096 Oct  4 01:08 springboot-remote-deploy-demo
[root@switch-sz-service-test ~]# curl http://127.0.0.1:8080/hello/world
hello world[root@switch-sz-service-test ~]#

参考文档

Spring Initializr

springboot-remote-deploy-demo

到此这篇关于IDEA远程部署调试Java应用程序的文章就介绍到这了,更多相关IDEA远程部署调试Java应用程序内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 利用Intellij Idea连接远程服务器实现远程上传部署功能

    如果我们在Intellij Idea中开发好程序,需要部署到远程SSH服务器运行,我们可以使用某些SSH软件的rz功能,也可以使用专用的FTP.SFTP上传工具.其实我们可以直接在Idea软件内来配置部署,不但不用切换软件,也不用翻找本地打包的位置,随时i修改,随时更新. 一.Tools->Deployment->Configuration 二.点击左上角"+"号,新建一个SFTP,输入一个名称,比如"StormServer" 三.填写远程SSH服务器信

  • IDEA连接远程服务器Docker部署Spring Boot项目的详细教程

    开始前的准备工作 拥有一台云服务器,我的是腾讯云服务器(CentOS7) 腾讯云服务器安装Docker,我的版本是Docker 19.03.9,关于安装和配置镜像加速器可以查阅我的另一篇博文:https://www.jb51.net/article/188048.htm,其中有详细的讲解 Windows上有安装IDEA 正式开始工作 第一步:配置Docker,开启远程访问(注:仅供学习参考,实际生产环境万万不可,会产生很大的安全风险),默认端口是2375,也可以修改为其他端口 1.修改/lib/

  • java通过Idea远程一键部署springboot到Docker详解

    一.开发前准备 1. Docker的安装可以参考https://docs.docker.com/install/ 2. 配置docker远程连接端口 vi /usr/lib/systemd/system/docker.service 找到 ExecStart,在最后面添加 -H tcp://0.0.0.0:2375,如下图所示 3. 重启docker systemctl daemon-reload systemctl start docker 4. 开放端口 firewall-cmd --zon

  • idea远程debug调试部署在tomcat上项目

    目录 一.IDEA添加Remote 二.服务器配置 三.开始debug调试 本机场景:spring boot项目部署在腾讯云服务器的tomcat里.注意:要保证本地的代码与服务器上部署的代码完全一致 一.IDEA添加Remote   第一步:打开IDEA上方的Edit Configurations   第二步:点击+号选择Remote   第三步:配置连接参数.   Command line arguments for remote JVM:-agentlib:jdwp=transport=dt

  • IDEA远程部署调试Java应用程序的详细流程

    目录 基本概述 准备工作 远程服务器准备 安装JDK 配置JAVA_HOME 项目准备 创建一个SpringBoot项目 创建一个Controller类 启动应用,验证结果 应用配置 修改应用配置 创建远程服务器 保存应用配置 验证结果 本地验证 服务器验证 参考文档 基本概述 在工作中,我们可能会遇到本地无法连接开发环境数据库等资源,但又想在本地直接开发.调试. 这时候就能通过IDEA的Run on ...功能实现. 其原理是通过SSH连上远程服务器,部署应用到远程服务器后,本地连接上远程服务

  • vscode调试gstreamer源码的详细流程

    目录 1. 安装vscode插件 2. 配置文件修改 2.1 自定义c_cpp_properties.json 2.2 自定义tasks.json文件 2.3 Debug 3. Makefile环境下 4. Python调试 5. 调试gstreamer源码 下载gstreamer源码 编译源码 修改Makefile 输入断点 总结 1. 安装vscode插件 C/C++ C/C++ Extension 2. 配置文件修改 vscode中每个项目都有一套配置文件集合,位于.vscode目录下,其

  • 如何使用JCTools实现Java并发程序

    概述 在本文中,我们将介绍JCTools(Java并发工具)库. 简单地说,这提供了许多适用于多线程环境的实用数据结构. 非阻塞算法 传统上,在可变共享状态下工作的多线程代码使用锁来确保数据一致性和发布(一个线程所做的更改对另一个线程可见). 这种方法有许多缺点: 线程在试图获取锁时可能会被阻塞,在另一个线程的操作完成之前不会取得任何进展-这有效地防止了并行性 锁争用越重,JVM处理调度线程.管理争用和等待线程队列的时间就越多,实际工作就越少 如果涉及多个锁,并且它们以错误的顺序获取/释放,则可

  • java进行远程部署与调试及原理详解

    这篇文章主要介绍了java进行远程部署与调试及原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 远程调试,特别是当你在本地开发的时候,你需要调试服务器上的程序时,远程调试就显得非常有用. JAVA 支持调试功能,本身提供了一个简单的调试工具JDB,支持设置断点及线程级的调试同时,不同的JVM通过接口的协议联系,本地的Java文件在远程JVM建立联系和通信.此篇是Intellij IDEA远程调试的教程汇总和原理解释,知其然而又知其所以然.

  • 在docker中部署tomcat并且部署java应用程序的步骤详解

    先给大家简单说下Docker的概念 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何接口. 1.先说如何在docker中部署tomcat 第一步:root用户登录在系统根目录下创建文件夹tomcat7,命令如:mkdir tomcat7,并且切换到该目录下:cd tomcat7: 第二步:创建Dockerfile,命令如:touch Docker

  • 远程debug调试入门

    目录 1.远程DEBUG的必要性 2,IDEA构建SpringBoot测试Demo 3,测试Demo项目配置支持远程调试 4,IDEA打包jar 5,启动jar并且带启动参数支持远程调试 6,IDEA远程DEBUG配置 1,启动项下拉,选择 Edit Configurations...编辑配置 2,点击+,选择Remote,添加远程DEBUG配置 3,添加远程DEBUG配置项,Host和Port,配置后,点击Apply和OK按钮 7,IDEA远程DEBUG测试 1,打测试断点 2,选择远程deb

  • 因不会远程debug调试我被项目经理嘲笑了

    目录 1,远程DEBUG的必要性 2,IDEA构建SpringBoot测试Demo 3,测试Demo项目配置支持远程调试 4,IDEA打包jar 5,启动jar并且带启动参数支持远程调试 6,IDEA远程DEBUG配置 7,IDEA远程DEBUG测试 8,eclipse远程DEBUG实现 9,打war包方式配置远程DEBUG 10,远程debug视频教程+文档+源码下载 大家好,我是曹尼玛,刚从培训机构毕业,去一家单位上班一周了- 这一周项目经理让我熟悉了项目业务,架构和设计,不算难,凭借我培训

  • 详解如何通过tomcat的ManagerServlet远程部署项目

    介绍 之前在邮政实习时,leader让我阅读tomcat的源代码,尝试自己实现远程部署项目的功能,于是便有了这此实践. 在Tomact中有一个Manager应用程序,它是用来管理已经部署的web应用程序,在这个应用程序中,ManagerServlet是他的主servlet,通过它我们可以获取tomcat的部分指标,远程管理web应用程序,不过这个功能会受到web应用程序部署中安全约束的保护. 当你请求ManagerServlet时,它会检查getPathInfo()返回的值以及相关的查询参数,以

  • Hadoop源码分析四远程debug调试

    1. hadoop远程debug 从文档(3)中可以知道hadoop启动服务的时候最终都是通过java命令来启动的,其本质是一个java程序.在研究源码的时候debug是一种很重要的工具,但是hadoop是编译好了的代码,直接在liunx中运行的,无法象普通的程序一样可以直接在eclipse之类的工具中直接debug运行. 对于上述情况java提供了一种远程debug的方式. 这种方式需要在java程序启动的时候添加以下参数: -agentlib:jdwp=transport=dt_socket

随机推荐