本地用瀏覽器遠程訪問服務器上的jupyter notebook或者jupyter lab,並解決啓動時的PermissionError錯誤

大家都知道,對於從事數據科學或者機器學習的人來說,用jupyter做實驗簡直就是一個神器,但是往往許多算法和模型我們都希望利用遠程的linux服務器進行實現和測試
這裏介紹一種能用本地的瀏覽器訪問服務器上架設的jupyter的方案,使得我們可以通過本地瀏覽器使用服務器的計算資源、訪問服務器上的文件系統

下面正片開始:

  1. 官網下載anaconda,或者用pyenv下載都行,安裝到服務器,個人用戶的東西安裝不要用sudo權限。(anaconda是一個很方面的python管理和集成包,裏面包含一個python版本和對應的一些工具,其中就包括jupyter)
  2. 接下來,我們需要在當前用戶的根目錄創建一個名爲nbserver的配置文件。
$ ipython profile create nbserver
  1. 這將創建一個文件夾,其中包含一些原始的配置文件。我們跳轉到這個文件夾進行一些配置
$ cd ~/.ipython/profile_nbserver/
  1. 由於ipython Notebook要求https連接,因此我們需要創建一個ssl證書。
$ openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout mycert.pem -out mycert.pem
  1. 啓動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..
  1. 然後退出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路徑


  1. 在你的本地瀏覽器地址欄輸入:

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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章