前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >10分钟就能搭建远程开发环境?你早点怎么不出现(#`n´)!

10分钟就能搭建远程开发环境?你早点怎么不出现(#`n´)!

作者头像
博文视点Broadview
发布2020-06-11 10:22:53
7880
发布2020-06-11 10:22:53
举报

疫情严重的日子里,人们对远程办公的渴望达到了巅峰。但在经历了多次试错与崩溃后,才发现能有一款与自己合拍的远程编程工具是多么的重要啊!

很多我们花费半天时间的事情,其实也许10分钟就能轻松搞定。本文就来为大家介绍3个 能在10分钟内搭建起来的强大又好用的远程开发环境 !包含的编程工具有:Jupytercode-server以及PyCharm

虽然复工大潮正在逐步进行中,但仍然值得收藏!

毕竟手中有粮,才能心中不慌嘛!

Jupyter

Jupyter是一个基于Python的交互式笔记本开发环境,一般在数据分析和算法研究领用的比较广。它最早叫做Jupyetr Notebook,现在功能进行了升级和改版,称作JupyterLab。

Jupyter强大得犹如万花筒 ,不光支持几十种编程语言的运行,并且还集成了Markdown语法,能够助你实现“文学编程”。

凭借方便的魔术命令和丰富的扩展插件,Jupyter犹如万花筒般有着非常多样化的功能,除了可以作为开发环境,Jupyter还能用来做幻灯片、演示教学以及分享笔记等等。

所以能把Jupyter用好,那真的是如同有神兵在手!

以Linux环境为例,Jupyter的部署主要有下面几个步骤:

第一步, 安装Jupyter

主要有两种方式:

①可以在Python环境下通过pip的命令 pip install --user jupyterlab 来安装。②可以直接安装Anaconda这个工具。

第二步,生成配置

在命令行中执行jupyter notebook命令生成配置文件。

代码语言:javascript
复制
1$ jupyter lab --generate-config

第三步,进行加密

执行下面的Python命令生成加密过密码串,

代码语言:javascript
复制
1$ python -c "from notebook.auth import passwd; print(passwd())"
2Enter password:
3Verify password:
4sha1:40b227e347eb:2a3c56620f990edfe3aecd21fbf62e038c3f92b3

期间需要大家输入并确认自己的密码,之后就会输出加密后的密码,复制其中 : 后面的所有内容,然后切换到 ~/.jupyter 目录,利用openssl命令生成Https的秘钥和证书文件。

注意,这种方式生成的证书是本地的,所以浏览器在访问Jupyter的时候会有警告,大家可以不用理会,点解接受或者同意就可以了。

代码语言:javascript
复制
1$ openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout mykey.key -out mycert.pem

第四步,修改配置

配置文件~/.jupyter/jupyter_notebook_config.py中的项目很多,我们这里只列出其中比较重要的几个配置项,其它的可根据需要自行进行修改设置。

代码语言:javascript
复制
 1# *或者'0.0.0.0'表示开放本机所有IP地址的Jupyter服务,也可以指定本机某个IP地址
 2c.NotebookApp.ip = '*'
 3# 指定Jupyter的工作目录
 4c.NotebookApp.notebook_dir = u'C:/Users/zzl-128/Desktop/tmp/' 
 5# 默认是否打开浏览器
 6c.NotebookApp.open_browser = False
 7# 加密后的密码
 8c.NotebookApp.password = u'sha1:40b227e347eb:2a3c56620f990edfe3aecd21fbf62e038c3f92b3'
 9# 证书
10c.NotebookApp.certfile = u'C:/Users/zzl-128/.jupyter/mycert.pem'
11# 秘钥
12c.NotebookApp.keyfile = u'C:/Users/zzl-128/.jupyter/mykey.key'
13# 所用端口号
14c.NotebookApp.port = 8888

第五步 启动服务

先使用端口映射将Jupyter服务的端口(如8888)映射到公网上,

代码语言:javascript
复制
1$ nohup jupyter lab &

随后使用命令启动Jupyter服务,等上几秒钟在外网浏览器中输入 https://DDNS设置的域名:映射出来的端口号 ,不出意外的话就能连接上内网的Jupyter服务了,或者通过Jupyter中的终端工具来操作内网中的主机,或者使用内网的工程环境进行项目开发都是很方便的,由于我们做了加密,所以数据传输也是比较安全可靠的。

code-server远程

说起code-server这个东东,知道的估计不多,但如果说起VScode,想必在IT圈无人不知无人不晓。

VScode是一款轻量级的文本编辑器,由于配置灵活以及插件海量的特点,可以搭建很多种语言的项目开发环境,所以深受大家的喜爱,被称为世界上最强的编辑器!

后来有“好事者”觉得不过瘾,搞了一个叫code-server的项目——把VScode搬上浏览器。

没错,我们可以把code-server理解为Web服务版的VScode

它和Jupyter类似,可以在浏览器中打开和使用,但相比而言,code-server远程的搭建更加简单一些:

第一步,下载code-server

可以在如下地址选择最新的code-server安装包(Linux环境)并下载解压,解压的文件中除code-server之外可以都删掉。

https://github.com/cdr/code-server/releases

第二步,准备Linux环境

可以直接在Windows10的应用商店中安装一个Linux子系统,稳妥起见建议选择Ubuntu发行版。

第三步,启动服务

同样先使用端口映射将code-server服务的端口(如9999)映射到公网上,然后通过Windows Terminal打开子系统的命令行,并切换到code-server文件所在的目录。

然后执行启动命令。

代码语言:javascript
复制
1$ nohup ./code-server --cert mycert.pem --cert-key mykey.key --host 0.0.0.0 --auth password --port 9999 &

各选项参数的含义和前面的Jupyter比较类似,这里不再赘述。(有兴趣的同学可以通过 ./code-server --help 来查看其所有参数的使用说明。)

最后,和Jupyter的远程一样,最后在外网浏览器中输入 https://DDNS设置的域名:映射出来的端口号 就可以尽情的享受Web上的VSCode了。

PyCharm远程

PyCharm是目前Python语言最专业的集成开发环境,主针对Python开发的功能非常全面,通过插件也可以实现其它个别语言的开发,但没办法和上面两位相比。

PyCharm的远程实际上代表了一类远程方式——ssh远程

Java的IDAE、VSCode都可以按照这个思路来进行远程开发,其中的原理是相通的,这里以最具代表性的PyCharm为例来讲一讲如何通过ssh实现远程开发。

远程开发要解决两个问题:①如何使用远程服务端的语言环境,也就是Python的解释器;②本地代码怎样如何传到服务端。在PyCharm中这两个问题都可以通过配置来实现。

第一步, 开启ssh服务

安装ssh服务并开启(网上教程非常的多,不会的话可自行搜索哦),然后配置公网IP并通过端口映射将ssh服务映射出去。

第二步,设置远程解释器

打开Pycharm,从菜单栏中依次选择 File → Settings → Project Interpreter 进入到解释器设置界面。

点击Add选项并在弹出的面板中选择SSH Interpreter,依次输入远程地址和用户名密码、选择远程解释器路径就OK了;

第三步, 设置远程文件同步

从菜单栏中依次选择 Tools → Deployment → Configuration ,进入到配置界面。

点击添加(+)选择SFTP,

根据自己的情况填写 Connection Mappings 两个面板的信息,最后一确认也就OK了。

如果要觉得每次上传代码很麻烦,可以勾选 Tools → Deployment → Automatic Upload 实现自动上传。如此之后你就可以实现在本地开心地编码,而在远程简单的运行和调试啦!

上面讲的三个远程工具和方法都是用来进行开发或者测试的,只会有一些少量的数据传输,所以相对于直接使用TeamViewer等远程桌面工具而言,可以极大限度的减少网络带宽占用!

此外,远程环境大家是可以共享共用的,这在一定程度上也避免了多套重复环境的搭建,对于公司而言,在提高了工作效率的同时也节省了系统资源。

不过,需要注意的是,上文讲述的这些步骤都是在使用量不大的情况下进行的,如果有成百上千个甚至更多的人在同时使用的话,那性能上可能就扛不住了,这个时候建议使用dockerNginx等工具将这些服务搭建成集群的形式以供大家使用。

本文作者:

博海,一个沉迷于技术并且追求艺术的pythoner。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-03-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 博文视点Broadview 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档