Jupyterhub + Nginx 踩坑记录

今天准备搭建一个JupyterHub服务器,给几个热爱数据分析的朋友用作Python实验平台。于是踩了如下一些坑。我的服务器是腾讯云上一台Ubuntu 16的服务器。我这边只是整理一些坑,具体操作的命令和代码在CSDN和Stack Overflow上面都有很丰富的资料。

1. jupyterhub 与 jupyter notebook:

  • jupyter notebook是早期的版本,轻量级,本地运行方便,Python开发或者实验的过程中本地调试经常会使用这种原生的轻量级版本;没有用户管理、用户服务器管理等功能,不能面向多位用户使用。
  • jupyterhub是集成了用户管理,服务器管理等功能的新版本,能够支持多人使用,但如果是本地调试,就过重了。

2. jupyterhub安装的坑:

  • jupyterhub后端是nodejs,所以至少要安装nodejs,并且node -v 不低于6.0, 可以用以下命令升级:
    第一行是安装一个叫n的命令,第二行是用n更新node到最近的stable版本,如果写latest就是更新到最新版。
sudo npm i -g n 
sudo n stable
  • jupyterhub会用到configurable-http-proxy,这个是nodejs中的一个组件,要用npm安装
  • 使用nginx反向代理:若使用nginx反向代理,尽量按照官方文档来配置,链接在文末。

3. PAM Authentication 一直失败,原来是要用root启动jupyterhub,这样才能调用其他user的系统认证。

4. 处理完PAM的问题,用户已经可以登录了,但在start my server时爆了一长串错,很难debug。搜了很多遍发现报错的源头是module dateutil没有找到。dateutil要装一下,或者版本不够要升级,但是这个坑在于pip中这个module的名字叫做python-dateutil,遇到这个问题要用下面这行命令安装,如果是国内的服务器,非常建议加上 -i的参数,从tuna的镜像进行安装。

pip install python-dateutil -i https://pypi.tuna.tsinghua.edu.cn/simple

5. 当start server成功以后,想要创建第一notebook,又遇到坑了,服务器表示SingleUserNotebookApp handlers:620] Not Found,有一个handler找不到。也不知道是什么意思,就去互联网上搜一下。这个是系统权限的问题,如果登陆的用户没有sudo权限,就没有办法去user的目录下创建新的notebook文件。

这个问题的解决方案,根据官方文档可以解决,其中有比较多Linux系统层面的操作,也不是很懂,只能照着执行下来。

https://jupyterhub.readthedocs.io/en/stable/reference/config-sudo.html

如果需要翻译,可以给我留言,回头我翻译一份。

6.打开这个文件之后,python是无法执行的,总之是每走一步就错一步,摸着石头过河,渐渐地就想要放弃了。经过一夜的战斗,系统屏蔽了Cross Origin的请求。后来终于发现这是因为nginx在做反向代理的时候修改了header,导致jupyterhub将这个请求屏蔽。为什么要修改header呢,那是因为copy了网络上的配置文件,不靠谱,解决的办法是替换成官方提供的nginx配置文件的内容,终于运行成功了,半夜两点终于成功执行了hello world,心酸到哭泣。

官方配置反向代理的文档是:https://jupyterhub.readthedocs.io/en/stable/reference/config-proxy.html

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值