IDEA遠(yuǎn)程部署調(diào)試Java應(yīng)用程序

IDEA遠(yuǎn)程部署調(diào)試Java應(yīng)用程序

[TOC]

基本概述

在工作中,我們可能會遇到本地?zé)o法連接開發(fā)環(huán)境數(shù)據(jù)庫等資源大咱,但又想在本地直接開發(fā)抱究、調(diào)試糖荒。

這時候就能通過IDEARun 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

project_structure

創(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)用配置

modify_run_configuration

右鍵點擊SpringbootRemoteDeployDemoApplication類旁邊的啟動符包帚,彈出選項框渔期,點擊Modify Run Configuration...選項运吓,彈出界面如下圖

創(chuàng)建遠(yuǎn)程服務(wù)器

create_ssh_targets

左鍵點擊Run on選項框渴邦,彈出選項框,點擊SSH...選項拘哨,彈出界面如下圖

create_ssh_1

輸入服務(wù)器地址Host谋梭,用戶名Username,點擊Next按鈕倦青,跳轉(zhuǎn)界面如下圖

create_ssh_2

輸入密碼Password(或者使用密鑰)瓮床,點擊Next跳轉(zhuǎn)界面如下圖

create_ssh_3

這一步,主要是驗證是否能登錄上服務(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
create_ssh_4

可以看到項目部署路徑Project path on target,JDK Home路徑JDK home path以及JDK版本JDK version都已經(jīng)設(shè)置好了癣亚,點擊Finish返回之前的界面

PS:可以自己修改部署路徑之類的配置

保存應(yīng)用配置

finish_run_configuration

可以看到遠(yuǎn)程服務(wù)器已經(jīng)配置好了丑掺,點擊OK按鈕配置完成

驗證結(jié)果

本地驗證

start_webapp

點擊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é)所見

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末匣掸,一起剝皮案震驚了整個濱河市趟紊,隨后出現(xiàn)的幾起案子质礼,更是在濱河造成了極大的恐慌,老刑警劉巖织阳,帶你破解...
    沈念sama閱讀 221,888評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件眶蕉,死亡現(xiàn)場離奇詭異,居然都是意外死亡唧躲,警方通過查閱死者的電腦和手機造挽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,677評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來弄痹,“玉大人饭入,你說我怎么就攤上這事「卣妫” “怎么了谐丢?”我有些...
    開封第一講書人閱讀 168,386評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長蚓让。 經(jīng)常有香客問我乾忱,道長,這世上最難降的妖魔是什么历极? 我笑而不...
    開封第一講書人閱讀 59,726評論 1 297
  • 正文 為了忘掉前任窄瘟,我火速辦了婚禮,結(jié)果婚禮上趟卸,老公的妹妹穿的比我還像新娘蹄葱。我一直安慰自己,他們只是感情好锄列,可當(dāng)我...
    茶點故事閱讀 68,729評論 6 397
  • 文/花漫 我一把揭開白布图云。 她就那樣靜靜地躺著,像睡著了一般邻邮。 火紅的嫁衣襯著肌膚如雪竣况。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,337評論 1 310
  • 那天饶囚,我揣著相機與錄音帕翻,去河邊找鬼。 笑死萝风,一個胖子當(dāng)著我的面吹牛嘀掸,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播规惰,決...
    沈念sama閱讀 40,902評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼睬塌,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起揩晴,我...
    開封第一講書人閱讀 39,807評論 0 276
  • 序言:老撾萬榮一對情侶失蹤勋陪,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后硫兰,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體诅愚,經(jīng)...
    沈念sama閱讀 46,349評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,439評論 3 340
  • 正文 我和宋清朗相戀三年劫映,在試婚紗的時候發(fā)現(xiàn)自己被綠了违孝。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,567評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡泳赋,死狀恐怖雌桑,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情祖今,我是刑警寧澤校坑,帶...
    沈念sama閱讀 36,242評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站千诬,受9級特大地震影響耍目,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜大渤,卻給世界環(huán)境...
    茶點故事閱讀 41,933評論 3 334
  • 文/蒙蒙 一制妄、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧泵三,春花似錦、人聲如沸衔掸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,420評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽敞映。三九已至较曼,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間振愿,已是汗流浹背捷犹。 一陣腳步聲響...
    開封第一講書人閱讀 33,531評論 1 272
  • 我被黑心中介騙來泰國打工砸喻, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留贺拣,地道東北人捷兰。 一個月前我還...
    沈念sama閱讀 48,995評論 3 377
  • 正文 我出身青樓每庆,卻偏偏與公主長得像癌蓖,于是被迫代替她去往敵國和親行冰。 傳聞我的和親對象是個殘疾皇子堪嫂,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,585評論 2 359

推薦閱讀更多精彩內(nèi)容