远程开发初探 - 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…

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

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

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

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

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

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

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

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

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

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

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

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

最全的 netcore 3.0 升级实战方案

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

微软发布.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对象模型,这就是三个截然不同的概念&…

迫于误解压力,RMS从自由软件基金会与MIT离职

自由软件基金会官网显示,基金会创始人兼主席、自由软件运动发起人 Richard M. Stallman(RMS)辞去主席职务并辞去董事会职务。而另一边,stallman.org 邮件列表显示,RMS 已经从麻省理工学院(MIT)计…

让人迷茫的三十岁!从专业技能、行业知识和软实力谈一下!

作者:邹溪源,长沙资深互联网从业者,架构师社区合伙人!我今年三十岁,我很迷茫,不知道未来该选择什么发展方向。这是我无意中在社区微信群中看到的一位年轻的开发者说的话,之前他也经常会在技术群…

误用.Net Redis客户端工具CSRedisCore,自己挖坑自己填

前导  上次Redis MQ分布式改造完成之后, 编排的容器稳定运行了一个多月,昨天突然收到ETL端同事通知,没有采集到解析日志了。赶紧进服务器看了一下,用于数据接收的receiver容器挂掉了, 尝试docker container start [c…

Java——类加载机制

** 一、什么是类的加载 ** 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的Class…

.NET中国峰会议题征集

月初做的调查《》,参与人数576人,愿意参与分享.NET Core经验的142人,今天发起分会场主题演讲和闪电演讲议题.2014年微软组织成立.NET基金会,微软在成为主要的开源参与者的道路上又前进了一步。2014年以来已经有众多知名公司加入.N…

一些学习教程资料等你来拿

近期整理自己的云盘中发现近年来私藏了很多学习资料和教程,本着独乐乐不如众乐乐的精神,特将其分享出来供有兴趣的童鞋学习。进入公众号,输入关键词"敏捷"/"agile"/"scrum",即可获得敏捷开发类别的…

Java——编译与反编译

** 一、基础知识 ** 1.1 编程语言 在介绍编译和反编译之前,我们先来简单介绍下编程语言(Programming Language)。编程语言(Programming Language)分为低级语言(Low-level Language)和高级语…

程序员自家种水果,新鲜包邮配送

上次猕猴桃的活动<好多小伙伴&#xff0c;买了一箱尝过后又下单了好几箱。事实证明&#xff0c;品质才是销量的最佳保证。有些粉丝找到我说&#xff0c;自己家也有果园自己种水果&#xff0c;都是当天采摘当天发货的纯天然水果。于是他们给我寄了一些自家种的苹果、香瓜、冬…

【招聘(广州)】-年薪30W起-自助打印领域业内第一

印萌是一家为高校打印店提供整套“无人自助打印”解决方案的互联网科技公司&#xff0c;已获得数百万元融资&#xff0c;公司正向盈利。目前产品覆盖清华大学、北京大学、中山大学、复旦大学、浙江大学等700多所高校&#xff0c;多达1800间打印店&#xff0c;累计为全国1200万大…

尾递归

1、递归 简单的来说递归就是一个函数直接或间接地调用自身&#xff0c;是为直接或间接递归。一般来说&#xff0c;递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时&#xff0c;递归前进&#xff1b;当边界条件满足时&#xff0c;递归返回。 用递归需要注意以…