安装程序的作用是什么?#
本文档详细说明了安装程序对运行它的机器所做的具体操作。
apt
安装的软件包#
软件包 python3
和 python3-venv
从 apt 存储库安装。
中心环境#
JupyterHub 从位于 /opt/tljh/hub
的 python3 虚拟环境运行。它使用系统的已安装 python,并由 root 拥有。它还包含 traefik 的二进制安装。此虚拟环境完全由 TLJH 管理。
注意
如果您尝试删除 TLJH,请使用以下方法撤消此操作
sudo rm -rf /opt/tljh/hub
用户环境#
默认情况下,mambaforge
conda 环境安装在 /opt/tljh/user
中。它包含用于启动所有用户的笔记本界面,以及所有用户可用的各种软件包。该环境由 root
用户拥有。JupyterHub 管理员可以使用 sudo -E conda install
或 sudo -E pip install
将软件包安装到此环境中。
此 conda 环境被添加到所有使用 JupyterHub 启动的用户 的 $PATH
中。如果您使用的是 ssh
,则可以通过运行以下命令激活此环境
source /opt/tljh/user/bin/activate
这应该让您运行各种 conda
和 pip
命令。如果您遇到类似 Command 'conda' not found
的错误,请尝试在命令前加上
sudo env PATH=${PATH} <command>
默认情况下,sudo
不尊重您已激活的任何自定义环境。 env PATH=${PATH}
可以“修复”这个问题。
注意
如果您尝试删除 TLJH,请使用以下方法撤消此操作
sudo rm -rf /opt/tljh/user
tljh-config
符号链接#
我们从 /usr/bin/tljh-config
创建一个符号链接到 /opt/tljh/hub/bin/tljh-config
,这样用户就可以在他们的终端中运行 sudo tljh-config <something>
。虽然用户环境在用户通过 JupyterHub 启动时被添加到用户的 $PATH
中,但 hub 环境却没有。这使得很难访问用于更改大多数配置参数的 tljh-config
命令。因此,我们将 tljh-config
命令符号链接到 /usr/bin
,这样就可以直接使用 sudo tljh-config <command>
访问它。
注意
如果您尝试删除 TLJH,请使用以下方法撤消此操作
sudo unlink /usr/bin/tljh-config
jupyterhub_config.d
目录用于自定义配置片段#
在 /opt/tljh/config/jupyterhub_config.d 中,任何以 .py 结尾且是有效的 JupyterHub 配置的文件都将在使用 tljh-config 指定的任何配置选项加载之后加载。
注意
如果您尝试删除 TLJH,请使用以下方法撤消此操作
sudo rm -rf /opt/tljh/config
Systemd Units#
TLJH 在您的计算机上放置了 2 个 systemd units。它们都在系统启动时启动。
jupyterhub.service
- 启动 JupyterHub 服务。traefik.service
- 启动管理 HTTPS 的 traefik 代理
此外,每个运行的 Jupyter 用户都拥有自己的名为 jupyter-<username>
的 systemd unit。
注意
如果您尝试删除 TLJH,请使用以下方法撤消此操作
# stop the services
systemctl stop jupyterhub.service
systemctl stop traefik.service
systemctl stop jupyter-<username>
# disable the services
systemctl disable jupyterhub.service
systemctl disable traefik.service
# run this command for all the Jupyter users
systemctl disable jupyter-<username>
# remove the systemd unit
rm /etc/systemd/system/jupyterhub.service
rm /etc/systemd/system/traefik.service
# reset the state of all units
systemctl daemon-reload
systemctl reset-failed
状态文件#
TLJH 在 /opt/tljh/state
中放置了 3 个 jupyterhub.service
和 4 个 traefik.service
状态文件。这些文件保存了 JupyterHub 和 Traefik 服务的状态,并且仅供这些服务使用和修改。
注意
如果您尝试删除 TLJH,请使用以下方法撤消此操作
sudo rm -rf /opt/tljh/state
进度页面文件#
如果您使用 --show-progress-page
标志运行了 TLJH 安装程序,那么您的系统中将添加两个文件来帮助提供进度页面
/var/run/index.html
- 主要的进度页面/var/run/favicon.ico
- JupyterHub 图标
注意
如果您尝试删除 TLJH,请使用以下方法撤消此操作
sudo rm /var/run/index.html
sudo rm /var/run/favicon.ico
用户组#
TLJH 在安装时创建了两个用户组
jupyterhub-users
包含所有由该 JupyterHub 管理的用户jupyterhub-admins
包含所有由该 JupyterHub 管理的具有管理员权限的用户。
当新的 JupyterHub 用户登录时,会为他们创建一个 unix 用户。unix 用户始终被添加到 jupyterhub-users
组中。如果用户是管理员,则在他们启动/停止笔记本服务器时,他们会被添加到 jupyterhub-admins
组中。
如果您卸载 TLJH,您可能应该删除与这两个用户组关联的所有用户帐户,然后删除组本身。您可能需要存档或删除这些用户在 /home/
下的主目录。
注意
如果您尝试删除 TLJH,为了删除用户及其主目录,请使用
sudo userdel -r <user>
请记住,位于文件系统其他部分的文件将必须手动搜索和删除。
注意
要删除用户组单位
sudo delgroup jupyterhub-users
sudo delgroup jupyterhub-admins
# remove jupyterhub-admins from the sudoers group
sudo rm /etc/sudoers.d/jupyterhub-admins
JupyterHub 管理员的无密码 sudo
#
/etc/sudoers.d/jupyterhub-admins
被创建来为所有 JupyterHub 管理员提供无密码 sudo。我们还将其设置为使用 sudo -E
继承 $PATH
,以便更容易地调用 conda
、pip
等。
删除 TLJH#
如果尝试清除新的 TLJH 安装,请按照有关如何恢复 TLJH 安装程序对系统进行的每个特定修改的说明进行操作。
注意
如果使用虚拟机,建议移除 TLJH 的方法是销毁虚拟机并重新开始。
警告
在使用 TLJH 后完全卸载它是一项困难的任务,因为它与系统在使用后如何更改以及用户如何修改系统高度耦合。因此,我们无法提供有关如何在这种情况下去做的说明。