ldap认证jupyter notebook
虽然jupyter hub是支持ldap的,见ldapauthenticator;
但是登录成功后似乎要以登录用户名启动notebook,而登录用户在服务器上不存在,于是500了;
在服务器上通过pam/nss进行ldap验证?别逗了,谁要那么干啊。
于是转换思路,核心仿照这篇博客:docker+centos7+nginx1.2.0+ldap +jupyter实战;
1. 首先,编译一个带nginx-auth-ldap认证模块的nginx,做为notebook server的proxy,做进一个docker容器里,以后可以复用;
1.1 下载nginx 1.14.0和nginx-aut-ldap模块,编译,没啥特别;
./configure --add-module=../nginx-auth-ldap && make && make install
1.2 配置nginx,proxy_pass的主机名写成notebook;寻址问题交由docker-compose帮忙解决;
websocket的这段配置比较关键,决定了是否能正常执行ipynb notebook文件;
location ~* /(api/kernels/[^/]+/(channels|iopub|shell|stdin)|terminals/websocket)/? {
proxy_pass http://notebook:8888;
proxy_set_header Referer http://proxy:8000;
# websocket support
proxy_http_version 1.1;
proxy_set_header Upgrade "websocket";
proxy_set_header Connection "Upgrade";
}
1.3 nginx做进systemd,开机启动;
# cat /usr/lib/systemd/system/nginx.service
[Unit]
Description=nginx
After=network.target [Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true [Install]
WantedBy=multi-user.target
接下来,notebook server在另一个docker容器里,于是需要把两个docker容器连在一起管理,用了一下docker-compose;
2.1 安装docker-compose:
pip install docker-compose
pip install docker_pycreds # 解决 python2.7 ImportError: No module named urllib.parse
2.2 写docker-compose.yml
几个细节:
- proxy links notebook,这样nginx配置文件中proxy_pass的地址可以直接使用notebook做主机名;
- notebook expose 8888,把notebook的8888端口只暴露给proxy用,避免被绕过proxy;
3. 配置jupyter notebook
3.1 配置jupyter notebook
c.NotebookApp.token = '' #把token置空,不在notebook这里做认证管理了
c.NotebookApp.allow_root = True #允许docker内用root启动
c.NotebookApp.allow_origin = '*' # 因为notebook和proxy在两个docker内,写上这条配置以允许CORS(Cross-Origin Resource Sharing, 跨源资源共享)
3.2 把jupyter notebook放进systemd,允许开机启动
# cat /lib/systemd/system/jupyter.service
[Unit]
Description=Jupyter Notebook [Service]
Type=simple
ExecStart=/run_jupyter.sh [Install]
WantedBy=multi-user.target # systemctl enable jupyter
4 启动几个容器
docker-compose up -d
5 进入notebook以后,发现点quit按钮,不仅退出notebook了,而且会让jupyter notebook进程直接结束;
稍微看了一下代码,发现有一个配置可以隐藏quit按钮,于是给jupyter加了一条配置:
c.NotebookApp.quit_button = False
这样多人登入同一个jupyte,然后一人一个notebook,应该不会互相打架吧。反正人少,打就打吧。
jupyterhub spawner?等它发展发展再说,现在来看技术栈太深了些。
ldap认证jupyter notebook的更多相关文章
- Python,Jupyter Notebook,IPython快速安装教程
0.安装环境 Windows10,Python3.5.1,IPython,jupyter notebook,and other functionality 官方安装文档Linux版3.x 官方安装文档 ...
- [转]Linux中python3.6+ipython+Jupyter Notebook环境
python3.6安装 下载python安装包,这里下载的最新的3.6.1版本 https://www.python.org/ftp/python/3.6.1/ 将安装包上传到服务器并解压 tar z ...
- python之jupyter notebook
jupyter是一种交互式计算和开发环境的笔记,ipython命令行比原生的python命令行更加友好和高效,还可以运行web版的界面,支持多语言,输出图形.音频.视频等功能. 安装 pip inst ...
- Centos7安装 Anaconda + jupyter notebook
一.安装Anaconda 1 下载Anaconda安装脚本 为了避免漫长的等待,镜像源选择国内的清华镜像源,镜像源地址:https://mirrors.tuna.tsinghua.edu.cn/ana ...
- 远程访问jupyter notebook
远程访问Jupyter Notebook Jupyter Notebook很好用,但是直接远程在服务器上用体验当然不如本地计算机好,那么如何远程访问呢? 首先需要在服务器上安装好ipython, ju ...
- Jupyter Notebook 27绝技——27 Jupyter Notebook tips, tricks and shortcuts
转载自:https://www.dataquest.io/blog/jupyter-notebook-tips-tricks-shortcuts/ Jupyter notebook, formerly ...
- Jupyter notebook 配置目录
默认打开Jupyter notebook,工作目录是C:\Users\Username,这里面有很多其它与Jupyter notebook无关的文件,也很有用,不能看着烦就删掉,所以需要修改Jupyt ...
- No.2 CAS之SPNEGO+LDAP认证配置
1.概述 本文先配置了SPNEGO认证,就是如果用户操作系统如果登陆了公司的Windows域,用户浏览器访问应用服务即可免登录. 然后如果不在域里的员工,用LDAP认证方式,输账号密码登陆. 参考文档 ...
- 如何用Jupyter Notebook打开Spark
电脑已经装了anaconda python,然后下载了spark2.1.0.因为版本太新,所以网上和书上的一些内容已经不再适用.比如关于如何使用IPython和Jupyter,教程给出的方法是用如下语 ...
随机推荐
- java jdbc操作数据库通用代码
1.准备工作 1> 新建一个配置文件,名为jdbc.properties将其放入src中 2>在项目中导入jdbc驱动,注意连接不同的数据库,所用到的驱动是不一样的,这些在网上都能找到 具 ...
- nginx + rtmp 搭建流媒体服务器
一.安装nginx服务器 1.路径说明: 路径:/usr/local/src 2.下载nginx-rtmp-module (我这里的目录是在/usr/local/src/下面) cd /usr/loc ...
- 4、json-server的使用
json-server 详解 转载于https://www.cnblogs.com/fly_dragon/p/9150732.html JSON-Server 是一个 Node 模块,运行 Expre ...
- python全栈开发 * mysql数据类型 * 180829
* 库的操作 (增删改查)一.系统数据库查看系统库命令 show databases1.information_schema: 虚拟库,不占用磁盘空间,存储的是数据库启动后的一些参数,如用户表信息.列 ...
- dtIntersectSegmentPoly2D 2D上的线段与多边形相交计算 产生结果:是否相交,线段跨越的开始和结束百分比,相交的边
dtIntersectSegmentPoly2D(startPos, endPos, verts, nv, tmin, tmax, segMin, segMax): http://geomalgori ...
- Spring IOC原理解读 面试必读
Spring源码解析:Bean实例的创建与初始化 一. 什么是Ioc/DI? 二. Spring IOC体系结构 (1) BeanFactory (2) BeanDefinition 三. IoC容器 ...
- spark核心优化详解
大家好!转眼又到了经验分享的时间了.吼吼,我这里没有摘要也没有引言,只有单纯的经验分享,请见谅哦! 言归正传,目前在大数据领域能够提供的核心计算的工具,如离线计算hadoop生态圈的mr计算模型,以及 ...
- linux上查询网卡型号
- Python---Models 模型
#Models 模型 数据结构 + 算法 = 程序 ---> URL ---> VIEW ---> Temple ---> DB:分类---关系 Teacher Stude ...
- html-webpack-plugin插件使用时参数配置
ERROR in multi main Module not found: Error: Cannot resolve 'file' or 'directory' ./public/pages/ind ...