昨天研究了一下JupyterHub的安装与配置,记录一下安装过程.
因为不想折腾双系统,也不太信任现在的WSL,选择了在VMware中运行Ubuntu.
1. 安装Ubuntu 20.04
前几天看到了Ubuntu的新LTS版本20.04出来了,一直想体验一把,正好趁这个机会看看长什么样.
镜像我直接在官网上下的,安装用VMware的简易安装就行了.注意虚拟机的网卡改成桥接模式,让虚拟机直接从路由器上获取ip,方便搭建好在主机上访问JupyterHub.装好Ubuntu后别忘了安装openssh和net-tools:
sudo apt install openssh-server
sudo apt install net-tools
安装成功后,在终端里使用ifconfig -a查看路由器分发的ip地址,在主机上使用ssh连接就可以搭建环境了.
2. 安装Anaconda3
去清华的镜像站(TUNA)上找到了Anaconda最新的包的地址:https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2020.02-Linux-x86_64.sh, 使用wget下载到虚拟机中,然后执行安装脚本,按照他的指示来就行了.
wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2020.02-Linux-x86_64.sh
sh ./Anaconda3-2020.02-Linux-x86_64.sh
默认是安装到~/anaconda3中.
顺便,这里我选择的是yes,我也不知道是干啥的.
执行
export PATH=~/anaconda3/bin:$PATH
将anaconda添加到PATH中.
输入conda,如果显示conda的提示,说明安装成功.
3.安装JupyterHub
JupyterHub的官方文档(https://jupyterhub.readthedocs.io/en/stable/ )提供了两种安装方法:
这里选择第二种安装.注意如果使用第一种安装的话还需要先额外安装nodejs环境,官方给的命令是:
sudo apt-get install npm nodejs-legacy
我使用
sudo apt install npm
也可以完成最终的安装.
还有一点就是conda的默认源在国外,如果没有特殊工具的话需要换源.
一般在网络终端上的工具都是不能实现完美的全局代理的,特别对于在虚拟机上的流量,即使使用Proxifier这样的东西也不能达到很好的效果.我是在路由器上直接使用了工具,所以没有考虑这一点.(不能再说了这网站备案了).
判断是否安装成功:
jupyterhub -h
configurable-http-proxy -h
运行jupyterhub:
jupyterhub
出现此界面,安装成功.
下面进行用户的配置.
4.用户配置
使用
jupyterhub --generate-config
生成默认的jupyterhub配置文件.
官方文档建议将此文件放在/etc/jupyterhub目录下.可以自行创建此文件夹后在该文件夹下执行命令.
此时出现了一个棘手的问题:
我们没有权限在这个文件夹下进行写文件的操作.
一般遇到这样的情况都是直接sudo,但是当我执行
sudo jupyterhub --generate-config
他提示没有找到jupyterhub这个命令.
去网上搜索,找到了解决方法:
切换到root用户,编辑/etc/sudoers文件.
将其中Defaults env_reset
这一行改成Defaults !env_reset
如果你没有为root用户设置过密码,应该先使用sudo passwd root
来给root设置密码,然后使用su
来切换到root账户.
如果没有安装vim,使用apt安装即可.
编辑好后,切换回刚刚的用户.
编辑/etc/bash.bashrc文件,向最后添加
alias sudo='sudo env PATH=$PATH'
export PATH=~/anaconda3/bin:$PATH
如果出现文件无法保存,使用:wq!
试试,还是不行直接sudo vim
.
让修改的配置生效:
source /etc/bash.bashrc
这时就可以在/etc/jupyterhub下执行
sudo jupyterhub --generate-config
还有一种方法,可以解决无法在此文件夹读写的问题,即使用
sudo chmod 777 /etc/jupyterhub
修改这个文件夹的权限,生成这个配置文件.但是到后期还是需要在sudo下运行jupyterhub,所以在现在直接解决这个问题就好了.
通过查阅官方文档,我们可以找到配置文件的基本配置.
按照官方文档的说法,默认的用户认证管理器是PAM,ubuntu系统上的用户都被允许登录.
所以我们可以先切换到root用户,在系统里添加一个用户:
adduser kasumi
设置好密码后,返回原来的用户.
修改配置文件,将一个用户添加到管理员列表中(这里是honokasumi),另一个普通用户(这里是kasumi)添加到白名单中.(按照官方文档的说法,在管理员列表中的非白名单中的用户会被自动添加到白名单中):
指定配置文件,启动jupyter
sudo jupyterhub -f /etc/jupyterhub/jupyterhub_config.py
访问http://ip:8000 ,输入账号密码,登录成功.
5.安装其他语言的内核
默认已经安装了Python3的内核,要想支持其他语言,需要安装其他语言的内核.
这里以安装C++系列内核为例.
使用
conda install xeus-cling -c conda-forge
安装xeus-cling,一个在jupyter上支持c++系列的内核.
安装成功后,可以在这里切换使用内核:
https://github.com/jupyter/jupyter/wiki/Jupyter-kernels 这里列出了jupyter上其他语言的内核,可以自己寻找并安装.