IntelliJ-IDEA远程开发

remote-dev-server

在 JetBrains 的远程开发体系中,remote-dev-server.sh 是运行在远程服务器上的核心脚本。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
root@localhost:/# ./remote-dev-server help

Usage: ./remote-dev-server [ij_command_name] [/path/to/project] [arguments...]
Examples:
./remote-dev-server installPlugins [arguments...]
./remote-dev-server status
./remote-dev-server dumpLaunchParameters
./remote-dev-server stop
./remote-dev-server run [arguments...]
./remote-dev-server printEnvVar [arguments...]
./remote-dev-server warm-up /path/to/project [arguments...]
./remote-dev-server cwmHostStatus
./remote-dev-server remoteDevStatus
./remote-dev-server serverMode
./remote-dev-server registerBackendLocationForGateway
./remote-dev-server warmup /path/to/project [arguments...]
./remote-dev-server invalidate-caches
./remote-dev-server help
Environment variables:
REMOTE_DEV_SERVER_TRACE set to any value to get more debug output from the startup script
REMOTE_DEV_SERVER_USE_SELF_CONTAINED_LIBS set to '0' to skip using bundled X11 and other Linux libraries from plugins/remote-dev-server/self-contained. Use everything from the system. by default bundled libraries are used
REMOTE_DEV_TRUST_PROJECTS set to any value to skip project trust warning (will execute build scripts automatically)
REMOTE_DEV_NEW_UI_ENABLED set to '1' to start with forced enabled new UI
REMOTE_DEV_NON_INTERACTIVE set to any value to skip all interactive shell prompts (set automatically if running without TTY)

常用子命令说明(官方)

命令 功能说明
status 查看 remote-dev-server 当前状态
remoteDevStatus 检查是否有远程开发实例正在运行
run 启动远程开发实例(最常用)
stop 停止当前远程开发会话
warm-up /path/to/project 预热索引(构建缓存)
invalidate-caches 清理缓存
serverMode 启动后台模式(长期监听 Gateway 连接)
registerBackendLocationForGateway 为 Gateway 注册本地 IDE 位置
installPlugins 安装插件(离线部署常用)

注册 IDE 后端

registerBackendLocationForGateway 命令用于将远端主机上已经解压/安装的 IDE 后端路径注册到 JetBrains Gateway 的“可用后端/构建”列表,使 Gateway 能发现并显示该已安装的后端 IDE(而不是让 Gateway 从网络下载它)。

1
2
3
4
5
6
7
8
9
./bin/remote-dev-server.sh registerBackendLocationForGateway

# 手动注册路径:会在此目录下创建符号链接(指向实际的IDE安装位置),以便 Gateway 识别这些用户提供的IDE后端。
ll ~/.cache/JetBrains/RemoteDev/userProvidedDist/
# 自动下载路径:默认情况下,此目录存放 Gateway 自动下载的IDE后端。
ll ~/.cache/JetBrains/RemoteDev/dist

# 查看当前目录下所有子目录和文件的具体大小
cd ~/.cache/JetBrains && du -h --max-depth=1 # du -h -d 1

目录介绍:

Windows 目录 Linux 目录 内容
AppData\Local\JetBrains (本地缓存) ~/.cache/JetBrains/ 存储体积大、临时性、可重建的数据,如缓存、索引、临时文件、日志等。这些数据是特定于本地计算机的,不应进行网络同步,以节省带宽和时间。
AppData\Roaming\JetBrains (漫游) ~/.config/JetBrains/ 存储用户设置、配置、许可文件等关键且体积小的数据。设计用于在企业环境中,当用户在不同机器上登录时,这些设置能够通过网络被同步(漫游),保证用户体验的一致性。
AppData\Roaming\JetBrains\***\plugins ~/.local/share/JetBrains/ 从应用商店下载安装的外部插件(Plugins)

启动 IDE 后端(不常用)

角色:服务器端的启动脚本 / 后端服务(而非本地客户端)。

功能:启动并托管 IDE 后端(文件访问、索引、语言服务、运行/调试后端等)。

连接方式:由 JetBrains Gateway 或受支持的客户端发起连接到该后端。

目的:让本地 IDE 能够远程编辑、运行和调试项目,保持一致的开发体验。

(补充说明:它是服务器端的会话/代理组件,不是本地 IDE 本身。)

1
2
3
4
5
6
mkdir -p /logs/remote-dev-server
tail -f /logs/remote-dev-server/fresh.log

cd /data/local/JetBrains/idea-IU-252.23892.409/bin
# 启动后,会输出三个链接。
nohup ./remote-dev-server.sh run /data/local/workspaces/mars-test/ >/logs/remote-dev-server/fresh.log 2>&1 &

从 IntelliJ IDEA 连接到远程服务器

https://www.jetbrains.com/zh-cn/help/idea/remote-development-starting-page.html

远程开发常见问题解答

https://www.jetbrains.com/help/idea/faq-about-remote-development.html