远程开发允许您在瘦客户端上使用IDE界面,同时具有强大的远程主机来检查和加载项目、索引、分析、构建、运行、调试和测试代码。

远程主机是托管源代码并运行无头CLion实例的物理(Linux)或虚拟机。瘦客户端,例如笔记本电脑,连接到主机并透明地提供对所有IDE功能的完全访问权限。

架构和定义

1.png

为了更好地理解这个架构的各个部分,您需要熟悉以下定义:

工作流程

远程开发与瘦客户端有两种主要的工作流程:

  • 服务器到客户端流程:当组织首次设置一个远程无头服务器,获得一个链接(定制或非定制),然后您可以在客户端(例如,您的笔记本电脑)上使用该链接连接到可用服务器。
  • 客户端到服务器流程:当您从客户端UI使用SSH或其他连接设置来设置和安装远程服务器时。

手动连接到手动启动的远程IDE中的远程项目(服务器到客户端流程)

如果您已经在远程服务器上安装了CLion,您可以手动启动它并连接到在该IDE中启动的远程项目。这与从JetBrains Gateway中的方式相同。

如果您的公司有自定义的编排,或者您的远程IDE在其端口上自动启动,可以使用此方法。

该过程可以描述如下:

  1. 在远程IDE中启动一个后端项目。
  2. 选择后端生成的连接链接之一。
  3. 在本地机器上打开该链接。

运行远程IDE的主要脚本是remote-dev-server.sh,位于解压后的IDE的bin子目录中。

如果是由JetBrains Gateway先前安装的后端,路径默认为/home/your_system_user/.cache/JetBrains/RemoteDev/dist/

有关更多信息和可用参数,请运行remote-dev-server.sh --help

请注意,连接绑定到特定项目。要连接到另一个远程项目,您需要配置新的连接。

连接到远程IDE

  1. 确保您已经在本地机器上下载并安装了JetBrains Gateway或带有此捆绑插件的IDE。
  2. 确保您可以通过SSH连接到远程机器并在其上运行CLion IDE。
  3. 在远程服务器的终端中,运行以下命令:

    remote-dev-server.sh run /path_to_project/ --ssh-link-host host_server_address
    --ssh-link-user remote_side_user
    --ssh-link-port ssh_connection_port
    • 检查以下示例:

      ~/ideaIU-213.3469/bin/remote-dev-server.sh
      run ~/spring-boot-example/
      --ssh-link-host ec2-11-50-136-85.eu-north-1.compute.amazonaws.com
      --ssh-link-user ubuntu
    • 如果不传递参数,脚本将使用默认值:端口22,系统用户的用户名和hostname命令的主机。
  4. 如果项目成功启动,您应该在终端中收到以下3个链接作为输出:

    • 加入链接:tcp://127.0.0.1:5990...:包含远程IDE现在监听的本地地址和端口。

      • 示例:

        tcp://127.0.0.1:5991#jt=71e779a1-070e-4fd3-a4e6-83c1f8cb65a5&p=IU&fp=A42F6041C2878D7A22339ECABF4A9C294F643BG05E91E3DFC06035E03DB71BF8&cb=222.4167.29&jb=17.0.4b469.53
    • 要使用它,请确保远程机器可以通过此本地地址访问。例如,在Docker内部IDE中使用的转发/打开的端口。

    有关更多信息,请参阅命令行中的ssh -L命令的输出。

    • HTTP链接:https://code-with-me.jetbrains.com/remoteDev...:包含有关主机-端口-用户、IDE及其版本的信息。

      • 示例:

        https://code-with-me.jetbrains.com/remoteDev#idePath=%2Fhome%2Fubuntu%2F.cache%2FJetBrains%2FRemoteDev%2Fdist%2F3e4cd27bfbb95_ideaIU-2022.2.2&projectPath=%2Fhome%2Fubuntu%2Fdevelopment%2Fspring-petclinic&host=ec2-xx-xx-xxx-xx.eu-north-1.compute.amazonaws.com&port=22&user=ubuntu&type=ssh&deploy=false
      • 在本地浏览器中打开时,它会显示欢迎页面,并尝试使用预填充的连接设置值调用本地的Gateway应用程序。
      • 如果在本地机器上找不到JetBrains Gateway应用程序,您将能够从欢迎页面上下载它。
    • Gateway链接:jetbrains-gateway://connect#idePath...:也包含有关主机-端口-用户、IDE及其版本的信息。

      • 示例:

        jetbrains-gateway://connect#idePath=%2Fhome%2Fubuntu%2F.cache%2FJetBrains%2FRemoteDev%2Fdist%2F3e4cd27bfbb95_ideaIU-2022.2.2&projectPath=%2Fhome%2Fubuntu%2Fdevelopment%2Fspring-petclinic&host=ec2-xx-xx-xxx-xx.eu-north-1.compute.amazonaws.com&port=22&user=ubuntu&type=ssh&deploy=false
      • 在本地浏览器中打开时,它会直接启动本地的JetBrains Gateway应用程序,而不需要欢迎页面。
  5. 复制生成的链接并粘贴到本地浏览器中,允许其启动Open JetBrains Gateway。
  6. 所有这些链接也可以在已启动的JetBrains Gateway中打开。

