之前搭建的JupyterLab逐渐被使用起来了, 单用户的模式还是不太方便, 因此准备用JupyterHub来做下用户隔离
1. 安装nodejs和npm
按照JupyterLab官方教程, 先是安装最新的nodejs和npm, 但是由于16.04的apt源安装的nodejs版本比较久, 因此在后面的安装中会有坑, 这边根据网上的教程手动安装最新的nodejs
1 | curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash - |
安装成功后输入node --version
看到有版本返回输出证明安装成功, 同时这种方式会同时安装npm, 同样npm --version
测试npm安装成功
2. 安装
2.1 安装虚拟环境
由于我个人喜欢自己配置虚拟环境, 因此, 我先安装虚拟环境。但阿里云上的virtualenv太久不用,版本太老了, 出现了使用virtualenv创建虚拟环境报错 error code 2
现象,因此通过
1 | sudo pip install setuptools #安装setuptools |
来更新setuptools和virtualenv到最新的版本
1 | virtualenv mlEnv |
2.2 安装jupyterhub
根据官方教程,有两种方式安装:pip 安装 ; conda安装
1 | pip安装 |
2.2.1 问题1_虚拟环境
但在安装过程中出现了以下报错
1 | ERROR: Could not install packages due to an EnvironmentError: [Errno 13] Permission denied: '/home/mrli/MLproject/mlEnv/lib/python3.5/site-packages/idna' |
通过which pip
可以看到我使用的pip正是虚拟环境下的pip, 同时提示中的site-packages文件夹也是存在的。便按照提示加上了–user, 但是出现了如下新报错ERROR: Can not perform a '--user' install. User site-packages are not visible in this virtualenv.
(注意, 不用加sudo来保证权限, 应为加上sudo pip吧库安装到的路径是在root下的)
经过查询发现, 是因为整个虚拟环境下的权限不够, 因此需要加权sudo chmod 777 -R mlEnv
=>遂问题解决
2.2.2 问题2_npm安装报错
执行sudo npm install -g configurable-http-proxy
时有如下报错Error: EACCES: permission denied, access '/usr/lib/node_modules'
已经加上了sudo也无济于事。
==> 通过node的npm无法安装(无法过墙),也可以用阿里的自己的cnpm进行安装sudo npm install -g cnpm --registry=https://registry.npm.taobao.org
,然后再输入sudo cnpm install -g configurable-http-proxy
–>解决!
3. 测试安装成功
jupyterhub -h
、configurable-http-proxy -h
查看是否有输出,jupyterhub
然后在https://localhost:8000中查看
4. 配置
生成配置文件
1 | jupyterhub --generate-config -f /etc/jupyterhub/jupyterhub_config.py |
1 | c.JupyterHub.ip = '192.168.2.4' # 本机局域网的ip,记得是局域网 |
默认情况下,要真正的实现分配用户账号,需要满足以下两点要求:
- c.Authenticator.whitelist 指定了用户名
- 在系统中创建了该用户(adduser / useradd)
tips: 默认情况下,密码为系统中该用户对应的密码
用户管理
用户白名单的用户会自动添加,但无密码,需要修改密码才能登录;
新添加用户:useradd crxis -d /home/user/crxis -m
用户添加组:adduser crxis group1
修改用户密码:echo crxis:crxis|chpasswd
1 | c.JupyterHub.admin_users = {'root', 'admin'} |
5. 运行
在存放jupyterhub_config.py
的文件夹下执行jupyterhub
启动服务
配置查看: https://blog.51cto.com/m51cto/2370679——GPU坑, 配置github登入
附录:
修改pip默认源:
1 | vim ~/.pip/pip.conf # 如果当前用户没有.pip文件夹, 则创建一个 |
添加下列内容
1 | [global] |
Linux上安装最新版的Python
-
查看 Python 的版本号:
python2 -V
,python3 -V
-
下载3.x新版本
可以访问python的官方网站查看最新的python版本以及下载链接:https://www.python.org/downloads/,将鼠标移到想要官网上想要下载的版本号上就可以看到下载地址,例如我需要在Linux下安装,可以使用这个链接:https://www.python.org/ftp/python/3.8.5/Python-3.8.5.tgz(如果想要下载其他版本,直接修改版本号即可)。找到下载地址后,在命令行输入:
wget https://www.python.org/ftp/python/3.8.5/Python-3.8.5.tgz
-
下载完成后解压缩
tar -zxvf Python-3.8.5.tgz
-
下载完成后解压缩
cd Python-3.8.5/; ./configure
,
由于使用3.8出现了virtualenv无法使用的情况, 因此需要对配置文件进行修改: 修改Python-3.8.5/Modules
路径的Setup
文件: sudo vim Setup
:
- 编译
sudo make; sudo make install
但是发现修改后报错缺少xxssl.h的头文件,
wget https://www.openssl.org/source/openssl-1.0.2h.tar.gz
tar zxf openssl-1.0.2h.tar.gz; cd openssl-1.0.2h
./config shared zlib; make depend
sudo make; sudo make install
- 检测是否安装成功:
openssl version -a
▲.再次到python中make install, 报错: subprocess.CalledProcessError: Command ‘(‘lsb_release’, ‘-a’)’ returned non-zero exit status 1.
解决方法
find /usr/bin -name lsb_release
sudo rm -rf /usr/bin/lsb_release
此时再到Python/中make install即可
Author: Mrli
Link: https://nymrli.top/2020/11/15/JupyterHub搭建/
Copyright: All articles in this blog are licensed under CC BY-NC-SA 3.0 unless stating additionally.