JupyterHub mit Nbgrader
-
sudo apt install python3 python3-dev git curl
curl https://raw.githubusercontent.com/jupyterhub/the-littlest-jupyterhub/master/bootstrap/bootstrap.py
| sudo -E python3 - --admin <admin-user-name>
Siehe dazu auch
http://tljh.jupyter.org/en/latest/install/custom-server.html
-
sudo ufw allow http
-
im Browser http://<ip> aufrufen
-
HTTPS einrichten.
Die verwendete Domain kann man in diesem Prozess einfach angeben und man muss nicht vorher in httpd.conf o.ä.
etwas ändern.
sudo tljh-config set https.enabled true
sudo tljh-config set https.letsencrypt.email meine@email.com
sudo tljh-config add-item https.letsencrypt.domains yourhub.meinedomain.edu
Konfiguration prüfen
sudo tljh-config show
sudo tljh-config reload proxy
Wenige Minuten warten, im Browser aufrufen.
Falls MySQL benötigt:
-
sudo apt install mysql-server
-
mysql -u root -p
create user schueler@'%' identified by 'secret';
-
Datenbank einspielen (geht auch im Terminal) und .
grant all on fahrschule.* to schueler@'%';
-
Im Jupyter-Terminal
sudo -E pip install ipython-sql pymysql
sudo apt install libmysqlclient-dev
sudo -E pip install mysqlclient
Die Notebooks müssen neu gestartet werden, damit die Pakete verfügbar sind.
Logs anzeigen
Logs des Jupyterhub
sudo journalctl -u jupyterhub -f
Logs des persönlichen Servers
sudo journalctl -u jupyter-<name-of-user> -f
Logs werden mit less angezeigt. q beenden, /suchstring Enter suchen, G ans Ende springen.
Nbgrader installieren
-
im Jupyter-Terminal des Admins:
sudo -E conda install -c conda-forge nbgrader
nbgrader
- An mehreren Orten muss eine nbgrader_config.py sein:
/home/jupyter-sylvia
/home/jupyter-sylvia/.jupyter
/usr/local/etc/jupyter
Diese muss enthalten:
c = get_config()
c.CourseDirectory.root="/home/jupyter-sylvia"
c.Exchange.root = "/nbgrader/exchange"
Und in /home/jupyter-sylvia muss zusätzlich die Kurs-ID gesetzt sein:
c.CourseDirectory.course_id = "pythonkurs"
Siehe dazu auch hier.
- Tauschverzeichnis erstellen und Rechte setzen:
mkdir /nbgrader/exchange
chmod ugo+rw /nbgrader/exchange
Nbgrader nutzen
- Unter Formgrader Themen anlegen
- In ~/source/Thema Notebook anlegen. Mit View -> Cell Toolbar -> Create Assignment jede Zelle markieren,
ob autogrades, readonly usw.
- Lösungen mit ### BEGIN SOLUTION ### END SOLUTION klammern
- In Formgrader "Create", um Schülerversion zu erzeugen. Diese dann über die Lupe testen.
Achtung! Noch nicht releasen, denn Nbgrader verhindert Versionskauderwelsch: Wenn einmal released und
von einem User heruntergeladen, kann man das Thema nicht in einer neueren Version austeilen.
- Erst wenn wirklich fertig: Release in Formgrader. Jetzt können alle Jupyter-Nutzer die Materialien
über das Menü "Assignments" herunterladen. Diese müssen NICHT per Nbgrader in den Kurs eingeschrieben werden.
- Im Terminal Releases anzeigen:
nbgrader list
MySQL in Jupyter nutzen
Cell Magic einrichten und Verbindung zur Datenbank:
%load_ext sql
%sql mysql://sqluser:secretpassword@localhost/datenbankname
Datenbanken im Terminal klonen:
mysqldump --opt -h localhost -u root -psecretpassword fahrschule3 | mysql -h localhost -u root
-psecretpassword dbkopie