为此,在JetBrains Gateway的欢迎屏幕上,将链接粘贴到“连接到运行中的IDE”字段中,然后单击连接。

CLion将下载所需版本的JetBrains Client,并在其中打开远程项目。

注册先前安装的远程IDE

自版本221.5481以来,您可以手动注册远程服务器上的现有后端IDE,并使其对Gateway可见。

要注册已安装的IDE并使其出现在可用构建列表中,请按照以下步骤操作:

  1. 通过SSH输入远程服务器。
  2. 找到解压后的IDE的bin文件夹,进入bin文件夹。
  3. 在命令行中执行以下命令:

    remote-dev-server.sh registerBackendLocationForGateway
    • 例如,

      sh WebStorm-221.5591.52/bin/remote-dev-server.sh registerBackendLocationForGateway

您可以在不同的连接场景中使用这些链接,例如通过SSH连接、通过自定义连接或通过浏览器连接。

使用SSH连接

  1. 启动JetBrains Gateway。
  2. 选择通过SSH连接。
  3. 调用SSH设置,并配置已运行的后端的选项。

JetBrains Gateway通过SSH连接,从现有后端获取连接链接。JetBrains Gateway将连接链接的端口转发到本地机器,并准备一个包含本地到客户端端口的新连接链接。

它还下载并启动带有此链接的JetBrains Client。JetBrains Client的版本在链接中指定。JetBrains Gateway在后台运行并转发端口,而JetBrains Client仍然处于活动状态。

配置自定义连接

  1. 启动JetBrains Gateway。
  2. 选择JetBrains Gateway插件提供的自定义连接UI。

自定义插件可以连接到某个云服务,从该服务中获取后端列表,创建后端等等。

JetBrains Gateway从自定义插件获取连接链接(在大多数情况下,它指向本地主机和端口),并使用此链接下载并启动JetBrains Client。JetBrains Client的版本在链接中指定。JetBrains Gateway可能会保持在后台,以维护客户端和服务器之间的连接。

通过浏览器连接

  • 在浏览器中,单击特定创建的描述后端位置的链接。

在SSH的情况下,它包含用户名、服务器名、SSH端口、服务器上的项目位置等信息。

该链接导向到一个着陆页面,建议打开JetBrains Gateway,或者如果JetBrains Gateway在客户端上缺失,则建议下载它。JetBrains Gateway处理从浏览器打开的链接,并连接到指定的后端。

客户端到服务器工作流

客户端到服务器工作流意味着您的远程服务器上没有安装任何IDE。在这种情况下,您首先需要下载并安装JetBrains Gateway。

通过SSH连接

  1. 下载并安装JetBrains Gateway。
  2. 在JetBrains Gateway向导中,选择通过SSH连接到远程服务器。
  3. 在向导的下一页中,选择要连接的服务器。如果远程服务器上没有IDE,JetBrains Gateway将会下载它。

根据用户的首选项,IDE可以从JetBrains服务器下载、从客户端机器上传,或从自定义位置下载。

RD协议对于IDE后端的每个版本都是特定的。需要在服务器上下载匹配版本的JetBrains Client。

之后,JetBrains Gateway会在远程机器上启动CLion服务器,建立TCP隧道,并使用适当的参数启动JetBrains Client以进行连接。

TCP连接链接格式如下:

tcp://127.0.0.1:PORT#jt=ONE_TIME_CONNECTION_TOKEN fp=SERVER_FINGERPRINT cb=THIN_CLIENT_BUILD jb=THIN_CLIENT_RUNTIME_VERSION

检查以下示例:

tcp://127.0.0.1:5990#jt=3f2f2471-84f2-4d8b-ac67-c1698f5a1be7 fp=ABC88C383B0A62654C4EF75052C60D4D475885075DCA5B85733BD8D4B9E28CC
0 cb=213.2667 jb=11_0_11b1620.1

可扩展性

IDE后端

IDE后端是完整的JetBrains IDE,只是以特殊的无头无人值守模式启动。

后端可以通过以下方式使用各种CLion插件进行扩展:

  • 将所需的插件解压缩到分发的plugins/文件夹中
  • 运行以下代码(需要连接到JetBrains Marketplace的网络):

    ./bin/remote-dev-server.sh installPlugins
                            <pathtoproject>
                            <PLUGIN_ID1>
                            <PLUGIN_ID2>
                            ...

