Skip to content

使用远程服务器的工作流程

2023-11-14 · 546字 · 2分钟

今天向同事请教了一下使用远程服务器的工作流程,感觉比我之前的流程更合理,分享给各位。

首先假设诸位已经熟悉通过 ssh 隧道与远程服务器建立连接的基础知识,这里不再赘述。

有服务器算力支持情况下,是在本地编程调试然后上传服务器运行,还是直接在服务器上编程调试运行呢?这取决于你与服务器的通信速度,还有代码编辑器的渲染速度。像我使用 vscode,如果直接在服务器上编程就得在服务器端安装 remote-ssh 插件以及编程语言所需的插件(譬如 python 使用的 pylance 语法高亮器)。运行速度本就很慢的 vscode,加上网络通信的延迟,运行结果在本地界面的渲染更慢——这也是我之前实习过程中那套工作流遇到的困境。

在同事的建议下,我们采取本地编程调试+服务器同步文件的工作流。这样就把与服务器的通信限制在必要内容上,减少无关渲染的通信延迟。具体而言,在 vscode 中我们用 syncRsync 插件将本地文件夹与服务器上的远程文件夹关联(这是为了方便在编程时的即时同步,编程始终在本地 vscode 而非在建立 ssh 连接的远程 vscode 中)。在 linux 中则可以利用 sshfs 将远程文件夹挂载到本地,并通过图形界面访问。这两样就代替来 vscode 的 remote-ssh。

这里方便大家给出我的配置。当然记得先安装 sshfs 以及 vscode 插件 sync-Rsync

~/mount

bash
#!/bin/bash

# default value
REMOTE_DIR=<remote-host>:<dir>/<subdir>
LOCAL_DIR=<localhost>:<dir>/<subdir>

# parse input
if [[ $# -gt 0 ]]; then
	REMOTE_DIR=$1
fi
if [[ $# -gt 1 ]]; then
	LOCAL_DIR=$2
fi

# create local directory if it does not exist
mkdir -p $LOCAL_DIR

# mount remote folder to local location
sshfs -o reconnect,ServerAliveInterval=15,ServerAliveCountMax=3,follow_symlinks $REMOTE_DIR $LOCAL_DIR

运行mount.sh,远程目录就挂载到本地对应目录了。

.workspace

json
{
  "folders": [
    {
      "path": "."
    }
  ],
  "settings": {
    "sync-rsync.sites": [
      {
        "localPath": "<same as LOCAL_DIR>",
        "remotePath": "<same as REMOTE_DIR>"
      }
    ],
    "sync-rsync.onSave": true,
    "sync-rsync.autoShowOutput": false,
    "sync-rsync.autoShowOutputOnError": true,
    "sync-rsync.exclude": [".git", ".vscode", "log", "data"]
  }
}
返回

人同此心,心同此理;如风沐面,若水润心