大家都知道,對於從事數據科學或者機器學習的人來說,用jupyter做實驗簡直就是一個神器,但是往往許多算法和模型我們都希望利用遠程的linux服務器進行實現和測試
這裏介紹一種能用本地的瀏覽器訪問服務器上架設的jupyter的方案,使得我們可以通過本地瀏覽器使用服務器的計算資源、訪問服務器上的文件系統
下面正片開始:
- 官網下載anaconda,或者用pyenv下載都行,安裝到服務器,個人用戶的東西安裝不要用sudo權限。(anaconda是一個很方面的python管理和集成包,裏面包含一個python版本和對應的一些工具,其中就包括jupyter)
- 接下來,我們需要在當前用戶的根目錄創建一個名爲nbserver的配置文件。
$ ipython profile create nbserver
- 這將創建一個文件夾,其中包含一些原始的配置文件。我們跳轉到這個文件夾進行一些配置
$ cd ~/.ipython/profile_nbserver/
- 由於ipython Notebook要求https連接,因此我們需要創建一個ssl證書。
$ openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout mycert.pem -out mycert.pem
- 啓動ipython:(ipython其實就是jupyter的底層shell界面,所以我們裝的anaconda裏面會自帶jupyter,同時也有了ipython)
$ ipython
創建遠程連接密碼:
In [1]: from notebook.auth import passwd;
In [2]: passwd()
運行之後進入一個創建密碼hash值的小程序,根據提示輸入你想用的安全口令(這是之後在本地瀏覽器,登陸服務器所需要的密碼):
Enterpassword:
Verifypassword:
然後會輸出(下面是我的密碼的hash值,後段被刪除,你的密碼得到的結果應該不同,這個hash值要記住,之後要寫入配置文件):
Out [2]: sha1:b86e933199ad:a02e9592e59723da722..
- 然後退出ipython,開始編輯配置文件,通過vi編輯文件的命令如下:
vim ipython_notebook_config.py
這個文件可能不存在,那麼這條命令會自動創建一個,配置文件的內容如下:
c=get_config()
# 所有matplotlib的圖像都通過iline的方式顯示
c.IPKernelApp.pylab='inline'
# 這一行指向我們剛剛創建的ssl證書,這裏的路徑要給絕對路徑(反正我給相對路徑報錯)
c.NotebookApp.certfile=u'/home/XXX/.ipython/profile_nbserver/mycert.pem'
# 給出剛剛創建的密碼的哈希值
c.NotebookApp.password=u'sha1:b86e933199ad:a02e9592e59723da722..'
c.NotebookApp.ip='*'
# 給出運行的端口,ipython默認爲8888
c.NotebookApp.port=8888
# 禁止在運行ipython的同時彈出瀏覽器
c.NotebookApp.open_browser=False
複製粘貼進去之後,摁esc,然後 ‘:wq’ 保存退出。
7. 配置完畢以後就可以運行ipython notebook或者jupyter lab的服務端了:
$ jupyter notebook --config=~/.ipython/profile_nbserver/ipython_notebook_config.py #給出你剛纔創建的nbserver路徑
$ jupyter lab --config=~/.ipython/profile_nbserver/ipython_notebook_config.py #給出你剛纔創建的nbserver路徑
- 在你的本地瀏覽器地址欄輸入:
https://192.168.xxx.X:8888(這裏就輸入你服務器的IP地址,加上配置的端口號8888,注意前面的https不能省,省了會報錯,例如:SSL Error on 13(‘192.168.1.110’, 9349): [SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:645))
注意:最好用chrome 瀏覽器
最後瀏覽器打開的根路徑是之前在服務器上啓動jupyter notebook時所在的服務器路徑,所以你最好在服務器的用戶根目錄下啓動你配置好的jupyter,然後就和我們使用本地的jupyter一樣了。
注意有時候服務器啓動jupyter的時候可能報類似下面的這種錯誤:
PermissionError: [Errno 13] Permission denied: '/Users/JDMac/Library/Jupyter/runtime'
可以通過在服務器配置文件中加下面這條語句解決:
$ export XDG_RUNTIME_DIR="" then start the jupyter $jupyter notebook