如果插件提供了新的检查和功能集,所有这些都将显示在JetBrains Client上。

唯一不会影响远程瘦客户端的插件是那些强烈修改UI的插件。这些插件应该安装在JetBrains Client侧。

JetBrains Gateway SDK

JetBrains Gateway可以像其他基于IntelliJ平台的产品一样进行扩展。

您可以使用以下方法之一:

  • 使用github.com/JetBrains/gradle-intellij-plugin/创建新项目(gradle-intellij-plugin的版本应该>= 1.1.4)
  • 使用以下设置来根据JetBrains Gateway构建插件:

    intellij {
    version.set("213.2667-CUSTOM-SNAPSHOT")
    type.set("GW")
    instrumentCode.set(false)
    }

您可以在https://www.jetbrains.com/intellij-repository/snapshots中查看可用的版本

JetBrains Gateway / 客户端上的Thick CLion

除了基本的SSH和Code With Me连接外,供应商可以根据其自己的编排服务定制JetBrains Gateway。这可以在JetBrains和供应商之间的自定义交易内完成。

JetBrains Gateway基于IntelliJ平台,具有与JetBrains Client的连接和交互的API。

查看以下示例:

一个大型组织希望编写自己的编排。基本的SSH流程出于安全原因不够。该组织编写了一个内部插件并提供给其开发人员。开发人员可以在JetBrains Gateway或其笔记本电脑上的CLion中安装此插件。

这只是API的一个非常简要的介绍(它们尚未最终确定,确实不是全部范围,但它们解释了整体思想)。

JetBrains Client

JetBrains Client不是为连接部分设计的可扩展部分。但是,您可以开发和安装各种修改UI、键盘快捷键、主题和触及IDE UI交互但不触及其功能的CLion插件。

已知限制

目前,您不能从CLion启动远程开发会话,但可以通过JetBrains Gateway执行此操作。

目前,此工作流中的远程主机仍然仅支持Linux。请确保您的Linux机器上有兼容的SSH服务器。Linux机器应该具有任何较新的Linux发行版,例如Ubuntu 16.04+或RHEL/Centos 7+。

需要注意以下几个与CLion相关的限制:

  • 仅支持CMake项目;Makefile项目在远程模式下不支持。对于Makefile项目,建议使用JetBrains Gateway连接.
  • 此功能目前不支持Windows客户端。
  • 如果需要调试,需要在远程服务器上安装GDB。
  • 对于JVM和Python项目,CLion将使用本地配置文件(在您的CLion上设置)作为模板。如果没有在服务器上创建配置文件,则将使用默认配置文件。注意,一些设置(例如,PATH环境变量)可能会因服务器不同而不同。
  • 此功能在瘦客户端和服务器之间进行交互的性能不如在本地运行。由于可能涉及网络延迟,建议将本地计算迁移到服务器上。
  • 调试节点不支持线程查看。
  • JetBrains Gateway不支持使用JetBrains OAuth(基于IntelliJ的IDE和JetBrains Rider)进行SSO。
  • 无法调试其连接不受信任的服务器的生产中的Web应用程序,因为调试器使用反向SSH隧道连接到该服务器。
  • 远程服务器上的调试可能会导致性能下降。如果性能不足,可以尝试使用开发者工具包。
  • 远程开发会话内不能访问本地硬件。
  • JetBrains Gateway不支持本机Windows操作系统。
  • 当许多项目使用相同的远程机器时,可能会在连接时导致各种问题。避免在生产上使用这种配置。

支持和反馈

如果您遇到任何问题或需要进一步的帮助,请参阅CLion支持和反馈页面,以获取支持选项。如果您在使用JetBrains Gateway时遇到问题,请向JetBrains支持报告问题。

如果您对CLion的远程开发功能有反馈或建议,也可以通过CLion的用户界面提供反馈。

远程开发服务的维护

为了使远程开发顺利工作,您需要维护远程服务器上的服务和工具。以下是一些关键任务:

  • 定期更新JetBrains Gateway、JetBrains Client和远程服务器上的CLion IDE。
  • 监视服务器上的资源使用情况。如果服务器的资源不足,您可能需要升级它或添加更多资源。
  • 定期备份远程服务器上的项目和数据,以防止数据丢失。
  • 确保服务器上的防火墙和安全设置是最新的,并遵循最佳安全实践。
  • 处理远程服务器上的错误和问题,以确保远程开发服务的可用性。

结论

远程开发是一种强大的工具,可以让您在瘦客户端上使用CLion IDE,同时在远程服务器上执行项目。这使得开发变得更加灵活,可以在不同的环境中工作,同时仍然享受到CLion提供的强大功能。

标签: clion破解, clion破解教程, clion教程, clion基础教程, clion高级教程, clion核心教程, clion免费激活码, clion免费注册码, clion注册码在线生成, clion激活