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
qiang
,所以,生成的檔案在/home/qiang/.ipython/profile_myserver/資料夾下。
我們可以進入到該資料夾下,並檢視一下生成的檔案:
一般沒有問題的話,會生成ipython_config.py
,ipython_kernel_config.py
和ipython_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訪問如下:
執行成功。接著就可以在本機上使用IPython Notebook操作遠端伺服器上的資料了。