安装程序做了什么?#

本文详细介绍了安装程序对其运行的机器所做的具体操作。

apt 安装的包#

从 apt 仓库安装了 python3python3-venv 包。

Hub 环境#

JupyterHub 从位于 /opt/tljh/hub 的 python3 虚拟环境运行。它使用系统安装的 python,并由 root 拥有。它还包含 traefik 的二进制安装。此虚拟环境完全由 TLJH 管理。

注意

如果您尝试删除 TLJH,请使用以下命令恢复此操作:

sudo rm -rf /opt/tljh/hub

用户环境#

默认情况下,miniforge conda 环境安装在 /opt/tljh/user 中。它包含用于启动所有用户的 notebook 界面,以及所有用户可用的各种包。该环境由 root 用户拥有。JupyterHub 管理员可以使用 sudo -E conda installsudo -E pip install 将包安装到此环境中。

此 conda 环境会添加到通过 JupyterHub 启动的所有用户的 $PATH 中。如果您使用的是 ssh,您可以通过运行以下命令激活此环境:

source /opt/tljh/user/bin/activate

这应该允许您运行各种 condapip 命令。如果您遇到诸如 Command 'conda' not found 的错误,请尝试在命令前加上:

sudo env PATH=${PATH} <command>

默认情况下,sudo 不会遵守您已激活的任何自定义环境。env PATH=${PATH} “修复”了这个问题。

注意

如果您尝试删除 TLJH,请使用以下命令恢复此操作:

sudo rm -rf /opt/tljh/user

jupyterhub_config.d 目录用于自定义配置文件片段#

/opt/tljh/config/jupyterhub_config.d 中所有以 .py 结尾且是有效 JupyterHub 配置的文件将在加载通过 tljh-config 指定的任何配置选项之后加载。

注意

如果您尝试删除 TLJH,请使用以下命令恢复此操作:

sudo rm -rf /opt/tljh/config

Systemd 单元#

TLJH 会在您的计算机上放置 2 个 systemd 单元。它们都会在系统启动时启动。

  1. jupyterhub.service - 启动 JupyterHub 服务。

  2. traefik.service - 启动管理 HTTPS 的 traefik 代理

此外,每个正在运行的 Jupyter 用户都会获得一个名为 jupyter-<username> 的 systemd 单元。

注意

如果您尝试删除 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 将 3 个 jupyterhub.service 和 4 个 traefik.service 状态文件放置在 /opt/tljh/state 中。这些文件保存 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 安装时会创建两个用户组

  1. jupyterhub-users 包含此 JupyterHub 管理的所有用户

  2. 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,以便更轻松地调用 condapip 等。

删除 TLJH#

如果尝试清除全新的 TLJH 安装,请按照说明撤销 TLJH 安装程序对系统所做的每项特定修改。

注意

如果使用虚拟机,推荐的删除 TLJH 的方法是销毁虚拟机并重新开始。

警告

TLJH 使用后要完全卸载是一项艰巨的任务,因为它与系统在使用和用户修改后如何变化高度耦合。因此,我们无法提供在这种情况下如何操作的说明。