雲服務器搭建神器JupyterLab(多圖)
JupyterLab是一個交互式的開發環境,其用於應對包含着notebook、代碼以及數據的工作場景。

1、前言
如果說vim是編輯器之神,那么JupyterLab就是筆記本之神。
從2017年開始我注意到這一神奇的IDE筆記本,第一眼見到它,就覺得它真的太強大了,作為一個交互式的Python開發工具,其實也不算開發工具,准確的來說,它是一個演示代碼的科學數據工具,支持markdown預覽,支持Draw擴展,支持豐富的文件格式和多種開發語言,擁有眾多插件諸於GitHub, Google-Dirve, Git和TOC,更重要的是,它是把瀏覽器當作開發工具,十分有創意。JupyterLab的開發者眾多,GitHub上面的isuue也十分活躍,眾多的大牛開發者也紛紛加入到JupyterLab的陣營,為JupyterLab的發展作貢獻,JupyterLab得到迅速發展。
好的工具當然是要好好利用了,回歸正題,怎樣通過雲服務器搭建一個可遠程使用的JupyterLab?
目的:為了在沒有安裝python的機器上工作,直接用瀏覽器進入,進行代碼的調試和顯示了
2、購買雲服務器ECS

這里我就直接買了阿里的學生優惠的ECS,9.9元/月,價格算是良心了,這里可以領一下優惠券:阿里雲限時禮包。亞馬遜還有每個賬戶免費使用一年雲服務器的機會,也可以用一用。購買之后創建實例,啟動雲服務器,我這里用的是Ubuntu 16.04鏡像,記住你設置的root密碼。如果沒有特殊要求,可以直接使用root用戶進行下面操作,不必新建用戶。
3、登錄ECS並安裝必要軟件

sudo apt-get install ssh
ssh root@公網ip
- 1
- 2
這個ip是公網ip,在你購買的服務器運營商的實例列表里,如果不出意外就可以登錄ECS了。
3.1 先做好准備工作
比喻你添加ppa源的時候出現這種情況
root@iZwz9huxtbd86xp91s3j16Z:~# sudo add-apt-repository ppa:chronitis/jupyter sudo: add-apt-repository: command not found
- 1
- 2
解決辦法
sudo apt-get install software-properties-common
- 1
3.2 關於pip的問題
安裝pip
- 第一步:Install pip and virtualenv for Ubuntu 16.04LTS Maverick and newer
sudo apt-get install python-pip python-dev build-essential sudo pip install --upgrade pip sudo pip install --upgrade virtualenv
- 1
- 2
- 3
- 第二步:Install Easy Install
sudo apt-get install python-setuptools python-dev build-essential
- 1
- 第三步:Install pip
sudo easy_install pip
- 1
- 第四步Install virtualenv
sudo pip install --upgrade virtualenv
- 1
- For Python3
sudo apt-get install python3-pip
- 1
- For Python2
sudo apt-get install python-pip
- 1
升級pip
sudo pip3 install --upgrade pip
sudo pip2 install --upgrade pip
sudo pip install --upgrade pip
- 1
- 2
- 3
更換pip源加速下載
- 阿里雲 http://mirrors.aliyun.com/pypi/simple/
- 中國科技大學 https://pypi.mirrors.ustc.edu.cn/simple/
- 豆瓣(douban) http://pypi.douban.com/simple/
- 清華大學 https://pypi.tuna.tsinghua.edu.cn/simple/
- 中國科學技術大學 http://pypi.mirrors.ustc.edu.cn/simple/
cat > ~/.pip/pip.conf [global] index-url = https://pypi.tuna.tsinghua.edu.cn/simple
- 1
- 2
- 3
npm和yarn也可以換源,更簡單,自行google。
pip國內的一些鏡像包,換源之后出現python2版本過低的情況導致以前的包下載不了,那就直接將文件夾~/.pip/pip.conf刪除就可以恢復原來的源。
pip指向問題
有時候會出現pip,pip2,pip3都TM指向python2,這個之后就需要改一下這這三個文件。
編輯這三個文件,將第一行注釋分別改為python\python2\python3
~ $which pip /usr/local/bin/pip 21:36 alien@alien-Inspiron-3443: ~ $which pip2 /usr/local/bin/pip2 21:36 alien@alien-Inspiron-3443: ~ $which pip3 /usr/local/bin/pip3
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
3.3 安裝yarn和nodejs
配置倉庫
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add - echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
- 1
- 2
安裝yarn
sudo apt-get update sudo apt-get install yarn
- 1
- 2
注意這里yarn自動安裝了nodejs,不過版本太低,安裝jupyterlab的時候會出問題,而且使用n或者nvm安裝的nodejs也有問題,總之nodejs要按照下面這種方式就沒事,這個是官方的bug,官方issue也提到過,但是目前還未解決。
安裝nodejs
創建一個新文件,輸入兩行deb,結束之后Ctrl+C:
cat > /etc/apt/sources.list.d/nodesource.list deb https://deb.nodesource.com/node_6.x xenial main deb-src https://deb.nodesource.com/node_6.x xenial main
- 1
- 2
- 3
導入公匙並安裝nodejs,這個版本的nodejs對jupyterlab支持比較友好。
curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | sudo apt-key add -
sudo apt-get update
apt-cache policy nodejs
sudo apt-get install nodejs
nodejs --version
- 1
- 2
- 3
- 4
- 5
安裝ipython,matplotlib,scipy,pandas,numpy
最好python2和python3都安裝。
4、安裝JupyterLab及其配置
記住使用pip2安裝,如果你用pip3安裝的話可能會出現版本兼容問題。
sudo pip2 install jupyterlab
- 1
生成密碼
jupyter-notebook password
- 1
4.1 創建哈希密碼
ipython
from notebook.auth import passwd passwd() # 輸入你自己設置登錄JupyterLab界面的密碼, # 然后就會生產下面這樣的密碼,將它記下來,待會兒用 'sha1:b92f3fb7d848:a5d40ab2e26aa3b296ae1faa17aa34d3df351704'
- 1
- 2
- 3
- 4
- 5
- 6
4.2 修改JupyterLab配置文件
先生成一個配置文件,記下輸出的配置文件地址
jupyter lab --generate-config
- 1
修改配置文件,找到下面這幾行文件,注釋掉並修改成這樣。
c.NotebookApp.allow_root = True c.NotebookApp.ip = '0.0.0.0' c.NotebookApp.notebook_dir = u'/root/JupyterLab' c.NotebookApp.open_browser = False c.NotebookApp.password = u'sha1:b92f3fb7d848:a5d40ab2e26aa3b296ae1faa17aa34d3df351704' c.NotebookApp.port = 8080
- 1
- 2
- 3
- 4
- 5
- 6
對應每行稍微解釋一下
允許以root方式運行jupyterlab
允許任意ip段訪問
設置jupyterlab頁面的根目錄
默認運行時不啟動瀏覽器,因為服務器默認只有終端嘛
設置之前生產的哈希密碼
設置訪問端口
- 1
- 2
- 3
- 4
- 5
- 6
到此,JupyterLab已經安裝成功了。
jupyter-lab --version
0.33.12
jupyter lab build
- 1
- 2
- 3
jupyter lab build時間有點久,如果沒報錯就成功了。但此時你還不能訪問JupyterLab,還需要添加端口規則,也就是所謂的添加安全組。
5、添加安全組

