jupyterhub(多⽤户平台)安装配置、安装问题解决、⽤户验证问题jupyterhub 安装、安装问题解决、⽤户验证问题
⼀,基础环境
腾讯云centos7 + anaconda3(python3.8.8)
注意:最好是带有⽹的环境,不带外⽹的电脑离线安装jupyterhub安装很费劲,github源码、whl等均失败。
⼆,下载软件
1. 安装jupyterhub
pip install jupyterhub -i XXX 有⽹可以使⽤清华源/没⽹⾃⼰公司镜像源
注意:使⽤conda安装会很慢,偶尔会失败,不知道为什么,⽬前⾃动安装jupyterhub1.5.0,切记版本不同,后⾯配置参数有很⼤区别,不要看见别⼈博客的参数设置,就⾃⼰copy使⽤,不要问我为什么知道,都是泪。
2. 安装nodejs
# 是否sudo ⾃⼰决定
sudo yum install nodejs
sudo npm install -g configurable-http-proxy(jupyterhub默认代理)
3. 测试软件
jupyterhub -h
configurable-http-proxy -h
# 不报错就OK,报错有和我⼀样的错误的看下⾯的错误解决,不⼀样就只能看百度
4. 启动服务
# ⽣成配置⽂件
jupyterhub --generate-config # 应该⽣成在当前⽂件夹下,
# 服务启动 -- 启动时注意⾃⼰配置⽂件的位置 /etc下⾏,不是root,在/home下也⾏
jupyterhub --generate-config -f=/etc/jupyterhub/jupyterhub_config.py --no-ssl
# 后台服务启动
nohup jupyterhub --generate-config -f=/etc/jupyterhub/jupyterhub_config.py --no-ssl >> xxx.log 2>&1 &
三,准备配置⽂件
** 注意: 接下来的配置参数是符合jupyterhub 1.5.0 版本的,不同版本有所区别,想要准确参数去查对应版 本官⽅⽂档
adthedocs.io/en/stable/ 这是jupyterhub 1.5.0
# ------------------------------------------------------------------------------
# 这只是我⽬前测试的配置,并不适合所⽤⼈
# ------------------------------------------------------------------------------
# 设置每个⽤户的 book类型和⼯作⽬录(创建.ipynb⽂件⾃动保存的地⽅)
book_dir ='~'
c.Spawner.default_url ='/lab'
c.Spawner.args =['--allow-root']
# configurable_http_proxy 代理设置
c.ConfigurableHTTPProxy.should_start =True#允许hub启动代理可以不写,默认的,为False 就需要⾃⼰去启动configurable-http-proxy
c.ConfigurableHTTPProxy.api_url ='localhost:8001'# proxy与hub与代理通讯,这应该是默认值不⾏也⾏
# 对外登录设置的ip
c.JupyterHub.ip ='0.0.0.0'
c.JupyterHub.port =80
ding ='utf8'
# 其他设置 cookie file and sqlite file,这个写着了,不写我没试有啥影响
kie_secret_file ='/etc/jupyterhub/jupyterhub_cookie_secret'
c.JupyterHub.db_url ='/etc/jupyterhub/jupyterhub.sqlite'
c.JupyterHub.pid_file ='/etc/jupyterhub/jupyterhub.pid'
# ⽤户名单设置,默认⾝份验证⽅式PAM与NUIX系统⽤户管理层⼀致,root⽤户可以添加⽤户test1,test2等等,⾮root⽤户,sudo useradd test1/test2 不起作⽤,⽬前我不知道sudo useradd 和 root下 useradd本质区别*(没有特意学过linux,⼀切只靠⽤时百度)
c.Authenticator.allowed_users =['test1','test2']
c.Authenticator.admin_users ={'root'}
### 如果没有root权限,公司服务器,员⼯⼀般都没有,可以先设置下⾯两句进⾏测试,允许任何⽤户和密码登录,若想⾃⼰设置⾝份验证,也可以⾃⼰修改 PA MAuthenticator和SimpleLocalProcessSpawner这两个类,这两个类代码特简单,代码放到⽂章下⾯
c.JupyterHub.authenticator_class ='jupyterhub.auth.DummyAuthenticator'
c.JupyterHub.spawner_class ='jupyterhub.spawner.SimpleLocalProcessSpawner'
# 如上⾯不好使,请 pip install jupyterhub-dummyauthenticator
# pip install jupyterhub-simplelocalprocessspawner
# 应该jupyterhub 安装时就⾃带了这两个类就在jupyterhub安装⽬录下,auth.py和spawner.py⽂件⾥
# 为jupyterhub 添加额外服务,⽤于处理闲置⽤户进程。使⽤时不好使安装⼀下:pip install jupyterhub-ilde-culler
c.JupyterHub.services =[
{
'name':'idle-culler',
'command':['python3','-m','jupyterhub_idle_culler','--timeout=3600'],
'admin':True# 1.5.0 需要服务管理员权限,去kill 部分闲置的进程notebook, 2.0版本已经改了,可以只赋给 idel-culler 部分特定权限,roles
}
]
四,安装时报错解决
1. configurable-http-proxy 安装不报错,测试 configurable-http-proxy -h 报错(安装中,我就⼀个安装错误,)错误图公司服务器
就没有截屏(提⽰的 "unexpect indentifier ")
解决:应该时nodejs 版本问题,默认下载的时6.17.1吧,升级⼀下版本就好了
(1)如果时云服务器(有⽹),
npm install -g n
n table(⽣成到稳定版)
n latest(升级到最新版)
(2) 公司服务器(没外⽹),就下载安装包离线安装
nodejs官⽹ /dist/
到⾃⼰需要的node版本,下载后上传到linux.
解压 tar -zxvf
配置软连接
ln -s  /⽂件路径//bin/node /usr/local/bin
ln -s  /⽂件路径//bin/npm /usr/local/bin
执⾏ node -v 命令看是否可⽤
2. jupyterhub command not found 或 服务启动报错 no file or dir “jupyterhub-singleuser” 等问题
解决:有时候安装完,jupyterhub 和插件 没有⾃动创建软连接,需要⾃⼰创建
ln -s  /xx/anaconda3/bin/jupyterhub /usr/local/bin
ln -s  /xx/anaconda3/bin/jupyterlab /usr/local/bin
ln -s  /xx/anaconda3/bin/jupyterhub-singleuser /usr/local/bin
3. 启动中端⼝占⽤问题,如下图
解决:Jupyterhub 启动服务时,会使⽤好⼏个端⼝,服务意外停⽌时,有的端⼝未关闭,关闭端⼝# 查看端⼝
lsof -i:80
lsof -i:8001
lsof -i:8081
# 关闭对应端⼝进程
kill -9 xxx(pid)
4. ⾝份验证问题,(没有root权限,sudo useradd 创建的⽤户不好使)如图
解决 1. 使⽤dummpyauthenticator 不建⽴验证
2. ⾃⼰使⽤sqlite 或mysql 创建⽤户表,修改源码进⾏验证(这个我还没写,下⼀步写)
5. 使⽤⾃定义⾝份验证类和⾃定义spawner类时,能登陆但⽣不成singlejupyter进程问题,如下图:
解决:
# 配置⽂件添加(不保证肯定解决此类问题,⽂件夹权限问题也可能导致此类问题)
c.Spawner.args = ['--allow-root']
6. 其他问题 。。。想不起来了
mysql下载starting the server五,配置参数、jupyterhub命令、⾝份验证代码附录
1. 所有配置参数附录
下⾯附上1.5.0版本所有的配置参数和juputerhub 命令的参数, 按照⾃⼰想要的参数,去查 #-------  Configuration file for jupyterhub.
#------------------------------------------------------------------------------
# Application(SingletonConfigurable) configuration
#------------------------------------------------------------------------------
## This is an application.
## The date format used by logging formatters for %(asctime)s
#  Default: '%Y-%m-%d %H:%M:%S'
# c.Application.log_datefmt = '%Y-%m-%d %H:%M:%S'
## The Logging format template
#  Default: '[%(name)s]%(highlevel)s %(message)s'
# c.Application.log_format = '[%(name)s]%(highlevel)s %(message)s'
## Set the log level by value or name.
#  Choices: any of [0, 10, 20, 30, 40, 50, 'DEBUG', 'INFO', 'WARN', 'ERROR', 'CRITICAL'] #  Default: 30
# c.Application.log_level = 30
## Instead of starting the Application, dump configuration to stdout
#  Default: False
# c.Application.show_config = False
## Instead of starting the Application, dump configuration to stdout (as JSON)
#  Default: False
# c.Application.show_config_json = False
#------------------------------------------------------------------------------
# JupyterHub(Application) configuration
#------------------------------------------------------------------------------
## An Application for starting a Multi-User Jupyter Notebook server.
## Maximum number of concurrent servers that can be active at a time.
#
#  Setting this can limit the total resources your users can consume.
#
#  An active server is any server that's not fully stopped. It is considered
#  active from the time it has been requested until the time that it has
#  completely stopped.
#
#  If this many user servers are active, users will not be able to launch new
#  servers until a server is shutdown. Spawn requests will be rejected with a 429
#  error asking them to try again.
#
#  If set to 0, no limit is enforced.
#  Default: 0
# c.JupyterHub.active_server_limit = 0
## Duration (in seconds) to determine the number of active users.
#  Default: 1800
# c.JupyterHub.active_user_window = 1800
## Resolution (in seconds) for updating activity
#
#  If activity is registered that is less than activity_resolution seconds more
#  recent than the current value, the new value will be ignored.
#
#  This avoids too many writes to the Hub database.
#  Default: 30
#  Default: 30
# c.JupyterHub.activity_resolution = 30
## Grant admin users permission to access single-user servers.
#
#          Users should be properly informed if this is enabled.
#  Default: False
# c.JupyterHub.admin_access = False
## DEPRECATED since version 0.7.2, use Authenticator.admin_users instead.
#  Default: set()
# c.JupyterHub.admin_users = set()
## Allow named single-user servers per user
#  Default: False
# c.JupyterHub.allow_named_servers = False
## Answer yes to any questions (e.g. confirm overwrite)
#  Default: False
# c.JupyterHub.answer_yes = False
## PENDING DEPRECATION: consider using services
#
#          Dict of token:username to be loaded into the database.
#
#          Allows ahead-of-time generation of API tokens for use by externally managed services, #          which authenticate as JupyterHub users.
#
#          Consider using services for general services that talk to the
#  JupyterHub API.
#  Default: {}
# c.JupyterHub.api_tokens = {}
## Authentication for prometheus metrics
#  Default: True
# c.JupyterHub.authenticate_prometheus = True
## Class for authenticating users.
#
#          This should be a subclass of :class:`jupyterhub.auth.Authenticator`
#
#          with an :meth:`authenticate` method that:
#
#          - is a coroutine (asyncio or tornado)
#          - returns username on success, None on failure
#          - takes two arguments: (handler, data),
#            where `handler` is the calling web.RequestHandler,
#            and `data` is the POST form data from the login page.
#
#          .. versionchanged:: 1.0
#              authenticators may be registered via entry points,
#              e.g. `c.JupyterHub.authenticator_class = 'pam'`
#
#  Currently installed:
#    - default: jupyterhub.auth.PAMAuthenticator
#    - dummy: jupyterhub.auth.DummyAuthenticator
#    - pam: jupyterhub.auth.PAMAuthenticator
#  Default: 'jupyterhub.auth.PAMAuthenticator'
# c.JupyterHub.authenticator_class = 'jupyterhub.auth.PAMAuthenticator'
## The base URL of the entire application.
#
#          Add this to the beginning of all JupyterHub URLs.
#          Use base_url to run JupyterHub within an existing website.
#
#          .. deprecated: 0.9

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。