安装程序做了什么?#
本文详细介绍了安装程序对其运行的机器所做的具体操作。
apt
安装的包#
从 apt 仓库安装了 python3
和 python3-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 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 单元#
TLJH 会在您的计算机上放置 2 个 systemd 单元。它们都会在系统启动时启动。
jupyterhub.service
- 启动 JupyterHub 服务。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 安装时会创建两个用户组
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 使用后要完全卸载是一项艰巨的任务,因为它与系统在使用和用户修改后如何变化高度耦合。因此,我们无法提供在这种情况下如何操作的说明。