去ECS控制台添加安全組,不然你無法通過本地瀏覽器訪問JupyterLab,設置8080端口入方向。


遠程訪問JupyterLab
運行下面命令。
# nohup表示ssh終端斷開后仍然運行 # &表示允許后台運行 nohup jupyter lab &
- 1
- 2
- 3
瀏覽器輸入公網ip:8080,就可以訪問你的JupyterLab了,第一次訪問比較慢,耐心一點,如果最終還是無法訪問,那么就是你的安全組配置錯啦。

輸入密碼就可以用了。
6、JupyterLab擴展安裝

查看已經安裝的擴展及其狀態:
jupyter labextension list
- 1
比喻安裝一個擴展jupyterlab_html,支持html預覽:
jupyter labextension install @mflevine/jupyterlab_html
- 1
卸載擴展:
jupyter labextension uninstall @mflevine/jupyterlab_html
- 1
更新所有擴展:
jupyter labextension update --all
- 1
下面以安裝GitHub擴展為例。
安裝GitHub擴展
先去GitHub生成一個token,記下token,待會兒配置要用。

下載安裝擴展:
jupyter labextension install @jupyterlab/github
- 1
配置token
# 在之前的生成的config文件中添加 c.GitHubConfig.access_token = '< YOUR_ACCESS_TOKEN >'
- 1
- 2
需要其他擴展的在GitHub可以自行下載。

7、內核安裝與卸載

安裝Python內核
sudo pip2 install ipykernel sudo pip3 install ipykernel
- 1
- 2
如果pip指向正常的話就可以看到兩個Python內核了。
查看已經安裝的內核
jupyter kernelspec list
- 1
刪除你不需要的內核
jupyter kernelspec remove <kernel_name> /root/JupyterLab
- 1
- 2
8、域名和https配置
域名和SSL配置可以參考這兩篇文章:
- 阿里雲如何配置HTTPS
- nginx服務器配置教程(以ubuntu 16.04為例): https://github.com/lensh/vue-qq/issues/13
其實為覺得沒必要,畢竟是個人用的工具,沒必要搞個域名,不過強迫症就另說了。具體效果是這樣的:

- 我的
nginx配置:nginx.conf
9、結語
JupyterLab的搭建就是這么簡單,好的工具就應該好好利用,支持做圖,markdown,多標簽,內部打開網頁,latex,網頁預覽,這么好的工具我應該早點發現呀。最后,以秀圖結束本文,多多指教!
- 畫圖:

- 多語言支持:

markdown寫作體驗:

- 內部打開網頁:

- 多標簽和幫助文檔

- 豐富的擴展插件及其管理配置:
