发布时间:2023-05-21 19:30
疫情严重的日子里,人们对远程办公的渴望达到了巅峰。但在经历了多次试错与崩溃后,才发现能有一款与自己合拍的远程编程工具是多么的重要啊!
很多我们花费半天时间的事情,其实也许10分钟就能轻松搞定。本文就来为大家介绍3个 能在10分钟内搭建起来的强大又好用的远程开发环境 **!包含的编程工具有:Jupyter、code-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等远程桌面工具而言,可以极大限度的减少网络带宽占用!
此外,远程环境大家是可以共享共用的,这在一定程度上也避免了多套重复环境的搭建,对于公司而言,在提高了工作效率的同时也节省了系统资源。
不过,需要注意的是,上文讲述的这些步骤都是在使用量不大的情况下进行的,如果有成百上千个甚至更多的人在同时使用的话,那性能上可能就扛不住了,这个时候建议使用docker、Nginx等工具将这些服务搭建成集群的形式以供大家使用。
本文作者:
博海,一个沉迷于技术并且追求艺术的pythoner,欢迎与我交流(微信号:bohy_i)。
更多科技资讯请见微信公众号:博文视点Broadview(微信号:bvbooks)
深圳/合肥/苏州 | 未来机器人招聘标定算法工程师/感知算法工程师等岗位
第 3 章 Ajax 动态请求破解(3.1 Ajax 简介、网页翻页方式的对比)
vue/react使用JSDoc、jsconfig.json 完成vscode对于webpack的alias引入的js方法的提示
MindSpore易点通·精讲系列--数据集加载之ImageFolderDataset
HMS Core 机器学习服务打造同传翻译新“声”态,AI让国际交流更顺畅
Linux笔记3(用户权限类,搜索查找类,压缩解压类,磁盘管理类,进程管理类,系统定时任务)
关于@ConditionalOnProperty的作用及用法说明