JupyterHub+Lab:Ubuntu18.04搭建自己的多用户云notebook(安装篇)

相信很多人和我一样都很喜欢用Jupyter Notebook写python代码——可视化,界面漂亮,图文并茂。其实jupyter notebook本质上就是基于浏览器的,那么我们可不可以把后台部署在云上,通过浏览器来写notebook呢?答案是肯定的,而且功能超乎你的现象!看完这篇文章你可以做到:

  • 用pip在服务器上部署JupyterHub和JupyterLab
  • 支持多用户
  • 支持多语言(续)
  • 用插件增强jupyter的功能(续)

Jupyter Notebook是一个交互式笔记本,支持运行 40 多种编程语言。Jupyter Notebook 的本质是一个 Web 应用程序,便于创建和共享文学化程序文档,支持实时代码、数学方程、可视化和 markdown,用途包括:数据清理和转换,数值模拟,统计建模,机器学习等等 。

JupyterLab是Jupyter主打的最新数据科学生产工具,在一定程度上是为了取代Jupyter Notebook。它支持安装插件以及有着更好的界面。而 JupyterHub是为多个用户提供Jupyter Notebook的最佳方式。

先上效果图:

让我们开始吧!

注意:支持多用户的关键是全程均需要在root权限下操作!

先是安装JupyterHub。我尝试过安装TLJH(The Littlest JupyterHub),但由于网速太慢始终无法完成安装,遂放弃了。于是在官网的指引下一步步用pip来安装。

安装npm和nodejs:

sudo apt install npm nodejs

用apt安装的nodejs版本号比较低,后续装插件的时候会出问题,因此需要升级nodejs:

npm install -g n
n stable

n的速度慢的话没办法必须等待,如果npm速度太慢,则可以换国内源:

npm config set registry https://registry.npm.taobao.org
npm config get registry

输入node -v和npm -v,有版本号显示出来就表示安装成功。

安装JupyterHub:

sudo python3 -m pip install jupyterhub -i https://pypi.tuna.tsinghua.edu.cn/simple
sudo npm install -g configurable-http-proxy 
sudo python3 -m pip install notebook -i https://pypi.tuna.tsinghua.edu.cn/simple
sudo python3 -m pip install jupyterhub-dummyauthenticator -i https://pypi.douban.com/simple/
# -i https://pypi.tuna.tsinghua.edu.cn/simple 表明使用国内源,用国内源可以快不少。可以省略。

测试安装是否成功:

jupyterhub -h
configurable-http-proxy -h

有输出帮助信息就表示安装成功。

接下来安装JupyterLab:

sudo python3 -m pip install jupyterlab -i https://pypi.tuna.tsinghua.edu.cn/simple

so easy~~~

配置JupyterHub:

# 生成配置文件
sudo mkdir -p /etc/jupyterhub
cd /etc/jupyterhub
sudo jupyterhub --generate-config
sudo nano jupyterhub_config.py
###jupyterhub_config.py
# 新增配置属性,建议直接加在文件开头就好
## 启用JupyterLab
c.Spawner.default_url = '/lab'
## 所有IP都可以访问
c.JupyterHub.ip = '*'
c.JupyterHub.port = 8888
c.Spawner.ip = '127.0.0.1'
c.PAMAuthenticator.encoding = 'utf8'
## 指定可以访问的Ubuntu用户
c.Authenticator.whitelist = {'root','user1','user2'}
c.LocalAuthenticator.create_system_users = True
## 指定管理员用户
c.Authenticator.admin_users = {'root'}
c.JupyterHub.authenticator_class = 'dummyauthenticator.DummyAuthenticator'
c.JupyterHub.statsd_prefix = 'jupyterhub'
#修改spawner.py实现支持root访问和登录
sudo nano /usr/local/lib/python3.6/dist-packages/jupyterhub/spawner.py
# 在 spawner.py 中搜索 get_args 后,新增如下一行,实现 root 访问和登录
args.append('--allow-root')

启动JupyterHub(不用SSL):

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

注:如果想要开启https安全访问,需要先设置好证书信息,可以参考:JupyterHub开启https:让你的Jupyter更安全!

出现登录界面,用Ubuntu的用户名和用户密码登录就可以进入JupyterLab的界面了。大功告成!

想知道如何安装插件和让Jupyter支持多语言(包括C,C++,Matlab,Javascript,C#等等)?请看下一篇:JupyterHub+Lab——Ubuntu18.04搭建自己的多用户云notebook(增强篇)

有问题欢迎在讨论区提出哦~

发表评论