10分鐘就能搭建遠程開發環境?你早點怎么不出現(#`n´)!

陳曉猛

2020-03-25

疫情嚴重的日子里,人們對遠程辦公的渴望達到了巔峰。但在經歷了多次試錯與崩潰后,才發現能有一款與自己合拍的遠程編程工具是多么的重要??!

很多我們花費半天時間的事情,其實也許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)。

讀者評論

相關博文

  • 社區使用反饋專區

    陳曉猛 2016-10-04

    尊敬的博文視點用戶您好: 歡迎您訪問本站,您在本站點訪問過程中遇到任何問題,均可以在本頁留言,我們會根據您的意見和建議,對網站進行不斷的優化和改進,給您帶來更好的訪問體驗! 同時,您被采納的意見和建議,管理員也會贈送您相應的積分...

    陳曉猛 2016-10-04
    3817 641 3 6
  • 迎戰“雙12”!《Unity3D實戰核心技術詳解》獨家預售開啟!

    陳曉猛 2016-12-05

    時隔一周,讓大家時刻掛念的《Unity3D實戰核心技術詳解》終于開放預售啦! 這本書不僅滿足了很多年輕人的學習欲望,并且與實際開發相結合,能夠解決工作中真實遇到的問題。預售期間優惠多多,實在不容錯過! Unity 3D實戰核心技術詳解 ...

    陳曉猛 2016-12-05
    2382 34 0 1
  • czk 2017-07-29
    3261 23 0 1
国际官方棋牌下载中心 体彩十一运夺金查询 浙江11选五遗漏查询 江西十一选五走势图定牛 广西11选5开奖结果查询 12博娱乐城玩百家乐 贵州十一选五历史开奖结果 河南体彩11选5走势图 18luck百家乐 湖南快乐十分经验 特斯拉股票行情实时查询