笔者的运行环境:
在 IntelliJ IDEA 中进行远程调试与远程部署是不同的。
远程调试指的是事先以其它方法将 Java 应用打包并放在远程服务器中,然后以调试模式运行该 Java 应用,最后使用本地的 IntelliJ IDEA 进行远程连接该应用。
远程部署指的是直接使用本地的 IntelliJ IDEA 将本地的 Java 应用打包、部署到远程服务器,并远程运行该应用。
可以看出,远程部署要比远程调试方便很多。
关于在 IntelliJ IDEA 中远程调试 Java 程序,可见笔者的另一篇博客:
在 IntelliJ IDEA 中远程调试 Java 程序:
https://blog.csdn.net/wangpaiblog/article/details/120376176
相对于远程调试,远程部署仅仅提供了自动打包、部署、运行的功能。远程连接的原理其实是一样的。这里以 Spring Boot 为例,演示一下如何将 Spring Boot 项目远程部署到服务器。
首先,读者需要知道如何查看远程服务器的 IP。关于这方面的内容,可见笔者的另一篇博客:
如何在 Windows 主机上访问本地局域网中的 Linux 主机:
https://blog.csdn.net/wangpaiblog/article/details/120052152
为了方便说明,笔者在 Spring 官网网站上下载了一个 Spring Boot 的 Demo 项目。
官方下载网址:https://start.spring.io/

现在开始简单改造一个这个项目。编写一个简单的控制器等等。这些内容过于简单,这里不作详细介绍。
server:
port: 12345
spring:
application:
name: remote_deployment
management:
endpoints:
web:
exposure:
# 公开所有端点
include: '*'
/**
* @since 2023-7-10
*/
@Controller
@RequestMapping("/remote_deployment")
public class RemoteDeploymentController {
/**
* @since 2023-7-10
*/
@GetMapping("/test")
@ResponseBody
public String remoteDeploymentTest(String para) {
System.out.println(para);
return para;
}
}
使用 IntelliJ IDEA 打开该项目,IntelliJ IDEA 应该就会自动生成它的一些配置。如下图操作,填入远程服务器的一些配置信息。

这里选择 SSH 协议来连接。
【注意】




上面的配置完成之后,会在配置中显示出来。不过要注意,下面显示的路径是此 Spring Boot 项目的上传路径,而上面配置的路径是这个 Spring Boot 项目的所有依赖的上传路径。

不过,配置完成不要先急着运行。很多 Linux 系统上面都有防火墙,默认会阻止所有的远程访问。对于笔者的 RedHat Enterprise Linux 9 x86_64,默认的防火墙为 firewalld,而不是 iptables。(很多早期的 Linux,使用的防火墙是 iptables,但 RedHat 从 RHEL 7 开始就用 firewalld 取代了 iptables。)
一个偷懒的方法就是,永久地关闭防火墙。关闭的方法如下:
另一个方法是,在防火墙中永久开放上述 Spring Boot 应用的端口号。开放的方法如下:
单独开放完端口 5005 之后,可以输入以下命令查看是否生效:
Spring Boot 应用的端口号/tcp
实际上,也可以输入以下命令查看所有开放的端口:
现在,就可以尝试运行这个 Spring Boot 项目了。运行时,IntelliJ IDEA 会在上面填写的服务器的部署目录下上传 Spring Boot 的所有依赖 JAR 包。


运行之后,需要对接口进行测试。可以选择用 Postman 来测试这个 Spring Boot 应用。


可以看出,上面的测试很成功。但是,IntelliJ IDEA 远程部署的能力还不只如此。它还支持直接打断点和以调试的方式运行此应用。
以这个方式运行实际上和前面介绍的远程调试没有区别,但这比远程调试方便太多。

已上传至 GitHub 中,可免费下载:https://github.com/wangpaiblog/20230912-remote_deployment