【问题标题】:deploy/debug java code on a remote server using Intellij使用 Intellij 在远程服务器上部署/调试 java 代码
【发布时间】:2023-03-14 02:48:01
【问题描述】:

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

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

【问题讨论】:

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

标签: java debugging intellij-idea remote-access remote-debugging


【解决方案1】:

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

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

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

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

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

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

【讨论】:

    【解决方案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 外部工具中的选项,以便应用以调试模式启动并接受连接(确保调整防火墙规则以允许指定端口上的连接)。

    【讨论】:

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