关于ide:初识远程开发使用Jetbrains-IDE进行远程开发解决笔记本内存不够的问题

42次阅读

共计 2991 个字符,预计需要花费 8 分钟才能阅读完成。

目前笔记本写 Java 的基本矛盾是:IDEA 日益增长的内存容量须要,和落后的笔记本内存不可减少之间的矛盾

近程开发解决了什么痛点问题?

挪动设施性能无限

以后 IDEA 和 Chrome 两个内存小户,分分钟把 16G 吃满不成问题,间接导致 SWAP 疯狂减少。

但辛辛苦苦攒进去大几千买的笔记本,不可能因为内存不够用就把笔记本整个换掉。

咱们的第一反馈可能是:搞一台高性能台式机就能够了,毕竟台式机加内存的老本太低了。

然而这样就呈现了第二个问题:

两台设施的环境不对立

不仅要别离保护台式机和笔记本上的开发环境,而且出门前还要记得 push 代码。

此外,出门的过程中还会回到 16G 内存的小水管,应用体验就会降落。

为了解决对立环境和对立性能的问题,咱们可能又会想到用笔记本远程桌面到台式机上,此时又呈现了下一个问题:

远程桌面的操作体验一言难尽

远程桌面的毛病包含但不限于:

  • 对网络要求高
  • 显示成果和本地的差距十分大
  • 存在不可避免的提早

之前也尝试过很多远程桌面计划例如 RDP、VNC、SPICE 等等,而这些协定各有各的毛病

那么,有没有一种可能,让编辑器原生的跑在本地,而把编译等沉重工作跑在服务器上,再通过 SSH 连贯呢?
这就是近程开发了。

近程开发的本质也是前后端拆散

近程开发整体的构造是:

  1. 只有编辑器(IDEA、Webstorm、Navicat、终端等)跑在本地
  2. 所有服务(Node、JAVA、MySQL、Nginx、Docker 等)全副运行在 Linux 服务器上
  3. 本地与服务器仅应用 SSH 端口连贯
  4. 文件和命令通过 SSH 传输
  5. 通过 SSH 隧道实现端口映射(TCP 代理),在服务器只凋谢 SSH 端口的状况下,实现相似本地开发的体验(即浏览器拜访 localhost 主动转发到服务器)

整体的构造如下:

接下来的内容就是应用 Jetbrains 近程开发的步骤:

应用 Jetbrains 进行近程开发

Linux 服务器凋谢 SSH 端口

以后服务端 仅反对 Linux,图形化和桌面版均可,实体机或虚拟机均可。

因为所有的通信都是用 SSH 端口进行,并且编辑器的后端是主动装置的,所有服务器什么也不须要筹备,只须要凋谢端口即可

为了平安起见,倡议防止应用默认的 22 端口,并且 设置强明码 或者 只容许证书登录

批改 SSH 端口

# 编辑
nano /etc/ssh/sshd_config
# 批改文件,删掉 port 的正文,把端口改成本人想要的
port 8222
# 重启服务
service ssh restart

批改明码

# 批改明码
passwd

应用 IDEA 连贯服务器

在主页面找到 SSH,点击新建连贯:

输出 Linux 服务器的用户名、地址、SSH 端口,确定:

输出明码:依据理论状况抉择要不要永恒保留明码

抉择 IDE 版本和我的项目根目录,包含 Jetbrains 所有的 IDE 都能够应用:

如果服务器上没有我的项目文件,能够先用终端 clone 代码到服务器上:

点击确定后 IDEA 会返回主页,并且弹出窗口,提醒正在筹备 IDEA 的后端:

全副实现后,会关上一个和 IDEA 截然不同的编辑器,名叫Jetbrains Client

近程部署开发环境

此时如果在 IDEA(即 Client)中关上终端,关上的不是本地的终端,而是近程服务器

这样就很不便了,IDEA 接管了 SSH 连贯管理器 的性能,就不须要每次连贯都输出明码了,并且能够同时关上很多终端窗口,就和本地开发简直统一了

Linux 是齐全能够解脱图形界面的,只应用终端就能够把罕用的环境都装好。

以 debian 系的局部服务为例:

// jdk
sudo apt install openjdk-8-jdk
// maven
sudo apt-get install maven
// docker
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
// node
curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash -
sudo apt-get install -y nodejs

装好各种环境并且初始化数据库后,简略设置一下 JDK,期待索引实现:

而后 mvn install(或者 build),不出意外的话就能够运行了:

如果出意外的话,可能会在编译时呈现一个 ​ Failed to exec spawn helper 的报错:

java: Cannot run program "/home/<redacted>/.jdks/corretto-1.8.0_352/bin/java" (in directory "/local/home/<redacted>/.cache/JetBrains/RemoteDev-IU/<redacted>/compile-server"): error=0, Failed to exec spawn helper: pid: 31592, exit value: 1

起源:https://youtrack.jetbrains.co…

解决办法就是,能够去 https://www.jetbrains.com/zh-… 下载 2022.2 以前的版本 IDEA,装置到近程服务器之后,用旧版本关上就能够失常编译了

还差最初一步,就是设置端口映射:

端口映射

这个时候就算我的项目起来了也是不能通过 localhost 拜访的

此时控制台能检测到我的项目监听了哪些端口,能够一键映射:

如果要批改已有的端口或减少其余端口(比方增加 Nginx 端口):

至此,整个近程部署就实现了

展现 & 总结

展现

编辑器右下角能够看到网络传输状况:

只有 KB 级的传输,和近程连贯相比,能够说基本上对网络没有任何要求了,并且因为编辑器是本地运行,不会产生提早。

左上角显示以后近程服务器(Linux)的负载:

通过第三方软件查看本地(Mac)的内存占用:

同时启用了一个 IDEA 和 Webstorm 的近程连贯,每个编辑器大略只占 1 -2G 的内存,比起 IDEA 动辄 7 -8G 内存,能够说非常少了

总结

近程开发基于“前后端拆散”的理念,把用户感知显著的 IDE 依然运行在本地,而把沉重的编译工作和吃内存的 Web 服务交给服务器来执行。

  • 与本地开发相比,近程开发不再依赖笔记本的配置(尤其是内存)
  • 与多设施计划相比,近程开发的所有数据都在服务器上,既平安,又不须要保护多个环境
  • 与远程桌面相比,近程开发的网络要求非常低
  • 还有一些附带的益处,比方能够应用 Linux 原生的 docker,而不必再在 Mac 上跑 docker 虚拟机

Jetbrains 的 IDE 的确弱小,能够把近程开发的部署过程变得如此简略。尽管目前软件的图标上还写着 Beta 的标记,并且应用中也会有小问题(比方下面提到的编译问题),但这种模式是真的香(某些笔记本的内存条快比金条贵了,而台式机内存却是白菜价,同时 16 外围以上的至强或锐龙 CPU 也是便宜大碗,性价比十分高)。

就笔者自身而言,在目前根本满足需要的状况下,更违心尝试这种模式,因为真的能够节约老本。

进一步简化:

学会了根本配置之后,咱们能够发现,本地环境实际上是不须要启动 IDEA 和 Webstorm 的,因为实际上启动的是名叫 Jetbrains Client 的软件:

所以,再关上我的项目的时候,就不须要应用 IDEA 来连贯服务器了,咱们只须要下载一个 Jetbrains Gateway(翻译为网关),就能够对立治理所有应用 Jetbrains IDE 的我的项目了。

它的界面和 IDEA 首页十分像,操作形式也是一样的:

正文完
 0