IDEA遠(yuǎn)程部署調(diào)試Java應(yīng)用程序的詳細(xì)流程
基本概述
在工作中,我們可能會(huì)遇到本地?zé)o法連接開(kāi)發(fā)環(huán)境數(shù)據(jù)庫(kù)等資源,但又想在本地直接開(kāi)發(fā)、調(diào)試。
這時(shí)候就能通過(guò)IDEA
的Run on ...
功能實(shí)現(xiàn)。
其原理是通過(guò)SSH
連上遠(yuǎn)程服務(wù)器,部署應(yīng)用到遠(yuǎn)程服務(wù)器后,本地連接上遠(yuǎn)程服務(wù)器部署的應(yīng)用。
PS:這種操作方式比在遠(yuǎn)程服務(wù)器上搭建代理服務(wù),安全性要高的多得多。
準(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 # 在最后面添加上如下語(yǔ)句 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 ~]#
項(xiàng)目準(zhǔn)備
創(chuàng)建一個(gè)SpringBoot項(xiàng)目
使用Spring Initializr創(chuàng)建一個(gè)SpringBoot項(xiàng)目,參考項(xiàng)目:springboot-remote-deploy-demo
創(chuàng)建一個(gè)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; } }
啟動(dòng)應(yīng)用,驗(yàn)證結(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í)行了,接下來(lái)就是要讓他遠(yuǎn)程部署到服務(wù)器上,并且可以調(diào)試。
應(yīng)用配置
修改應(yīng)用配置
右鍵點(diǎn)擊SpringbootRemoteDeployDemoApplication
類旁邊的啟動(dòng)符,彈出選項(xiàng)框,點(diǎn)擊Modify Run Configuration...
選項(xiàng),彈出界面如下圖
創(chuàng)建遠(yuǎn)程服務(wù)器
左鍵點(diǎn)擊Run on
選項(xiàng)框,彈出選項(xiàng)框,點(diǎn)擊SSH...
選項(xiàng),彈出界面如下圖
輸入服務(wù)器地址Host
,用戶名Username
,點(diǎn)擊Next
按鈕,跳轉(zhuǎn)界面如下圖
輸入密碼Password
(或者使用密鑰),點(diǎn)擊Next
跳轉(zhuǎn)界面如下圖
這一步,主要是驗(yàn)證是否能登錄上服務(wù)器,以及服務(wù)器上基本環(huán)境是否安裝好,點(diǎ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
可以看到項(xiàng)目部署路徑Project path on target
,JDK Home路徑JDK home path
以及JDK版本JDK version
都已經(jīng)設(shè)置好了,點(diǎn)擊Finish
返回之前的界面
PS:可以自己修改部署路徑之類的配置
保存應(yīng)用配置
可以看到遠(yuǎn)程服務(wù)器已經(jīng)配置好了,點(diǎn)擊OK
按鈕配置完成
驗(yàn)證結(jié)果
本地驗(yàn)證
點(diǎn)擊SpringbootRemoteDeployDemoApplication
的啟動(dòng)按鈕,在啟動(dòng)日志中可以看到已經(jīng)部署到服務(wù)器上,同時(shí)也能看到本地端口63006
映射到了服務(wù)器的8080
端口。
$ curl http://localhost:63006/hello/world hello world%
在本地訪問(wèn)映射到服務(wù)器的端口63006
,也能正常訪問(wèn)。
PS:可以啟動(dòng),當(dāng)然也可以進(jìn)行調(diào)試。
服務(wù)器驗(yàn)證
在遠(yuǎn)程服務(wù)器上,可以看到springboot-remote-deploy-demo
已經(jīng)被部署在/root
路徑下了,且訪問(wèn)http://127.0.0.1:8080/hello/world
會(huì)正確返回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 ~]#
參考文檔
到此這篇關(guān)于IDEA遠(yuǎn)程部署調(diào)試Java應(yīng)用程序的文章就介紹到這了,更多相關(guān)IDEA遠(yuǎn)程部署調(diào)試Java應(yīng)用程序內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java并發(fā)編程示例(二):獲取和設(shè)置線程信息
這篇文章主要介紹了Java并發(fā)編程示例(二):獲取和設(shè)置線程信息,本文是系列文章的第二篇,本文著重講解Thread類的幾個(gè)重要屬性,需要的朋友可以參考下2014-12-12MyBatis SpringMVC整合實(shí)現(xiàn)步驟詳解
這篇文章主要介紹了MyBatis SpringMVC整合實(shí)現(xiàn)步驟詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08Spring 與 JDK 線程池的簡(jiǎn)單使用示例詳解
這篇文章主要介紹了Spring 與 JDK 線程池的簡(jiǎn)單使用,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-09-09Java concurrency線程池之Callable和Future_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要為大家詳細(xì)介紹了Java concurrency線程池之Callable和Future,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06IDEA?mybatis?Mapper.xml報(bào)紅的最新解決辦法
這篇文章主要介紹了IDEA?mybatis?Mapper.xml報(bào)紅的解決辦法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-04-04一文詳解Java如何優(yōu)雅地判斷對(duì)象是否為空
這篇文章主要給大家介紹了關(guān)于Java如何優(yōu)雅地判斷對(duì)象是否為空的相關(guān)資料,在Java中可以使用以下方法優(yōu)雅地判斷一個(gè)對(duì)象是否為空,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-04-04一文搞懂Java常見(jiàn)的三種代理模式(靜態(tài)代理、動(dòng)態(tài)代理和cglib代理)
Java中常見(jiàn)的三種代理模式是靜態(tài)代理模式、動(dòng)態(tài)代理模式和CGLIB代理模式,本文就來(lái)給大家詳細(xì)的講解一下這三種代理模式,感興趣的小伙伴跟著小編一起來(lái)看看吧2023-08-08Spring Cloud Consul實(shí)現(xiàn)選舉機(jī)制的代碼工程
Spring Cloud Consul 是 Spring Cloud 提供的對(duì) HashiCorp Consul 的支持,它是一種基于服務(wù)網(wǎng)格的工具,用于實(shí)現(xiàn)服務(wù)注冊(cè)、發(fā)現(xiàn)、配置管理和健康檢查,本文給大家介紹了如何用Spring Cloud Consul實(shí)現(xiàn)選舉機(jī)制,需要的朋友可以參考下2024-11-11