ubuntu 16.04安裝jupyter notebook使用與進階

1、Jupyter Notebook簡介

Jupyter Notebook(此前被稱爲 IPython notebook)是一個交互式筆記本,支持運行 40 多種編程語言。
Jupyter Notebook 的本質是一個 Web 應用程序,便於建立和共享文學化程序文檔,支持實時代碼,數學方程,可視化和 markdown。 用途包括:數據清理和轉換,數值模擬,統計建模,機器學習等等;
是一款很是好用的基於web方式使用python的工具;
支持windows 與linux系統,本次以ubuntu 16.04 python3.5.2爲例,安裝演示;
相關配置及更高級的玩法請參考官方文檔html

以上的操做是針對本機的python3操做,若是想在虛擬的python環境中操做請參考搭建python虛擬環境
其餘的步驟是 同樣的;node

2、安裝

一、pip安裝python

sudo python3 -m pip install --upgrade pip
sudo python3 -m pip install jupyter

二、簡單使用
默認安裝好後直接在命令行裏輸入
$ jupyter notebook
相似以下圖:
ubuntu 16.04安裝jupyter notebook使用與進階
如上圖,新建-->Python3 建立以下圖交互式帶提示的python命令行
ubuntu 16.04安裝jupyter notebook使用與進階
輸入print("Hellow world") 點運行便可執行看到效果;linux

新建終端時,直接以登陸系統身份登陸系統終端如圖:
ubuntu 16.04安裝jupyter notebook使用與進階web

至次jupyter notebook的簡單安裝使用就完成了,沒錯就是這麼簡單~
然而這麼好的工具,這麼方便的操做只能運行在本地?若是在局域網或端口映射後能在外面操做,經過密碼登陸;豈不是很完美?查看了官方網站教程,別說還真有;下面就配置下把jupyter notebook開放在本地的任何接口上,而且配置https形式,這樣傳輸就安全啦~shell

3、jupyter notebook使用進階

一、配置密碼編程

$ jupyter notebook password
Enter password:  ****
Verify password: ****

以上操做會在個人家目錄下生成 /home/san/.jupyter/jupyter_notebook_config.json
文件,密碼以hash保存以下:json

$  /home/san/.jupyter/jupyter_notebook_config.json
{
  "NotebookApp": {
    "password": "sha1:74432c61ae9b:26c35e70239jfe7e3dc4b177d140d4ac7f560e1f"
  }
}

些時結束以前的jupyter notebook實例再次運行,會提示輸入密碼,如圖:
ubuntu 16.04安裝jupyter notebook使用與進階
此時只有輸入正確的密碼後才能正常登陸使用jupyter 啦!ubuntu

二、偵聽非本地接口
默認出於安全jupyter只運行偵聽在本地,想把這麼好的功能放在網絡上使用須要生成添加配置文件windows

$ jupyter notebook --generate-config

運行後會在家目錄.jupyter/下生成jupyter_notebook_config.py文件
修改內容以下:

c.NotebookApp.ip = '0.0.0.0'
c.NotebookApp.open_browser = False 
c.NotebookApp.password = "sha1:74432c61ae9b:26c35e70239jfe7e3dc4b177d140d4ac7f560e1f"
c.NotebookApp.port = 8888

注意:按官方的c.NotebookApp.ip = '*' 報錯,換成0.0.0.0則能夠
能夠看到不只能夠自定義偵聽地址,還能夠修改偵聽端口;

$ netstat -ntpul |grep python3
tcp        0      0 0.0.0.0:8888            0.0.0.0:*               LISTEN      2403/python3

此時就能夠經過本地的ip或loclahost :8888訪問啦

三、jupyter配置https
建立私鑰並自籤:

$ openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout mykey.key -out mycert.pem

運行以上命令以下須要填寫相關信息如圖:
ubuntu 16.04安裝jupyter notebook使用與進階

以https方式啓動:

$ jupyter notebook --certfile=mycert.pem --keyfile mykey.key
[I 13:30:22.165 NotebookApp] 啓動notebooks 在本地路徑: /home/dongyc/ipython
[I 13:30:22.165 NotebookApp] 本程序運行在: https://(san-Vostro-3660 or 127.0.0.1):8888/
[I 13:30:22.165 NotebookApp] 使用control-c中止此服務器並關閉全部內核(兩次跳過確認).

