远程开发初探 - VS Code Remote Development

如果你是学生,你还在你的 windows 电脑上为各种环境配置头疼的时候,你应该了解一下 Remote Development。

如果你喜欢 linux 的开发环境和舒适的 shell,但却不舍得抛弃 windows/macos 图形界面给你带来的用户体验和一些软件的兼容(QQ, 微信), 那么 Remote Development 是你最好的选择。

如果你还在纠结更换电脑需要重新配置本地环境,装 python,装 jre,装 node... Remote Development 将一举解决此问题,将开发环境和本地解耦。

如果你的开发需要更好的网络,更强的性能,想着提升本地机器性能的同时,你也要思考下,是否可以利用服务器的网络和性能,来进行 Remote Development。

这篇文章,小岱将带你从零开始,购买云服务器,配置 ssh,安装相关 VSCode 插件,实现远程开发。

购买/配置自己的云服务器

由于本文主要面向学生群体, 将假设读者具有学生身份,或者不满二十五岁。

我们进入购买云服务器的链接:

https://cloud.tencent.com/act/campus

640?wx_fmt=jpeg

看到页面中的服务器,一个月十块,可以说是相当便宜了,点击购买,然后选择系统镜像,CentOS 和 Ubuntu 选一个,小岱比较喜欢 Ubuntu,选择 Ubuntu 即可,最后的配置如下:

640?wx_fmt=jpeg

随后进入控制台,查看你的服务器:

640?wx_fmt=jpeg
页面右上角,进入控制台
640?wx_fmt=jpeg
点击云服务器
640?wx_fmt=png
查看我们的云服务器实例

然后对服务器进行密码重设,设置成我们自己的密码:

640?wx_fmt=jpeg

完成密码重设后,服务器会重启,但是速度很快,大概几秒钟就重启完毕,然后点击登录:

640?wx_fmt=jpeg
640?wx_fmt=jpeg

点击立即登录(我们的默认用户名就是 ubuntu,我们暂且就用默认的,不改了):

640?wx_fmt=jpeg

输入我们刚才设置的密码,然后进入服务器终端:

640?wx_fmt=jpeg

欢迎你,进入了你的服务器~

配置 VS Code

VSCode 的配置很简单,只需要打开 VSCode,在插件市场中搜索 remote development:

640?wx_fmt=jpeg

然后安装即可,注意这是一个 Extension Pack,是几个扩展打包在一起的,它包含了 Remote-WSL,Remote-SSH,Remote-Container,我们使用的其实是 Remote-SSH 插件。

安装 SSH Client:

先在本地安装 SSH Client,只需打开(注意,就是本地,不是在服务器) powershell(管理员身份运行),一个命令解决:

# 输入命令
Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'# 你应该会看到这个结果:Name  : OpenSSH.Client~~~~0.0.1.0
State : NotPresent
Name  : OpenSSH.Server~~~~0.0.1.0
State : NotPresent

然后再来一个命令,正式安装:

# 安装 Client
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0# 返回如下结果,说明安装成功:Path          :
Online        : True
RestartNeeded : False

配置 SSH key:

打开 command prompt,输入命令 cd %USERPROFILE%/.ssh:

640?wx_fmt=jpeg

然后看一下这个文件夹里的东西:

640?wx_fmt=jpeg

你的文件夹很可能是空的,没关系,因为我已经配置过了 ?。

配置方法:输入命令 ssh-keygen -t rsa -b 4096

640?wx_fmt=png

输入 id_rsa ,然后会提示你设置密码, 和刚才服务器的密码设置成相同的就行, 不然容易忘。

随后,你的文件夹里应该就有前面的 id_rsa 和id_rsa.pub 这两个文件了,但是还缺一个 known_hosts。

然后继续输入如下命令:

SET REMOTEHOST=your-user-name-on-host@host-fqdn-or-ip-goes-herescp %USERPROFILE%\.ssh\id_rsa.pub %REMOTEHOST%:~/tmp.pub
ssh %REMOTEHOST% "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat ~/tmp.pub >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys && rm -f ~/tmp.pub"

第一个命令是设置环境变量,事实上在 cmd 中,设置环境变量只是一个命令的事。

REMOTEHOST 后面的和刚才的一样,也是 用户名 @ 主机IP 。后面两个命令是把你本地生成的 pub 文件拷贝到你的远程服务器去。

配置完毕~~~~

开始享受远程开发

打开你的 VSCode,按 ctrl + shift + p, 弹出命令搜索框,搜索 remote:

640?wx_fmt=png

选择该命令,和我们的远程服务器建立连接:

640?wx_fmt=jpeg

在弹出的搜索框里输入我们的 用户名@ 主机ip,然后就会发现 VSCode 打开了一个新窗口:

这个窗口会提示你输密码:

640?wx_fmt=jpeg

只需输入我们刚才配置 ssh key 的时候输入的密码即可。

640?wx_fmt=jpeg

点击open folder,就会看到我们服务器的文件,然后我们进入其中的文件夹 Zhihu-Proxy-Web-app, 这是我用 nodejs 写的一个Web demo。

按 ctrl +` 弹出终端, 迅速通过 apt-get 工具安装开发环境,然后运行我们的 demo web 服务:

640?wx_fmt=png

可以看到用户名和主机名都是我们的远程服务器, npm install 的速度也是非常的快, 毕竟服务器的网络是我们终端 PC 不能比的。

640?wx_fmt=jpeg

应用在 3000 端口运行,我们试着在本地浏览器里访问一下:

http://106.54.60.173:3000/

640?wx_fmt=jpeg

一切正常!(这个 demo 的数据是通过和知乎后端 api 交互获取的,不是简单的静态页面)。

下面简单总结一下远程开发的好处:

  1. 开发环境与本地解耦,更换电脑不影响开发。

  2. 服务器的网络的速度和稳定性往往优于你的 PC,npm install,git clone 等命令会节省你非常多的时间。

  3. 对外服务的应用可以直接通过公网快速访问,方便分享和协作。

  4. 本地的计算压力,内存压力小,即便是配置较低的电脑,也能胜任。

  5. 保留了 VSCode 桌面端的完美体验的同时,还可以享受 linux 环境带来的便捷开发环境体验。

  6. 保证开发环境和部署环境相同,开发和部署无缝衔接。

  7. 方便协作,一个团队可以共享一个服务器,共同对一个服务器进行开发/测试。

如果你还是学生,当你在学习操作系统等课程的时候,这个工具,简直就是降维打击,可以节省你无限的时间。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/313790.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入理解 JVM Class文件格式(七)

本专栏列前面的一系列博客, 对Class文件中的一部分数据项进行了介绍。 本文将会继续介绍class文件中未讲解的信息。 先回顾一下上面一篇文章。 在上一篇博客中, 我们介绍了: this_class 对当前类的描述 super_class 对当前类的超类的描述 in…

P3250 [HNOI2016]网络(整体二分)

P3250 [HNOI2016]网络 给定一棵树,有三种操作: 给定u,v,wu, v, wu,v,w,表示u,vu, vu,v路径上有一个重要度为www的请求,给定ttt,第ttt个发生的请求结束,给定一个xxx,假设xxx发生故障&#xff0…

微信小程序集成腾讯云 IM SDK

1、背景因业务功能需求需要接入IM(即时聊天)功能,一开始想到的是使用 WebSocket 来实现这个功能,然天意捉弄(哈哈)服务器版本太低不支持 wx 协议(也就不支持 WebSocket了)不得不寻找…

深入理解 JVM Class文件格式(八)

在本专栏的第一篇文章 深入理解Java虚拟机到底是什么 中, 我们主要讲解了什么是虚拟机, 这篇博客是对JVM的一个概述。 在随后的几篇文章中,一直在讲解class文件格式。 在今天这篇博客中, 将会继续讲解class文件中的其他信息。 在本…

Function!(计蒜客 - 42386)

Function! fa(x)ax(a>0,a≠1)f_a(x) a ^ x(a > 0, \ a \neq 1)fa​(x)ax(a>0, a​1),我们要求∑a2n(a∑ban⌊fa−1(b)⌋⌈fb−1(a)⌉)\sum\limits_{a 2} ^{n} \left(a \sum\limits_{b a} ^{n} \lfloor f_a ^{-1}(b) \rfloor \lceil f_b ^{-1}(a) \rce…

深入理解 JVM Class文件格式(九)

经过前八篇关于class文件的博客, 关于class文件格式的内容也基本上讲完了。 本文是关于class文件格式的最后一篇。 在这篇博客中, 将会讲解关于方法的几个属性。 理解这篇博客的内容, 对于理解JVM执行引擎起着重要作用。 关于虚拟机执行引擎有…

MongoDB入门及 c# .netcore客户端MongoDB.Driver2.9.1使用

MongoDB 是一个基于分布式文件存储的数据库。由 C 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。什么场景下使用MongoDBMongoDB虽然是NoSQL(非关系型的数据库),但是实际使用的时候可以当做关系型数据库来用,mysql等数据库中单表数据量…

#4604. The kth maximum number(整体二分 + 树套树)

#4604. The kth maximum number 给定一个大小不超过51055 \times 10 ^ 55105的矩形区域,有一些点有点权。 每次询问给定x1,y1,x2,y2,kx_1, y_1, x_2, y_2, kx1​,y1​,x2​,y2​,k问以x1,y1x_1, y_1x1​,y1​为右下角,x2,y2x_2, y_2x2​,y2​为左上角的…

深入理解 JVM Class文件格式(十)

到此, 所有关于class文件格式的重要内容都已经讲解完了, 不敢说面面俱到, 但是敢说大部分重要的内容都包含在内了。前前后后用了9篇博客来专门讲解class文件结构, 为什么花那么多的时间和精力来介绍class文件呢? 简而言…

《WTM送书活动:向更遥远的星辰大海起航~》

点击上方蓝字关注我们吧是的,没错~这一篇不是大老刘写的 哈哈~啥? 你想知道为啥? 大老刘为了你们不加班,熬夜改BUG,姑娘不乐意了...然后...后面请自行脑补~哎~生活还要继续鸭....那么,接下来由我陪大家唠一段儿~ 单口...各位看官老爷们:注意了!第一件事情呢我们的WTM框…

P4602 [CTSC2018]混合果汁(主席树)

P4602 [CTSC2018]混合果汁 共有nnn种果汁,第iii种果汁的美味度为did_idi​,每升价格为pip_ipi​,在一瓶混合果汁中,最多只能添加lil_ili​升。 有mmm个询问,每次询问给出两个数g,Lg, Lg,L,我们要找出价格…

Java中的对象一定在堆上分配吗?

首先,为解释这个问题,需要的基本知识如下(如果对以下概念不太熟悉, 可以先了解下): 1.JVM内存结构,传送门 2.即时编译(JIT),传送门 3. 逃逸分析,…

最全的 netcore 3.0 升级实战方案

1、哈喽大家中秋节(后)好呀!感觉已经好久没有写文章了,但是也没有偷懒哟,我的视频教程《系列一、NetCore 视频教程(Blog.Core)》也已经录制八期了,还在每周末同步更新中,…

H - Hello Ms. Ze(树状数组套主席树,线段树上二分)

H - Hello Ms. Ze 给定nnn种不同的材料,第iii种材料有aia_iai​个,有mmm个操作,操作分为两类: 把第xxx种材料修改为yyy个,只用[l,r][l, r][l,r]区间的材料制作衣服,每件衣服要用kkk个不同的材料&#xff…

JVM——逃逸分析

首先,为解释这个问题,需要的基本知识如下(如果对以下概念不太熟悉, 可以先Google下): 1.JVM内存结构,传送门 2.即时编译(JIT),传送门 逃逸分析 在编译期间…

ASP.NET Core SignalR:集线器Hub

一、什么是集线器hubs通过SignalR的集线器hubs中定义的方法,服务器可以调用连接中的客户端定义的方法,而客户端也可以调用服务器端集线器中定义的方法。SignalR负责实现了客户端和服务器之间的实时通信。二、配置SignalR的hubsSignalR通过在Startup.Conf…

P6271 [湖北省队互测2014]一个人的数论(莫比乌斯反演 + 伯努利数)

P6271 [湖北省队互测2014]一个人的数论 ∑i1nim[gcd⁡(i,n)1]∑d∣nμ(d)dm∑i1ndim由伯努利数可知∑i0nim1m1∑i0mCm1iBi(n1)m−i1设fi1m1Bm−i1Cm1i,则有∑d∣nμ(d)dm(∑i1m1fi(nd)i(nd)m)∑i1m1fini∑d∣nμ(d)dm−i(nm∑d∣nμ(d))考虑后项∑d∣nμ(d)dm−i,迪…

Java面试题汇总

1、综合素质层面 个人介绍、离职原因、兴趣爱好等 https://mp.weixin.qq.com/s?__bizMzI3NzE0NjcwMg&mid2650121143&idx2&snf4c4f26bc5d2132352f12d28c8cb2264&chksmf36bbe96c41c3780d8086adec7be8737ce3718db9c2a7fa33aa7591f8ae179ed3240286f3886&scen…

微软发布.Net Core 3.0 RC1,最终版本定于9月23日

2019.9.17 微软 宣布推出.NET Core 3.0 Release Candidate 1。就像Preview 9一样,主要专注于为 .NET Core 3.0 发布最终版本 。现在变得非常非常接近。将在9月23日.NET Conf上发布最终版本。.NET Core 3.0是从仅支持Windows传统的 .NET框架向更现代化的开源实现过渡…

JVM内存结构 VS Java内存模型 VS Java对象模型

Java作为一种面向对象的,跨平台语言,其对象、内存等一直是比较难的知识点。而且很多概念的名称看起来又那么相似,很多人会傻傻分不清楚。比如本文我们要讨论的JVM内存结构、Java内存模型和Java对象模型,这就是三个截然不同的概念&…