目录

1. 简介

2. 环境版本

3. 安装步骤

3.1 安装虚拟机

3.2 安装 JupyterHub

4. 启动

5.新增用户

5.1 新增操作系统用户

5.2 JupyterHub新增用户

5.3 使用新用户登录

6. 参考链接


在上篇的文章中,我简单介绍了 Jupyter Notebook 的认证机制,其目的是想探寻 Jupyter Notebook 自身是否有多租户、资源隔离等功能,结论是目前还不支持。所以,本篇文章将重心转移到专门的项目 JupyterHub,对它做下初探。

 

1. 简介

 

官网以及其他博文中对它的介绍很多,不过出于初学以及总结目的,我在此篇文章中会记录一些问题、一些思考。

 

  • JupyterHub 可以运行在 上或者 本地硬件 上,出于快速上手目的,暂且运行在单独的虚拟机上。
  • JupyterHub 可以支持多种 Kernel,Kernel 在这里指可以运行 Python代码 (不限于)的程序。
  • JupyterHub 扩展性支持依赖了容器技术,并且可以和 K8S 集成,进而支持多租户场景需求。文章先不讨论和 K8S 的集成。

 

2. 环境版本

 

  • Win10 下 VMWare 版本:VMware-workstation-full-14.1.3-9474260
  • 虚拟机镜像版本:ubuntu-18.04.1-desktop-amd64.iso

 

备注:

 

3. 安装步骤

 

3.1 安装虚拟机

 

安装必备:

apt install net-tools
apt-get install openssh-server openssh-client
apt install lrzsz
apt install vim

 

使用宿主机代理:

export proxyserveraddr=xx.xx.xx.xx
export proxyserverport=xx

export HTTP_PROXY="http://$proxyserveraddr:$proxyserverport/"
export HTTPS_PROXY="https://$proxyserveraddr:$proxyserverport/"
export FTP_PROXY="ftp://$proxyserveraddr:$proxyserverport/"
export SOCKS_PROXY="socks://$proxyserveraddr:$proxyserverport/"
export NO_PROXY="localhost,127.0.0.1,localaddress,.localdomain.com,200.200..;11.11.0.0;"
export http_proxy="http://$proxyserveraddr:$proxyserverport/"
export https_proxy="https://$proxyserveraddr:$proxyserverport/"
export ftp_proxy="ftp://$proxyserveraddr:$proxyserverport/"
export socks_proxy="socks://$proxyserveraddr:$proxyserverport/"
export no_proxy="localhost,127.0.0.1,localaddress,.localdomain.com,200.200..;11.11.0.0;"

 

重点:

  • 安装虚拟机过程中如果遇到 vmci 问题,将 xxx.vmx 文件 "vmci0.present" 属性修改成 "FALSE"即可
  • 安装虚拟机过程中如果出现黑屏,在宿主机上以管理员身份打开终端,使用 "netsh winsock reset" 命令重置网络

 

3.2 安装 JupyterHub

 

所在操作需要在 root 用户下进行,否则后续会失败。

# 安装 pip3,并使用 pip3 安装 notebook、jupyterhub
apt install python3-pip
pip3 install jupyterhub notebook -i https://pypi.douban.com/simple/


# 使用 npm 安装 http-proxy
apt install npm
npm install -g configurable-http-proxy

# 测试安装
jupyterhub -h
configurable-http-proxy -h

# 生成配置文件
mkdir -p /etc/jupyterhub
jupyterhub --generate-config -f /etc/jupyterhub/jupyterhub_config.py

# 新增配置属性
c.JupyterHub.ip = '192.168.23.134'
c.JupyterHub.port = 8888
c.Spawner.ip = '127.0.0.1'
c.PAMAuthenticator.encoding = 'utf8'
c.Authenticator.whitelist = {'root','tzx'}
c.LocalAuthenticator.create_system_users = True
c.Authenticator.admin_users = {'root', 'tzx'}
c.JupyterHub.authenticator_class = 'dummyauthenticator.DummyAuthenticator'
c.JupyterHub.statsd_prefix = 'jupyterhub'

# 搜索spawner.py所在目录
vim /usr/local/lib/python3.6/dist-packages/jupyterhub/spawner.py
# 在 spawner.py 中搜索 get_args 后,新增如下一行,实现 root 访问和登录
args.append('--allow-root') 


# 安装插件
pip3 install jupyterhub-dummyauthenticator -i https://pypi.douban.com/simple/

 

4. 启动

 

jupyterhub --config=/etc/jupyterhub/jupyterhub_config.py --no-ssl

 

5.新增用户

 

5.1 新增操作系统用户

useradd -m vagrant -d /home/vagrant -s /bin/bash
passwd vagrant

 

5.2 JupyterHub新增用户

 

5.3 使用新用户登录

6. 参考链接

 

更多推荐