使用 Intellij 在远程服务器上部署/调试 java 代码

Posted

技术标签:

【中文标题】使用 Intellij 在远程服务器上部署/调试 java 代码【英文标题】:deploy/debug java code on a remote server using Intellij 【发布时间】:2017-07-11 20:28:57 【问题描述】:

我想在远程服务器上运行我的 java 代码以获得更快的速度(服务器非常强大)。我想要的是将我的 Intellij 连接到该远程服务器并运行我的代码。但我仍想在我的本地机器(即我的笔记本电脑)上使用 IntelliJ。

我在 IntelliJ 中找到了一个配置部分,位于 Default Setting->Build-executation-deployment-> Deployment 中,在那里我可以设置远程服务器的地址以及用户名和密码。但我不知道下一步该做什么。

【问题讨论】:

您是指带有一些 Java EE 容器的远程 Web 服务器,还是想在那里运行您的纯 Java 应用程序?第一种情况看@arghtype的回答,否则我的回答更合适。 我的意思是在远程服务器上运行纯 java。在我的笔记本电脑上运行我的代码需要很长时间,这就是为什么我需要在我们的服务器上运行它,这是一台超级强大的计算机。我想要的是使用安装在我的笔记本电脑上的 Intellij 运行我的代码,并且代码实际上是在该服务器上运行的。 谢谢,那么请检查我的回答,这正是您的情况。 【参考方案1】:

如果您需要调试在远程服务器上运行的 Web 应用程序,您可以这样做:

将您的代码部署到远程服务器。有几种方法可以做到:

通过集成 IDEA 与您的应用程序服务器。进入Settings > Build, Execution, Deployments > Application Servers 并在那里添加您的应用程序服务器。您可以稍后将其用作部署目标。见documentation。 通过构建工具进行集成,例如,maven 具有用于与许多应用服务器集成的插件。当您的构建过程很复杂时,这很有效。 手动 - 简单地将构建工件复制到目标应用服务器机器并手动部署。

以调试模式连接到服务器。 为此,您需要在 IDEA 中创建单独的运行/调试配置。如果您有企业版,您可以为您的服务器选择配置模板(例如 Tomcat 服务器)并从您的 Application Servers 列表中选择服务器。在 Community Edition 中,您必须改用默认的 Remote 配置。

设置完成后,您的工作流程应如下所示:

    对代码进行更改; 将其重新部署到服务器中(必要时重新启动); 运行调试配置; 访问服务器上的应用程序(例如通过浏览器)以触发执行所需的代码; 调试

【讨论】:

【参考方案2】:

phpStorm 有一个step by step deployment guide,但对于 IntelliJ IDEA 来说几乎是一样的。

以下是通过 SFTP 将 .jar 文件从 artifact 子目录部署到远程服务器到 /home/serge/artifact 目录的示例配置:

我会configure the artifact to produce the executable jar。然后调整部署配置,将jar部署到远程服务器。或者你可以使用 Maven/Gradle 来做同样的事情。

接下来,你可以配置Remote SSH external tool在服务器上运行jar(通过java -jar jarname.jar

通过Tools 在远程服务器上运行 | External Tools | hello:

要使进程自动化,为工件启用Include in project build,在Tools 中启用Automatic upload | Deployment 并在Tools 中启用uploading of external changes | Deployment | Options.

要调试代码,请使用Remote Debug configuration。复制调试所需的 JVM 选项并调整远程 SSH 外部工具中的选项,以便应用以调试模式启动并接受连接(确保调整防火墙规则以允许指定端口上的连接)。

remote debug configuration debug external tool configuration proof of working

【讨论】:

如您所说,该指南适用于 Php。由于这个问题可能也适用于许多其他用户,如果您能最终确定您对 java 的答案,以便其他用户也可以得到他们的答案,我将不胜感激。那么,Intellij 的具体流程是什么? 我已经用 IntelliJ IDEA 的真实示例更新了答案,通过 SFTP 部署并使用 SSH 外部工具运行。 @HimanAB 还有什么我可以补充的,以便您接受答案吗? 我目前无法访问我的代码,所以老实说我现在无法测试它是否有效。我今晚回家后肯定会这样做。谢谢 美丽的解释。

以上是关于使用 Intellij 在远程服务器上部署/调试 java 代码的主要内容,如果未能解决你的问题,请参考以下文章

图文并茂教你学会使用 IntelliJ IDEA 进行远程调试

[JavaWeb]_[初级]_[使用IntelliJ IDEA进行远程Tomcat调试]

[JavaWeb]_[初级]_[使用IntelliJ IDEA进行远程Tomcat调试]

IntelliJ IDEA服务器远程调试报Connection refused

Idea IntelliJ远程调试教程

使用intellij远程调试节点js服务器