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

陈晓猛

2020-03-25

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

很多我们花费半天时间的事情,其实也许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命令生成配置文件。

$ jupyter lab --generate-config

第三步,进行加密

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

$ python -c "from notebook.auth import passwd; print(passwd())"
Enter password:
Verify password:
sha1:40b227e347eb:2a3c56620f990edfe3aecd21fbf62e038c3f92b3

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

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

$ openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout mykey.key -out mycert.pem

第四步,修改配置

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

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

第五步 启动服务

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

$ 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文件所在的目录。

然后执行启动命令。

$ 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,欢迎与我交流(微信号:bohy_i)。

读者评论

相关博文

  • 社区使用反馈专区

    陈晓猛 2016-10-04

    尊敬的博文视点用户您好: 欢迎您访问本站,您在本站点访问过程中遇到任何问题,均可以在本页留言,我们会根据您的意见和建议,对网站进行不断的优化和改进,给您带来更好的访问体验! 同时,您被采纳的意见和建议,管理员也会赠送您相应的积分...

    陈晓猛 2016-10-04
    5420 735 3 7
  • 迎战“双12”!《Unity3D实战核心技术详解》独家预售开启!

    陈晓猛 2016-12-05

    时隔一周,让大家时刻挂念的《Unity3D实战核心技术详解》终于开放预售啦! 这本书不仅满足了很多年轻人的学习欲望,并且与实际开发相结合,能够解决工作中真实遇到的问题。预售期间优惠多多,实在不容错过! Unity 3D实战核心技术详解 ...

    陈晓猛 2016-12-05
    3299 36 0 1
  • czk 2017-07-29
    5866 28 0 1