2. Configuration de Jupyterhub#
La documentation générale sur jupyterhub se trouve ici:
Le système nécessite que les paquets python suivants sont installés:
jupyter
jupyterhub
jupyterlab
nbgrader
Les fichiers et programmes de configuration sont dans le déport git:
validation_jupyter sous git@forge.univ-lyon1.fr:nbgrader/validation_jupyterhub.git
2.1. systemd jupyterhub.service#
Le fichier de service systemd pour lancer jupyterd est
jupyterhub.service
.
Le système lance le programme
start_jupyterhub
qui se trouve sous etc/jupyter dans l’environnement virtuel.
Ce programme python a pour objectif de configurer l’environnement
virtuel puis de lancer jupyterhub
On précise dans ces fichiers l’emplacement de l’environnement virtuel utilisé.
Indication
en cas de problème, augmenter le niveau de log avec le paramétre –log-level=40 dans jupyterhub.service
2.2. configuration jupyterhub#
La configuration de jupyterhub se trouve sous l’environnement virtuel $VIRTUAL_ENV$/etc/jupyter
avec la structure suivante:
.
├── conf.d
│ ├── 00Flask_cours_config.py -> /home/cours/FlaskApp/jupyterhub_config.py
│ ├── 01MGCtest_config.py -> /home/cours/MGCtest/hub_config.py
│ └── admin_access_config.py
├── instructor-config.py
├── jupyterhub_config.py
├── jupyter_nbconvert_config.json
├── jupyter_notebook_config.d
│ ├── jupyterlab.json
│ ├── jupyterlab_latex.json
│ ├── jupyter-server-proxy-notebookserverextension.json
│ └── serverextension.json
├── jupyter_notebook_config.json
├── jupyter_notebook_config.py
├── jupyter_server_config.d
│ ├── jupyterlab.json
│ ├── jupyterlab_latex.json
│ ├── jupyter-server-proxy-jupyterserverextension.json
│ ├── nbclassic.json
│ └── notebook_shim.json
├── nbgrader_config.py
└── start_jupyterhub
Vérifier le fichier de configuration principal jupyterhub_config.py, en particulier le nom de la machine. Dans ce fichier, on définit aussi la liste des utilisateurs admin qui ont accès au menu Admin permettant d’avoir accès en live à la session des étudiants.
Dans ce fichier, il faut aussi les ressources maxi par utilisateur
c.SystemdSpawner.mem_limit = “1G”
c.SystemdSpawner.cpu_limit = 1
Dans le répertoire conf.d, il faut indiquer les liens vers la gestion du meta cours (application flask 00Flask) et les cours rattachés (01MGCtest dans l’exemple).
2.4. vérification des services#
la commande systemctl status jupyterhub.service
permet de vérifier l’état du service jupyterhub et doit renvoyer une information du type ci-dessous
● jupyterhub.service - JupyterHub Daemon
Loaded: loaded (/etc/systemd/system/jupyterhub.service; enabled; vendor preset: enabled)
Drop-In: /etc/systemd/system/jupyterhub.service.d
└─shell.conf, validation.conf
Active: active (running) since Fri 2022-07-22 11:48:25 CEST; 31s ago
Main PID: 640 (python3)
Tasks: 90 (limit: 4915)
Memory: 880.4M
CPU: 20.763s
CGroup: /system.slice/jupyterhub.service
├─ 640 /var/lib/jupyterhub/venvs/py3/bin/python3 /var/lib/jupyterhub/venvs/py3/etc/jupyter/start_jupyterhub --config=/var/
├─ 996 node /usr/bin/configurable-http-proxy --ip 127.0.0.1 --port 8000 --api-ip 127.0.0.1 --api-port 8001 --error-target
├─1003 /var/lib/jupyterhub/venvs/py3//bin/python3 -m jupyterhub_idle_culler --timeout=43200
├─1004 /var/lib/jupyterhub/venvs/py3/bin/python3.9 /var/lib/jupyterhub/venvs/py3/bin/flask run --port=10101
├─1007 /var/lib/jupyterhub/venvs/py3/bin/python3.9 /var/lib/jupyterhub/venvs/py3/bin/jupyterhub-singleuser --group=MGCtest
├─1032 /var/lib/jupyterhub/venvs/py3/bin/python3.9 /var/lib/jupyterhub/venvs/py3/bin/jupyterhub-singleuser --group=IntroIA
├─1057 /var/lib/jupyterhub/venvs/py3/bin/python3.9 /var/lib/jupyterhub/venvs/py3/bin/jupyterhub-singleuser --group=MGC2367
├─1082 /var/lib/jupyterhub/venvs/py3/bin/python3.9 /var/lib/jupyterhub/venvs/py3/bin/jupyterhub-singleuser --group=MGC2014
├─1107 /var/lib/jupyterhub/venvs/py3/bin/python3.9 /var/lib/jupyterhub/venvs/py3/bin/jupyterhub-singleuser --group=MGC2028
├─1132 /var/lib/jupyterhub/venvs/py3/bin/python3.9 /var/lib/jupyterhub/venvs/py3/bin/flask run --port=10111
└─1134 /var/lib/jupyterhub/venvs/py3/bin/python3.9 /var/lib/jupyterhub/venvs/py3/bin/jupyterhub-singleuser --group=MGC0000
avec les services de gestion des méta-cours flask et des serveurs jupyterhub-singleuser associés à chacun des cours.
2.5. configuration de services annexes#
pour le bon fonctionnement du système, des services supplémentaires sont installées:
jupyterhub-restart qui redémarre tous les soirs le service jupyterhub pour déactiver tous les serveurs jupyter lancés par les utilisateurs et qui n’ont pas été arrêtés.
apache2-restart qui redémarre tous les soirs le service apache pour mettre à jour flask après jupyterhub.
update-validation.service qui teste si une mise à jour des outils de validation et de l’application Flask est nécessaire en comparant avec la version des dépôts git.
Commandes de gestion des services systemctl utiles pour vérifier:
systemctl list-timers
systemctl start apache2-restart.timer
systemctl start jupyterhub-restart.timer
systemctl –failed
journalctl -xe
2.6. jupyter extension#
liste des extensions
jupyter-nbextension list
pour les dictionnaires français
spellchecker installer les dictionnaires dans /var/lib/jupyterhub/venvs/py3/share/jupyter/nbextensions/spellchecker