IDEA遠(yuǎn)程部署調(diào)試Java應(yīng)用程序
[TOC]
基本概述
在工作中,我們可能會遇到本地?zé)o法連接開發(fā)環(huán)境數(shù)據(jù)庫等資源大咱,但又想在本地直接開發(fā)抱究、調(diào)試糖荒。
這時候就能通過IDEA
的Run on ...
功能實現(xiàn)靖苇。
其原理是通過SSH
連上遠(yuǎn)程服務(wù)器席噩,部署應(yīng)用到遠(yuǎn)程服務(wù)器后,本地連接上遠(yuǎn)程服務(wù)器部署的應(yīng)用贤壁。
<font color='red'>PS:這種操作方式比在遠(yuǎn)程服務(wù)器上搭建代理服務(wù)悼枢,安全性要高的多得多。</font>
準(zhǔn)備工作
遠(yuǎn)程服務(wù)器準(zhǔn)備
安裝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
# 可以看到已經(jīng)配置好了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 ~]#
項目準(zhǔn)備
創(chuàng)建一個SpringBoot項目
使用Spring Initializr創(chuàng)建一個SpringBoot項目脾拆,參考項目:springboot-remote-deploy-demo
創(chuàng)建一個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;
}
}
啟動應(yīng)用馒索,驗證結(jié)果
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:從如上步驟,可以看到已經(jīng)成功在本地執(zhí)行了名船,接下來就是要<font color='red'>讓他遠(yuǎn)程部署到服務(wù)器上绰上,并且可以調(diào)試</font>。
應(yīng)用配置
修改應(yīng)用配置
右鍵點擊SpringbootRemoteDeployDemoApplication
類旁邊的啟動符包帚,彈出選項框渔期,點擊Modify Run Configuration...
選項运吓,彈出界面如下圖
創(chuàng)建遠(yuǎn)程服務(wù)器
左鍵點擊Run on
選項框渴邦,彈出選項框,點擊SSH...
選項拘哨,彈出界面如下圖
輸入服務(wù)器地址Host
谋梭,用戶名Username
,點擊Next
按鈕倦青,跳轉(zhuǎn)界面如下圖
輸入密碼Password
(或者使用密鑰)瓮床,點擊Next
跳轉(zhuǎn)界面如下圖
這一步,主要是驗證是否能登錄上服務(wù)器产镐,以及服務(wù)器上基本環(huán)境是否安裝好隘庄,點擊Next
跳轉(zhuǎn)界面如下圖
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
都已經(jīng)設(shè)置好了癣亚,點擊Finish
返回之前的界面
PS:可以自己修改部署路徑之類的配置
保存應(yīng)用配置
可以看到遠(yuǎn)程服務(wù)器已經(jīng)配置好了丑掺,點擊OK
按鈕配置完成
驗證結(jié)果
本地驗證
點擊SpringbootRemoteDeployDemoApplication
的啟動按鈕,在啟動日志中可以看到已經(jīng)部署到服務(wù)器上述雾,同時也能看到本地端口63006
映射到了服務(wù)器的8080
端口街州。
$ curl http://localhost:63006/hello/world
hello world%
在本地訪問映射到服務(wù)器的端口63006
,也能正常訪問玻孟。
<font color='red'>PS:可以啟動唆缴,當(dāng)然也可以進行調(diào)試。</font>
服務(wù)器驗證
在遠(yuǎn)程服務(wù)器上黍翎,可以看到springboot-remote-deploy-demo
已經(jīng)被部署在/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 ~]#
參考文檔
分享并記錄所學(xué)所見