1. 程式人生 > >Ubuntu系統下IPython Notebook的遠端訪問配置

Ubuntu系統下IPython Notebook的遠端訪問配置

最近由於要分析資料,而資料存在於伺服器並且資料量比較大,拷貝到本地顯然比較麻煩。便自然而然想到了最近剛開始使用的IPython Notebook。由於IPython Notebook是基於Web服務模式的,所以我們可以在遠端伺服器開啟IPython伺服器,在本地客戶端啟動IPython Web互動介面,這樣可以很方便地操作遠端資料。

伺服器系統是Ubuntu 14.04,使用系統預裝的Python 2.7,當然我使用Python 2.7的另一個原因是該版本可以很方便地使用scapy庫(scapy庫貌似對Python3還不能很好地支援)。

將IPython Notebook遠端訪問配置的過程記錄如下。

1.安裝IPython 與 IPython Notebook

這一過程與上一篇【IPython介紹】中介紹的安裝過程是一致的,即使用pip管理工具安裝即可。首先在Terminal下,安裝IPython:

sudo pip install ipython

接著安裝IPython Notebook:

sudo pip install ipython notebook

2.建立登入密碼

在伺服器上啟動IPython,生成自定義密碼的sha1:

In [1]: from IPython.lib import passwd
In [2]: passwd()
Enter
password: Verify password: Out[2]: 'sha1:026678de36b2:e4b83078e02c470b15789ade069359a20b0385dd'

匯入passwd方法,並呼叫。在輸入兩次密碼之後,程式會生成該密碼的sha1加密字串。要牢記自己輸入的密碼,並且記錄下生成的加密字串,下面的配置要用到。

3.建立IPython notebook伺服器

在Terminal下,執行如下語句:

ipython profile create myserver

這裡的myserver是自定義的伺服器名字。

執行之後,命令列會有輸出,告訴我們生成的檔案在哪裡。一般在/home/yourname

/.ipython/profile_myserver/這個資料夾下,我的使用者名稱是qiang,所以,生成的檔案在/home/qiang/.ipython/profile_myserver/資料夾下。

我們可以進入到該資料夾下,並檢視一下生成的檔案:

進入資料夾並看看檔案

一般沒有問題的話,會生成ipython_config.pyipython_kernel_config.pyipython_notebook_config.py三個檔案。

我們重點要關注的是ipython_notebook_config.py這個檔案,待會兒我們要修改該檔案來配置伺服器。不過,有時候這個檔案不能生成,這時候我們自己在這裡新建即可,使用vim或者gedit。我自己配置的時候就沒有生成ipython_notebook_config.py這個檔案,我使用gedit新建了一個:

gedit ipython_notebook_config.py

4.修改ipython_notebook_config.py配置檔案

在該檔案中輸入如下配置並儲存:

c = get_config()

# Kernel config
c.IPKernelApp.pylab = 'inline'

# Notebook config
c.NotebookApp.ip='*'
c.NotebookApp.open_browser = False
c.NotebookApp.password = u'sha1:026678de36b2:e4b83078e02c470b15789ade069359a20b0385dd'

# It's a good idea to put it on a know,fixed port
c.NotebookApp.port = 6789

可以看到,該配置檔案配置了監聽的IP地址,預設開啟瀏覽器的方式,登入密碼以及監聽的埠。

5.啟動IPython notebook伺服器

在Terminal下輸入如下語句,啟動IPython notebook伺服器:

ipython notebook --config=/home/qiang/.ipython/profile_myserver/ipython_notebook_config.py

其實現在最好使用jupyter notebook命令,即:

jupyter notebook --config=/home/qiang/.ipython/profile_myserver/ipython_notebook_config.py

可以看到,該條命令啟動了IPython Notebook伺服器,並指向了我們剛剛編輯儲存過的配置檔案。

如果正常的話,我們會看到這樣的輸出:

 The Jupyter Notebook is running at: http://[all ip addresses on your system]:6789/

6.本機測試

我的伺服器的IP地址是172.16.1.126,在我的本機瀏覽器上輸入172.16.1.126:6789測試:

測試

輸入我們剛剛設定的密碼之後,便可以登入成功了。

7.擴充套件之使用HTTPS訪問

在完成以上6步之後,我們就可以在本機正常使用HTTP協議來訪問IPython Notebook伺服器了,但有時為了安全考慮,比如我們的伺服器不是搭建在內網中,而是在公網上,這時候就需要考慮資料傳輸的安全問題,即要使用HTTPS,要有證書。

我們自己測試的話可以建立自簽名的證書,當然你也可以花錢申請證書。

7.1 建立自簽名的證書

我們可以使用openssl建立一個自簽名證書,由於是自簽名所以瀏覽器會提示警告,選擇信任exception即可。

openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout mycert.pem -out mycert.pem

這裡要記住生成的mycert.pem檔案的位置,可以使用pwd命令檢視。

7.2 修改配置檔案

這時,我們需要修改ipython_notebook_config.py配置檔案,其實只需要在檔案中加上一句話即可,這句話指示證書的位置:

c.NotebookApp.certfile = u'/home/qiang/mycert.pem'

這時的配置檔案如下:

c = get_config()

# Kernel config
c.IPKernelApp.pylab = 'inline'

# Notebook config
c.NotebookApp.ip='*'
c.NotebookApp.certfile = r'/home/qiang/mycert.pem'
c.NotebookApp.open_browser = False
c.NotebookApp.password = u'sha1:026678de36b2:e4b83078e02c470b15789ade069359a20b0385dd'

# It's a good idea to put it on a know,fixed port
c.NotebookApp.port = 6789

7.3 執行伺服器並在本機使用HTTPS測試

上述步驟完成之後,就可以重新使用下述語句啟動伺服器:

jupyter notebook --config=/home/qiang/.ipython/profile_myserver/ipython_notebook_config.py

然後在本機上,使用HTTPS訪問如下:

HTTPS訪問

執行成功。接著就可以在本機上使用IPython Notebook操作遠端伺服器上的資料了。