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,教程给出的方法是用如下语 ...
随机推荐
- GMA Round 1 数列与方程
传送门 数列与方程 首项为1,各项均大于0的数列{$a_n$}的前n项和$S_n$满足对于任意正整数n:$S_{n+1}^2-2*S_{n+1}*S_{n}-\sqrt{2}*S_n-1=0$,求$a ...
- C# 与Sql server 获取数据和执行命令
C#数据库命封装在 System.Data.SqlClient 之中: 从使用的数据库中获取连接串connectionstring:"server=xx.xxx.xx.xx,xxxx: da ...
- 原生ajax可变参数post
var Ajax = { post:function(){ xmlhttp = new XMLHttpRequest(); var len = arguments.length; var url = ...
- StarUML[3.1.0]官方安装破解版[app.asar]
StarUml 3.1.0 自注册破解版 安装完毕在注册界面随便输入一个 License 即可. 安装包方式可以选择从官方下,如果下载过慢,也可以选择分享包中的原版安装文件: 不放心的可以去校验MD5 ...
- Ubuntu上hi3531交叉编译环境arm-hisiv100nptl-linux搭建过程
安装SDK 1.Hi3531 SDK包位置 在"Hi3531_V100R001***/01.software/board"目录下,您可以看到一个 Hi3531_SDK_Vx.x.x ...
- npm run dev没反应
npm config set registry https://registry.npm.taobao.org npm install npm run dev
- 在python项目中导出项目依赖的模块信息
1.安装pipreqs pip install pipreqs 2.导出requriements.txt文件 在windows中,终端切换到项目所在的文件夹下: 运行: pipreqs ./ 如果遇到 ...
- MySQL中0、'0'作为条件时的区别
一.现象: 今天查询时,某字段x为varchar 可能的值为A B C 0 1 2 3 4 想把0 1 2 3 4的所有数据查出,使用的SQL为 select * from table where x ...
- python tkinter messagebox
"""messagebox消息框""" import tkinter as tk #导入messagebox import tkinter. ...
- bios下能看到硬盘,进入系统看不到的解决方法
新加了个固态硬盘 安装完系统后,打开我的电脑 看不到老硬盘的分区,进入磁盘管理也看不到. 最后,重启 选择老硬盘进入系统后, 再重启,进入新硬盘的系统, 就显示出来了