设为首页 收藏本站
查看: 1716|回复: 0

[经验分享] ubuntu 16.04安装jupyter notebook使用与进阶

[复制链接]

尚未签到

发表于 2019-2-18 12:14:31 | 显示全部楼层 |阅读模式
一、Jupyter Notebook简介
  Jupyter Notebook(此前被称为 IPython notebook)是一个交互式笔记本,支持运行 40 多种编程语言。
Jupyter Notebook 的本质是一个 Web 应用程序,便于创建和共享文学化程序文档,支持实时代码,数学方程,可视化和 markdown。 用途包括:数据清理和转换,数值模拟,统计建模,机器学习等等;
是一款非常好用的基于web方式使用python的工具;
支持windows 与linux系统,本次以ubuntu 16.04 python3.5.2为例,安装演示;
相关配置及更高级的玩法请参考官方文档
  以上的操作是针对本机的python3操作,如果想在虚拟的python环境中操作请参考搭建python虚拟环境
其他的步骤是 一样的;

二、安装
  1、pip安装

sudo python3 -m pip install --upgrade pip
sudo python3 -m pip install jupyter
  2、简单使用
默认安装好后直接在命令行里输入
$ jupyter notebook
类似如下图:

如上图,新建-->Python3 创建如下图交互式带提示的python命令行

输入print("Hellow world") 点运行即可执行看到效果;
  新建终端时,直接以登录系统身份登录系统终端如图:

  至次jupyter notebook的简单安装使用就完成了,没错就是这么简单~
然而这么好的工具,这么方便的操作只能运行在本地?如果在局域网或端口映射后能在外面操作,通过密码登录;岂不是很完美?查看了官方网站教程,别说还真有;下面就配置下把jupyter notebook开放在本地的任何接口上,并且配置https形式,这样传输就安全啦~

三、jupyter notebook使用进阶
  1、配置密码

$ jupyter notebook password
Enter password:  ****
Verify password: ****
  以上操作会在我的家目录下生成  /home/san/.jupyter/jupyter_notebook_config.json
文件,密码以hash保存如下:

$  /home/san/.jupyter/jupyter_notebook_config.json
{
"NotebookApp": {
"password": "sha1:74432c61ae9b:26c35e70239jfe7e3dc4b177d140d4ac7f560e1f"
}
}
  些时结束之前的jupyter notebook实例再次运行,会提示输入密码,如图:

此时只有输入正确的密码后才能正常登录使用jupyter 啦!
  2、侦听非本地接口
默认出于安全jupyter只运行侦听在本地,想把这么好的功能放在网络上使用需要生成添加配置文件

$ 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访问啦
  3、jupyter配置https
创建私钥并自签:

$ openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout mykey.key -out mycert.pem
  运行以上命令如下需要填写相关信息如图:

  以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进行访问啦 如图:

  到这里jupyter notebook基本配置完成了,但有一个问题,每次启动jupyter都要切换到一个指定目录(就是上图中文件列出来的内容所在目录);而且还要占用一个终端;
还是搞一个后台服务,开机自动运行吧,以下的内容是官方没有的,本人自己捣鼓的;
  4、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
  测试脚本 如图:

可以发现脚本可以执行;会自动读取当前登录系统用户的家目录下.jupyter下的配置文件;官方说把密钥和签名证书配置到配置文件中,但我测试下来找不到证书,所以把证书当启动参数放到,服务脚本中了,这是正常的;
系统重启会自动启动jupyter notebook 侦听在8888上,系统关闭时,会自动关闭jupyter服务; upyter notebook可以运行多实例;即默认随机启动侦听在8888 再次在终端上执行时会侦听在8889端口 如图:

  此时你会发现 一台服务器可以开多个实例,给多个人测试使用~是不是很方便很好用?赶紧试试吧~




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-673972-1-1.html 上篇帖子: Ubuntu16.04 "System program problem detected"问题 下篇帖子: 安装helm纯命令记录帖(ubuntu18.0)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表