IDEA远程部署调试Java应用[TOC]基本概述在工作中,我们可能会遇到本地无法连接的开发环境数据库等资源,却想直接在本地进行开发调试。这时候可以通过IDEA的Runon...功能来实现。原理是通过SSH连接远程服务器,将应用部署到远程服务器上,然后在本地连接部署在远程服务器上的应用。PS:这种操作方式比在远程服务器上搭建代理服务要安全得多。Preparation远程服务器准备安装JDK[root@switch-sz-service-test~]#yuminstall-yjava-1.8.0-openjdk-devel.x86_64#可以看到Java版本是1.8[root@switch-sz-service-test~]#java-versionopenjdkversion"1.8.0_302"OpenJDKRuntimeEnvironment(build1.8.0_302-b08)OpenJDK64-BitServerVM(build25.302-b08,mixedmode)配置JAVA_HOME#OK看到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/-namejava/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_64total180-rw-r--r--1rootroot1522Jul2201:18ASSEMBLY_EXCEPTIONdrwxr-xr-x2rootroot4096Oct400:29bindrwxr-xr-x3rootroot132Oct400:29includedrwxr-xr-x4rootroot95Oct400:29jredrwxr-xr-x3rootroot144Oct400:29lib-rw-r--r--1rootroot19274Jul2201:18LICENSEdrwxr-xr-x2rootroot204Oct400:29tapset-rw-r--r--1rootroot155003Jul2201:18THIRD_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_64exportJAVA_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项目使用SpringInitializr创建一个SpringBoot项目,参考项目:springboot-remote-deploy-demo创建一个Controller类包com.switchvov.springboot.remote.deploy.demo.controller;importlombok.extern.slf4j.Slf4j;导入组织.springframework.web.bind.annotation.GetMapping;导入org.springframework.web.bind.annotation.PathVariable;导入org.springframework.web.bind.annotation.RequestMapping;导入org.springframework.web.bind.annotation.RestController;/***@author开关*@since2021/10/3*/@RestController@RequestMapping("/hello")@Slf4jpublicclassHelloController{@GetMapping("/{name}")publicStringhello(@PathVariable("name")Stringname){Stringhello="你好"+姓名;日志信息(你好);回复你好;}}启动应用,验证结果包main(String[]args){SpringApplication.run(SpringbootRemoteDeployDemoApplication.class,args);}}$curlhttp://127.0.0.1:8080hello/worldhelloworld%PS:从上面的步骤可以看出已经在本地执行成功了,接下来就是<fontcolor='red'>让他远程部署到服务器调试应用配置修改应用配置右击SpringbootRemoteDeployDemoApplication类旁边的启动符号,弹出选项框,点击ModifyRunConfiguration...选项,弹出界面如下图CreatearemoteserverLeft-点击Runon选项框,弹出选项框,点击SSH...Options,弹出如下图界面,输入服务器地址Host,用户名Username,点击Next按钮,输入password在如下图所示的跳转界面中设置密码(或使用密钥),点击下一步跳转到如下图所示界面。这一步主要是验证是否登录服务器,检查服务器上的基础环境是否安装。点击Next,跳转到下图所示界面。成功连接到root@120.78.218.44:22>pwd/rootCommand完成,退出代码为0Checkingrsyncconnection.../usr/bin/rsync-n-e"ssh-p22"root@120.78.218.44:root@120.78。218.44的密码:dr-xr-x---1902021/10/0400:56:11.Processfinishedwithexitcode0StartingintrospectionforJava...>echo${SHELL}/bin/bashCommandfinishedwithexitcode0>echo${JAVA_HOME}/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.302.b08-0.el8_4.x86_64Commandfinishedwithexitcode0>java-versionopenjdkversion"1.8.0_302"OpenJDKRuntimeEnvironment(build1.8.0_302-b08)OpenJDK64-BitServerVM(build25.302-b08,mixedmode)Commandfinishedcodewithexit0Introspectionco完成后可以看到项目部署路径Projectpathontarget、JDKHome路径JDKhome路径和JDK版本JDK版本已经设置完成,点击Finish返回之前的界面PS:可以修改部署路径等配置保存应用配置看到远程服务器已经配置完成,点击确定按钮进行配置,完成验证结果。本地验证点击SpringbootRemoteDeployDemoApplication的启动按钮。在启动日志中可以看到已经部署到服务器上,也可以看到本地63006端口映射到了服务器的8080端口$curlhttp://localhost:63006/hello/worldhelloworld%本地映射到服务器的63006端口,也可以正常访问。PS:可以启动,当然也可以调试。服务器验证在远程服务器上,可以看到springboot-remote-deploy-demo已经部署在/root路径下,访问http://127.0.0.1:8080/hello/world会正确返回你好世界。[root@switch-sz-service-test~]#pwd/root[root@switch-sz-service-test~]#lltotal4drwxr-xr-x38rootroot4096Oct401:08springboot-remote-deploy-demo[root@switch-sz-service-test~]#curlhttp://127.0.0.1:8080/hello/worldhelloworld[root@switch-sz-service-test~]#参考文档SpringInitializrspringboot-remote-deploy-demo分享和记录你学到的东西