注意:證書文件須要絕對路徑;
此時能夠使用https://10.8.11.65:8888 或https://localhost:8888進行訪問啦 如圖:
ubuntu 16.04安裝jupyter notebook使用與進階

到這裏jupyter notebook基本配置完成了,但有一個問題,每次啓動jupyter都要切換到一個指定目錄(就是上圖中文件列出來的內容所在目錄);並且還要佔用一個終端;
仍是搞一個後臺服務,開機自動運行吧,如下的內容是官方沒有的,本人本身搗鼓的;

四、jupyter服務

#!/bin/bash
# author: by san at 20180929
### BEGIN INIT INFO
# Provides:             jupyter 
# Required-Start:       $syslog $remote_fs
# Required-Stop:        $syslog $remote_fs
# Should-Start:         $local_fs
# Should-Stop:          $local_fs
# Default-Start:        2 3 4 5 
# Default-Stop:         0 1 6
# Short-Description:    jupyter notebook deamon 
# Description:          jupyter notebook with https deamon
### END INIT INFO

. /home/san/functions      # 這個相似redhat系列上的/etc/init.d/functions shell庫 你的系統自行找,如找不到請聯繫我
prog=jupyter
pidfile=${PIDFILE-/tmp/jupyter.pid}
lockfile=${LOCKFILE-/tmp/jupyter}
jupyter="/usr/local/bin/jupyter"     # 若是是虛擬python環境請填寫正確的路徑
RETVAL=0

START(){
if [ ! -f ${pidfile} ]; then
cd /home/san/ipython 
echo -n $"Stopping jupyter notebook:"
nohup ${jupyter}  notebook  --certfile=/home/san/mycert.pem --keyfile /home/san/mykey.key >/tmp/jupyter.log 2>&1 &
 [ "$?" -eq 0 ] && success $"$base startup" || failure $"$base startup"
 jupyter_pid=$(ps aux |grep jupyter |grep -v grep|awk '{print $2}')
 echo $jupyter_pid >$pidfile
  RETVAL=$?
    echo
 [ $RETVAL = 0 ] && touch ${lockfile}
     return $RETVAL
else
  status -p ${pidfile}
  exit 0
 fi

}

STOP(){
        echo -n $"Stopping jupyter notebook:"
        nohup kill -15 $(ps aux |grep jupyter |grep -v grep|awk '{print $2}')  >/dev/null 2>&1 &
        [ "$?" -eq 0 ] && success $"$base startup" || failure $"$base startup"
        echo
        [ -f ${pidfile} ] && rm -rf ${pidfile}
        [ -f ${lockfile} ] && rm -rf ${lockfile}
}

case $1 in
    start)
    START
    ;;
    stop)
    STOP
    ;;
    restart)
    STOP
    START
    ;;
    status)
    status -p ${pidfile} $prog
    ${jupyter} notebook list
    RETVAL=$?
    ;;
    *)
   echo "USAGE:start|stop|restart"
    ;;
esac

添加可執行權限

$ chmod +x /etc/init.d/jupyter

測試腳本 如圖:
ubuntu 16.04安裝jupyter notebook使用與進階
能夠發現腳本能夠執行;會自動讀取當前登陸系統用戶的家目錄下.jupyter下的配置文件;官方說把密鑰和簽名證書配置到配置文件中,但我測試下來找不到證書,因此把證書當啓動參數放到,服務腳本中了,這是正常的;
系統重啓會自動啓動jupyter notebook 偵聽在8888上,系統關閉時,會自動關閉jupyter服務; upyter notebook能夠運行多實例;即默認隨機啓動偵聽在8888 再次在終端上執行時會偵聽在8889端口 如圖:
ubuntu 16.04安裝jupyter notebook使用與進階

此時你會發現 一臺服務器能夠開多個實例,給多我的測試使用~是否是很方便很好用?趕忙試試吧~

相關文章
相關標籤/搜索