远程开发2年,有哪些优劣以及如何使用
用了2年的远程开发,总结了一些优劣, 并且分享了如何配置VSCode远程开发的教程,还有在开发中遇到的一些问题的应对方法
前端IDE
前端可选ide我想用得最多的就是vscode
和webstorm
,其他相对使用比较少。
对于前端开发,txt编辑器都可以开工,但是要代码写得爽,还是需要ide的。
自从误打误撞写进前端以来,用过vscode,用过webstorm,前端刚开始分离出来那几年webtorm还拥有不小的优势,那时候vscode的功能还比较简单,在智能提示,搜索,跳转方面落后于webstorm, 但是缺点也很明显,内存占用高,启动速度慢,新导入项目时,卡顿,一些智能功能不可用,原因是他会扫描项目来建立一些索引,但是vscode没有这些负担,启动项目超快,同时运行几个项目也不会占用过多内存。
时间到了2025年,如今vscode通过不断迭代和大量扩展加持下,已经成为前端开发ide首选,高性能之下通过扩展补全智能化方面的不足,市占率几乎统领前端。
但是大量的扩展也带来了一些问题,扩展冲突、配置麻烦,遇到问题排查也难搞。但仍然不影响我从vscode发布之初便一直使用至今,刚开始看别人的webstrom那么智能也曾短暂的背叛过它,但最终因为vscode的快速启动重新回归。
由于vscode用户量大,所以远程开发的支持是最好的,配置简单,所以本文基于vscode远程开发来讲述。
远程开发
什么是远程开发?
远程开发是指通过网络连接到远程服务器上进行开发,通过远程开发工具、浏览器,可以在本地直接操作远程服务器上的代码,实现代码的同步和调试,今天主要讨论 通过本地VsCode连接服务器上的开发环境进行开发。
如图所示:你的电脑提供输入设备(键盘、鼠标)和输出设备(显示器),服务器提供计算资源,中间通过网络连接起来。
为什么要用远程开发
为什么要使用远程开发?这个问题其实不好回答,因为有些偏于主观,但是我想如果我把优势劣势说出来之后,如果优势是解决了你痛点,劣势对你来说不是问题,那你就会认为 远程开发是值得选择的。比如我主要就是老mbp发热严重,夏天难受,又烫又降频,自从远程开发后,机器风扇也不爱转了,体验好太多了。
有哪些优势
- 环境一致 - 不论你身处何方,用什么操作系统,你的开发环境始终是一致的
- 性能无关 - 你所使用的电脑性能和你的开发工作无关
- 安全 - 你的代码不会泄露在本地,服务器上的代码也不会泄露在本地
- 便捷 - 你可以在任何地方,任何时间进行开发
有哪些问题
- 依赖网络稳定 - 你的网络不好,你的开发效率会受到影响
- 依赖服务器稳定 - 服务器出问题,你的开发效率会受到影响
怎么加入远程开发
服务器硬件配置
谈怎么配置远程开发之前,先说说远程开发服务器配置选择,这个主要是看你的项目是什么体量、你跑的项目是什么类型的, 通常有几种方法来实现远程开发,1.物理机(家里或者公司,必须有公网ip) 2.云服务器
方式 | 优势 | 缺点 | 适合谁选择 |
---|---|---|---|
家里物理机 | 可以用闲置机、高性能的小主机部署在家里,性能选择自由 | 很多没有公网IP,就算有公网ip是动态变化的,网络稳定性不如商业带宽,上行带宽限制严重,就算是50w的功耗,一个月下来也要不少电费 | 有公网的家庭宽带可以选择 |
公司物理机 | 性能通常都不会太差,带宽高且稳定,没有额外费用 | 往往是不允许的,服务器属于公司,数据也属于公司 | 给公司打工项目可以用 |
云服务器 | 全托管,且有稳定保障 | 价格略贵 | 家里没有公网ip,或者家里没有适合的主机可选择云服务器 |
配置选择就要看你的项目情况了,我只能说说我用过的几个云服务器远程机器,给大家参考一下,只说前端远程开发的情况,最低要求2c8g,前端开发对cpu要求不算高, 主要是内存要求会比较大,推荐选择1比4的机器,比如2c8g,4c16g这种,小于2c8g的服务器会频繁的卡死,主要是爆内存导致的。
机器 | 运行情况 |
---|---|
2c8g | 我认为这个配置是云开发的基础条件,跑一些小的项目够用了 |
4c8g | 这是我目前在用的配置,编译同一个项目4c也就比上面的2c快10多秒,40秒编译完成,上面的2c8g要50多秒,像跑nextjs编译页面过多就会内存爆,所以我比较推荐4c16g |
32c64g | 这是公司的机器,只用来开发公司的项目,这种配置没啥好说的,也没有任何问题,- -! |
其实我是首推云服务器的,如果你有公网ip,那我推荐你考虑一下n100的小主机,超低功耗,单核性能比轻量云服务器单核性能还强一点点。
最后说说网络
因为咱这云开发,网络是至关重要的,推荐5M以上的带宽,因为跑起来的项目是通过网络访问的,小水管访问速度会比较慢,推荐服务器距离你越近越好的地域。
网络性价比的话,推荐腾讯的轻量云服务器最新推出的锐驰版, 2c8g,200m峰值带宽,用券几十块钱一个月:
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中 https://cloud.tencent.com/act/cps/redirect?redirect=2446&cps_key=7f2c46061811a8a4e80dd28d66946205&from=console
配置VSCode远程开发
安装非常简单,准备好服务器,其他安装都是vscode去帮你做,你填写一些参数就行了
服务器端口一定要放行打开22
安装扩展
在vscode中安装这几个插件,都装上
添加服务器
在这里点击加号
输入你的服务器ip地址,然后回车
ssh 你的账号@ip
选择第一个config,回车
连接服务器
然后在你的列表就可以看到你的服务器了,点击箭头可以登录,第一次会要求你输入密码
输入密码后,可以看到已经连接成功了
如果是webstrom,也支持远程开发,但是配置上可能没有vscode这么方便。
就酱紫,你的远程开发服务器已经ok了
免密登录(如果不需要,可以不看)
默认情况下每次登录都需要输入密码,如果配置免密登录后就可以直接连接服务端进行开发了,配置方式就是生成密钥对,在本机配置密钥, 在服务端配置公钥,主要保护自己的密钥,不要泄露出去,这样别人就可以直接登录你的服务器了.
首先在安装有ssh-keygen的服务器或者本地生成密钥对
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
参数说明
-t rsa
:指定密钥类型为 RSA。-b 4096
:指定密钥长度为 4096 位,位数越高,密钥越安全。-C "your_email@example.com"
:添加注释信息,通常使用你的邮箱地址,方便识别。
我是mac,默认有ssh-keygen程序,密码请留空,我在当前目录下生成了一个test_rsa的密钥对
可以看到生成了两个文件,一个是私钥,一个是公钥
打开公钥,将内容复制到服务器的~/.ssh/authorized_keys文件中,如果没有这个文件,新建一个,然后将公钥内容复制进去,保存即可
可以登录服务器执行:
echo "ssh-rsa AAAAB3NzaC1y你的密钥对...POAZGpsi6qqqvQ== 1xxxxxx@qq.com" >> ~/.ssh/authorized_keys
然后把私钥复制到到本机ssh目录下
cp test_rsa ~/.ssh
接下来在这里点击设置
选择第一个config,回车
给你的机器下面加一个IdentityFile,指向你的私钥文件
现在你这台电脑可以直接登录了,如果换个电脑,你只需要将config里面的配置和私钥复制到其他电脑,也一样可以免密登录了
服务器访问github经常连不上
作为一台开发服务器连不上github是一件比较麻烦的事情,原因嘛,懂得都懂,不懂的说了也不懂
方法有很多,我选择了使用hosts来避免dns污染
- 新建一个sh脚本,获取最新的github hosts,写入系统hosts并刷新
- 定时任务执行这个脚本
新建一个sh脚本
cd /etc/
# 备份默认的hosts,以后要手动改也请修改这个文件,不要直接修改hosts文件
cp hosts hosts.myback
cd ~
touch updatehosts.sh
chmod +x updatehosts.sh
vim updatehosts.sh
粘贴内容:
#!/bin/bash
# 选择从这个地方获取最新的hosts
URL="https://raw.hellogithub.com/hosts"
HOSTS_MAIN="/etc/hosts.myback"
HOSTS="/etc/hosts"
if [ "$EUID" -ne 0 ]; then
echo "请使用 root 权限运行此脚本。"
exit 1
fi
if [ ! -f "$HOSTS_MAIN" ]; then
echo "/etc/hosts.myback 文件不存在。"
exit 1
fi
echo "正在请求 $URL ..."
response=$(curl -s "$URL")
if [ $? -ne 0 ]; then
echo "请求 $URL 失败,请检查网络连接。"
exit 1
fi
hosts_main_content=$(cat "$HOSTS_MAIN")
merged_content="$hosts_main_content"$'\n'"$response"
echo "正在保存合并后的内容到 $HOSTS ..."
echo "$merged_content" > "$HOSTS"
echo "正在尝试刷新 hosts ..."
if systemctl is-active --quiet NetworkManager; then
systemctl restart NetworkManager
echo "NetworkManager 服务已重启。"
elif systemctl is-active --quiet networking; then
systemctl restart networking
echo "networking 服务已重启。"
elif systemctl is-active --quiet network; then
systemctl restart network
echo "network 服务已重启。"
else
echo "未找到合适的网络服务进行重启,你可能需要手动刷新网络服务。"
fi
if command -v systemd-resolve &> /dev/null; then
systemd-resolve --flush-caches
echo "DNS 缓存已清除。"
fi
echo "操作完成。"
执行一次这个脚本
sh ./updatehosts.sh
添加定时任务
crontab -e
粘贴内容,每小时执行一次这个脚本:
0 * * * * /root/updatehosts.sh
ctrl+x,然后按y,然后回车保存
定时任务就添加完成了
验证任务执行情况
一小时后再看看cat /etc/hosts,看一下文件底部的更新时间是否有变化,有变化就是正常的。
开发时留意的问题
端口转发
一般启动一个web项目,还要在这里添加一个端口转发,意思就是本地浏览器打开访问localhost:3000转发到服务器上的3000端口,根据你自己的服务启动端口配置就行
浏览器无法访问开发页面
- 你的端口有占用,自动添加转发端口号变化了,比如你web启动了3000,但是因为占用服务器上自动启动了3001 解决方法:
kill占用你端口的进程,然后重新启动
lsof -i tcp:端口号
kill -9 进程号
- 端口号转发正常,但是就是访问不了:
请手动删除端口转发,重新手动添加(尝发生于电脑睡眠一段时间后)
云服务器内存爆了
腾讯云默认是没有开启swap的,一旦内存爆了,直接断开,处于不可用状态,必须去腾讯云网页手动重启这台机器, 内存不够可以考虑开启swap,一般4-8g物理内存推荐设置为物理内存相同的swap。
推荐设置swap大小:
物理大小 | 建议设置 |
---|---|
小于 2GB | 物理内存的 2 倍 |
2GB - 8GB | 与物理内存大小相同 |
大于 8GB | 物理内存的 0.5 - 1 倍 |
开启swap
查看swap是否开启
free -h
可以看到输出结果中swap并没有开启:
total used free shared buff/cache available
Mem: 7.6Gi 7.0Gi 433Mi 1.9Mi 463Mi 595Mi
Swap: 0Gi 0Gi 0Gi
开启方法:
# 这里8g是我屋里内存8g,你可以根据上面的表格设置
sudo fallocate -l 8G /swapfile
# 设置文件权限
sudo chmod 600 /swapfile
# 将文件格式化为Swap格式
sudo mkswap /swapfile
# 启用Swap文件
sudo swapon /swapfile
# 使Swap文件开机自动挂载
echo '/swapfile none swap defaults 0 0' | sudo tee -a /etc/fstab
设置swappiness
打开这个文件,添加vm.swappiness = 10到末尾,或者如果已经存在修改vm.swappiness为10
vim /etc/sysctl.conf
修改完之后,让swappiness生效
sudo sysctl -p
swappiness默认可能是60,这个参数是0-100的数字,越大系统会越频繁的交换物理内存和swap空间,对于前端开发来说, 前端开发对系统响应速度要求较高,频繁的内存交换会导致系统性能下降。较低的swappiness值可以让系统尽量优先使用物理内存, 减少不必要的内存交换操作,提高开发体验,因此我把它设置成10.
检查swap是否开启成功且重启也生效
# 重启机器
sudo reboot
# 重启后查看swapon
swapon --show
可以看到输出结果中swap已经开启:
NAME TYPE SIZE USED PRIO
/swapfile file 8G 0B -2
查看swappiness配置
cat /proc/sys/vm/swappiness
如果输出的数字和你设置的一致则表示生效中.