3. Configuration de Flask et d’Apache#
Le système jupyter nbgrader nécessite la mise en place d’un serveur Apache pour:
la gestion d’un reverse proxy pour rentre accessible le serveur jupyterhub en https vers l’extérieur
la mise en place de l’application flask de gestion des cours
Dans l’environnement virtuel il faut installer les 2 paquets Python
Flask serveur d’application Flask
mod_wsgi mod apache permettant la gestion d’un serveur Flask
Les fichiers de configuration supplémentaires par rapport à une installation Apache de base sont dans le dépot git:
validation_apache2 sous
git@forge.univ-lyon1.fr:nbgrader/validation_apache2.git
Les fichiers de configuration Apache à modifier sont à déposer dans le répertoire apache2 /etc/apache2
ils sont dans les sous répertoires suivants:
.
├── conf-available
│ └── flask_cours.conf
├── mods-available
│ ├── wsgi.conf
│ └── wsgi.load
├── README.md
└── sites-available
└── site_nbgrader.conf
Prudence
évitez si possible les accents dans les fichiers de configuration !
Il faut configurer le site nbgrader à mettre en place en partant du fichier site_nbgrader.conf en modifiant le nom du site.
3.1. autorisation#
l’application flask de gestion de cours utilise des scripts qui se trouvent dans le répertoire bin. Pour l’exécution de certains de ces scripts, il faut autoriser le compte du meta-cours à exécuter des commandes systèmes en utilisant la commande sudo
Pour cela sous Unix, il faut configurer le service sudo dans le répertoire /etc/sudoers.d
en créant par exemple un fichier de configuration jupyter
Defaults secure_path = /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
cours ALL=(root) NOPASSWD: /home/cours/FlaskApp/bin/purge_cours.sh, /usr/sbin/usermod
qui autorise le compte de meta-cours cours
à exécuter les scripts purge_cours.sh
et la commande usermod
pour modifier les groupes des étudiants (nécessaire pour la gestion des étudiants par groupe).
On peut aussi ajouter les scripts set_acl.sh
et reset_acl.sh
qui sont dans dans FlaskApp/bin pour la gestion des droits acl (Access Control List).
3.2. vérification du service apache2#
la commande systemctl status apache2.service
permet de vérifier l’état du service apache2 et doit renvoyer une information du type ci-dessous
● apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2022-07-22 11:48:25 CEST; 6min ago
Docs: https://httpd.apache.org/docs/2.4/
Process: 646 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
Main PID: 723 (apache2)
Tasks: 91 (limit: 4915)
Memory: 51.4M
CPU: 157ms
CGroup: /system.slice/apache2.service
├─723 /usr/sbin/apache2 -k start
├─732 Validation-Cours -k start
├─733 Validation-Cours1 -k start
├─734 /usr/sbin/apache2 -k start
└─735 /usr/sbin/apache2 -k start
avec les services de gestion des méta-cours Validation-Cours (application flask)
3.3. configuration de la gestion des cours#
Pour chaque méta-cours, on configure un fichier flask à partir de flask_cours.conf
gestion des cours du meta-cours
sous le compte du meta cours, dans le répertoire principal, on crée un répertoire FlaskApp en clonant le déport git
git@forge.univ-lyon1.fr:nbgrader/FlaskApp.git
On configure ensuite l’application (voir README.md), en spécifiant la liste des cours à gérer.
Il faut ajouter le compte du meta-cours dans la liste USERS du fichier
update-validation
dans \bin
de l’environnement virtuel, qui met à jour régulièrement les dépôts git.
répertoire d’échange
Le répertoire par défaut pour échanger des fichiers avec les étudiants est sous /srv/nbgrader/exchanges/nom_cours
Avertissement
attention au permission de ce fichier
par ex pour le cours MGC2005L du meta-cours cours:
drwxr-x—+ 4 cours cours 4,0K févr. 1 11:03 MGC2005L/
Le fichier de purge des cours purge_cours.sh doit aussi avoir les droits sudo , en créant (modifiant) un fichier dans /etc/sudoers.d avec une ligne du type:
cours ALL=(root) NOPASSWD: /home/cours/FlaskApp/bin/purge_cours.sh
3.3.1. commandes apache2#
a2ensite site_nbgrader
pour installer le site sous apachea2enconf flask_cours
pour installer l’application Flask de gestion du meta-coursa2enmod wsgi
pour installer le mod de gestion Flask sous apache
3.4. configuration des cours#
Pour chaque cours on définit un fichier de configuration hub_config.py et un lien dans etc/jupyter/conf.d
.
de plus si le cours contient beaucoup d’étudiants (>500), le système de gestion des droits d’accès sous unix (ACL) peut être limité, et on ne peut gérer individuellement avec les ACL un très grands nombres d’étudiants. Dans ce cas , il faut créer un groupe unix ayant le nom du cours, par exemple pour le cours MGC2367M
groupadd MGC2367M
ensuite la gestion des droits d’accès aux cours par les étudiants se fait à partir du groupe.
Pour repasser à une gestion classique étudiant par étudiant, il suffit d’effacer le groupe avec la commande:
groupdel MGC2367M