Erstellen Sie mit JupyterHub + JupyterLab auf Rapsberry Pi 3B + eine Python-Mehrbenutzerplattform!

Einführung

Das Einrichten einer VM ist mühsam. Aber ich möchte eine Python-Entwicklungsumgebung für mehrere Personen ** billig ** machen. Qiita für diejenigen, die besorgt sind. Es ist ein Memo für mich.

Hoffentlich dauert es ungefähr eine Stunde.

Material --Raspberry Pi3 + (Ich wollte unbedingt Raspberry Pi4 Speicher: 4 GB)

Method

Umgebung

  1. Installieren Sie zunächst mit apt das erforderliche Set auf jupyterhub.

    $ sudo apt update
    $ sudo apt upgrade
    $ sudo apt install python3 python3-pip npm nodejs libnode64
    
  2. Verwenden Sie als Nächstes pip3 und npm, um das Jupyterhub-Set und die Proxy-Funktion zu installieren. # 1

    $ sudo pip3 install jupyterhub notebook wheel ipywidgets jupyterlab
    $ sudo npm install -g configurable-http-proxy
    
  3. Starten Sie JupyterHub lokal und überprüfen Sie den Betrieb. Wenden Sie sich zunächst an einen allgemeinen Benutzer.

    $ /usr/local/bin/jupyterhub
    

Greifen Sie dann in Chromium auf dem Desktop des Raspberry Pi auf http: // localhost: 8000 / zu und bestätigen Sie, dass der folgende Bildschirm angezeigt wird. Der JupyterHub-Server kann mit `` `ctrl-c``` beendet werden. Screen Shot 2020-02-22 at 23.50.49.png

Um es als Mehrfachbenutzer zu verwenden, müssen Sie es als Root-Benutzer starten. Starten Sie es also als root (sudo) und überprüfen Sie erneut, ob der obige Anmeldebildschirm angezeigt wird.

```Bash
$ sudo jupyterhub
```
  1. Um JupyterHub zu konfigurieren, erstellen Sie die Quelle der Konfigurationsdatei in "/ etc / jupyterhub".

    $ sudo mkdir /etc/jupyterhub
    $ cd /etc/jupyterhub
    $ sudo jupyterhub --generate-config    #Lassen Sie diesen Befehl eine Standardkonfigurationsdatei erstellen
    

Dann wird "jupyterhub_config.py" ausgespuckt. Öffnen Sie es als Root-Benutzer und beheben Sie Folgendes:

```Bash
$ sudo vi /etc/jupyterhub/jupyterhub_config.py    #vi oder was auch immer Sie mit Ihrem bevorzugten Texteditor mögen
```
```/etc/jupyterhub/jupyterhub_config.py
#Ich möchte standardmäßig jupyter lab verwenden, ändern Sie also Folgendes
c.Spawner.default_url = '/lab' 

#Fügen Sie zugängliche Benutzer zur Whitelist hinzu
c.Authenticator.whitelist = {'User1, User2'}

#Administrator hinzufügen(Autorisiert, um allgemeine Benutzer zu trennen)
c.Authenticator.admin_users = {'User0'}

#Legen Sie fest, dass beim Zugriff auf den Notizbuchordner jedes Benutzerverzeichnisses verwiesen wird
#Es ist kein obligatorisches Einstellungselement, sondern ein Ort, an dem die Einstellungen geteilt werden.
c.Spawner.notebook_dir = '~/notebook'
```

Wenn "c.Spawner.notebook_dir" festgelegt ist, muss das Notizbuchverzeichnis (~ / notebook) jedes Benutzers im Voraus erstellt werden. (Referenzseite: https://qiita.com/atsushi_wagatsuma/items/89b714328663992b54f4)

Ausführliche Informationen zur Benutzerverwaltung finden Sie in diesem Artikel "Hinzufügen und Löschen von Benutzern".

  1. Starten Sie abschließend jupyterhub und überprüfen Sie die Funktion.

    $ sudo jupyterhub -f /etc/jupyterhub/jupyterhub_config.py
    ...
    [I 2020-02-23 11:10:12.687 JupyterHub app:2631] JupyterHub is now running at http://:8000    #Wenn diese Anzeige erscheint, ist der Start abgeschlossen!
    
  2. Überprüfen Sie, ob sich der Administrator und der allgemeine Benutzer von localhost oder einem anderen Computer im Netzwerk aus anmelden können. Wenn Sie ein einfaches Python-Programm schreiben und es funktioniert, ist es in Ordnung! Localhost:http://localhost:8000/ Screen Shot 2020-02-23 at 12.06.18.png Network: http://<IP address>:8000/ Screen Shot 2020-02-23 at 12.22.17.png

  3. Es hat vorerst funktioniert, aber ich muss bei jedem Start "$ sudo jupyterhub -f / etc / jupyterhub / jupyterhub_config.py" eingeben. Sehr nervig. Daher wird es zentral vom Systemd-Dienst verwaltet und so eingestellt, dass es beim Start von Raspberry pi automatisch gestartet wird.

    $ sudo mkdir -p /opt/jupyterhub/etc/systemd    #Erstellen Sie gemäß der Konvention einen Ordner wie diesen unter opt und legen Sie die Konfigurationsdatei dort ab.
    $ sudo vi /opt/jupyterhub/etc/systemd/jupyterhub.service    #Erstellen Sie eine neue Datei mit dem Texteditor wie vi und kopieren Sie die folgende Schrift und fügen Sie sie ein.
    
    [Unit]
    Description=JupyterHub
    After=syslog.target network.target
    
    [Service]
    User=root 
    

Environment="PATH=/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin" ExecStart=/usr/local/bin/jupyterhub -f /etc/jupyterhub/jupyterhub_config.py

[Install]
WantedBy=multi-user.target
```
  1. Erstellen Sie einen symbolischen Link zum Systemordner.

    $ sudo ln -s /opt/jupyterhub/etc/systemd/jupyterhub.service /etc/systemd/system/jupyterhub.service
    
  2. Laden Sie die Konfigurationsdatei mit systmctl neu. Stellen Sie dann den Jupyterhub so ein, dass er automatisch startet, wenn der Raspberry Pi startet. Versuchen Sie außerdem, es vorerst manuell zu starten.

    $ sudo systemctl daemon-reload    # config.Datei neu laden
    $ sudo systemctl enable jupyterhub.service    #Jupyterhub beim Start.Service startet automatisch
    $ sudo systemctl start jupyterhub.service    # jupyterhub.Starten Sie den Service manuell
    $ sudo systemctl status jupyterhub.service    #jupyterhub.Überprüfen Sie den Servicestatus.
    
    # "Active: active (runnning)"Wird angezeigt, OK
    
    ● jupyterhub.service - JupyterHub
    

Loaded: loaded (/opt/jupyterhub/etc/systemd/jupyterhub.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2020-02-23 13:11:01 JST; 10s ago ... ```

Benutzer hinzufügen / entfernen

Jupyterlab/hub-extension Ab 2020.02.23 können Sie von `File-> Hub Control Panel `von Jupyterlab zum Hub-Einstellungsbildschirm wechseln. Benötigen Sie keine Jupyterlab / Hub-Erweiterung?

Nachtrag (2020.02.23) Offiziell scheint diese Erweiterung in Jupyterlab integriert worden zu sein. Daher muss es nicht installiert werden. GitHub: jupyterlab/jupyterlab

This adds a "Hub" menu to JupyterLab that allows a user to log out of JupyterHub or access their JupyterHub control panel.

Screen Shot 2020-02-23 at 13.33.15 2.png

Screen Shot 2020-02-23 at 13.41.20.png

Python Library Hinweis: Da ich eine `pip``` Gruppe bin, werde ich es nur beschreiben. `Conda``` Sekte, wenn Sie googeln können ... m (_ _) m

Trouble-Shooting

Beginnt nicht mit einem Proxy-Fehler

  1. Als ich versuchte, Jupyterhub zu starten, erhielt ich einen Proxy-bezogenen Fehlercode und konnte ihn nicht starten. Ich dachte, dass npm die Ursache ist, also tippte ich den Befehl npm ein, aber Birnenkies.

    $ sudo npm
    $                   #Es wird nichts angezeigt
    
  2. Es gibt keine Hilfe dafür. Löschen Sie daher die zugehörigen Elemente npn / node / nodejs und installieren Sie sie neu.

    $ sudo apt remove node npm nodejs
    $ sudo apt update     #Aktualisieren Sie die Liste vorerst
    $ sudo apt upgrade    #Vorerst die neueste Version
    $ sudo apt install node libnode64 npm
    
  3. Geben Sie den Befehl npm ein. Es ist gut, weil die Version normal angezeigt wird.

    $ sudo npm -v
    5.8.0
    
  4. Wenn Sie nur npm drücken, erhalten Sie eine Warnung, dass "npm- und Node.js-Versionen nicht übereinstimmen". Dies kann in Zukunft zu Problemen führen, aber jupyterhub funktioniert vorerst.

    $ sudo npm
    npm WARN npm npm does not support Node.js v10.15.2
    npm WARN npm You should probably upgrade to a newer version of node as we
    npm WARN npm can't make any promises that npm will work with this version.
    npm WARN npm Supported releases of Node.js are the latest release of 4, 6, 7, 8, 9.
    npm WARN npm You can find the latest version at https://nodejs.org/
    
  5. Starten Sie jupyterhub und prüfen Sie, ob es normal startet.

    $ sudo jupyterhub -f /etc/jupyterhub/jupyterhub_config.py
    ...
    [I 2020-02-23 11:10:12.687 JupyterHub app:2631] JupyterHub is now running at http://:8000
    

Screen Shot 2020-02-22 at 23.50.49.png

jupyterlab Extension, jupyterlab-drawio kann nicht installiert werden

Wahrscheinlich aufgrund des Problems, dass die oben genannten Versionen von Node.js und npm nicht übereinstimmen und nicht wiederhergestellt werden können? Derzeit keine Maßnahmen (Stand 23. Februar 2020).

Great Web references for JupyterLab/Python Tolle Seite für diejenigen, die neu in Jupyter Lab / Python sind!

  1. Jupyter Lab-Empfehlung
  2. Vorlesungsmaterial der Universität Kyoto: Programmierübung Python 2019

Reference

  1. JupyterHub Quickstart
  2. JupyterHub Official page

Recommended Posts

Erstellen Sie mit JupyterHub + JupyterLab auf Rapsberry Pi 3B + eine Python-Mehrbenutzerplattform!
Erstellen Sie ein Klassenzimmer auf Jupyterhub
Erstellen Sie ein Verzeichnis mit Python
getrpimodel: Erkennen Sie das Himbeer-Pi-Modell (A, B, B +, B2, B3 usw.) mit Python
Erstellen Sie eine Python-Umgebung auf dem Mac (2017/4)
Erstellen Sie eine virtuelle Umgebung mit Python!
Erstellen Sie mit Class einen Python-Funktionsdekorator
Erstellen Sie mit Python + PIL ein Dummy-Image.
Erstellen Sie eine Python-Umgebung auf Ihrem Mac
[Python] Erstellen Sie mit Anaconda eine virtuelle Umgebung
Erstellen wir mit Python eine kostenlose Gruppe
Ein Memo mit Python2.7 und Python3 in CentOS
Kartenmietinformationen auf einer Karte mit Python
Erstellen Sie mit Python 3.4 einen Worthäufigkeitszähler
Erstellen Sie eine Auto-Anzeige mit Himbeer-Pi
Arbeiten mit GPS in Python für Raspberry Pi 3
Erkennen Sie analoge Signale mit dem A / D-Wandler mithilfe von Python auf Raspberry Pi 3!
Vorgehensweise zum Erstellen einer virtuellen Python-Umgebung mit VS-Code unter Windows
Erstellen Sie eine Python3-Umgebung mit pyenv auf einem Mac und zeigen Sie NetworkX-Diagramme an
Erstellen Sie mit Minette für Python einen LINE BOT
Erstellen Sie eine Python-Umgebung mit ansible auf centos6
Erstellen Sie eine Seite, die unbegrenzt mit Python geladen wird
[Hinweis] Erstellen Sie mit Python eine einzeilige Zeitzonenklasse
Sie können auch mit Python problemlos eine GUI erstellen
Erstellen Sie mit Sublime Text3 eine Python3-Build-Umgebung
Erstellen Sie eine Farbleiste mit Python + Qt (PySide)
Folium: Visualisieren Sie Daten auf einer Karte mit Python
Schritte zum Erstellen eines Twitter-Bots mit Python
[Venv] Erstellen Sie eine virtuelle Python-Umgebung unter Ubuntu
Erstellen Sie mit Python einen Entscheidungsbaum von 0 (1. Übersicht)
Erstellen Sie eine neue Seite im Zusammenfluss mit Python
Erstellen Sie mit Python + Qt (PySide) ein farbspezifisches Widget.
Erstellen Sie mit Python eine Datei im Photoshop-Format (.psd)
Erstellen Sie einfach eine Python-Konsolenanwendung mit Click
Entschlüsseln Sie eine unter iOS mit Python verschlüsselte Zeichenfolge
Erstellen Sie eine Python-Ausführungsumgebung unter IBM i
[Docker] Erstellen Sie in 3 Minuten eine jupyterLab (Python) -Umgebung!
Stellen Sie mit Python auf Raspberry Pi eine Verbindung zu MySQL her
Visualisiere grib2 auf einer Karte mit Python (matplotlib)
Erstellen Sie eine Python-Entwicklungsumgebung auf Raspberry Pi
GPS-Tracking mit Raspeye 4B + BU-353S4 (Python)
[Hinweis] Verwenden Sie auf dem Raspberry Pi 4B ein kabelgebundenes LAN-Verbindungsgerät mit WiFi-Eth-Bridge
Bis Sie mit Python unter Windows 7 eine maschinelle Lernumgebung erstellen und ausführen
Führen Sie die LED-Matrix interaktiv mit Raspberry Pi 3B + auf Slackbot aus
Versuchen Sie, Python auf Raspberry Pi mit Visual Studio zu debuggen.
[Python] Generieren Sie ValueObject mit dem vollständigen Konstruktor mithilfe von Datenklassen
Warum nicht einfach mit Python eine stilvolle Tabelle erstellen?
Erstellen Sie eine komfortable Python 3 (Anaconda) -Entwicklungsumgebung mit Windows
Erstellen Sie eine Python-Entwicklungsumgebung mit Vagrant + Ansible + Fabric
Machen Sie mit Python einen Haltepunkt auf der c-Ebene
Ich habe eine Python3-Umgebung unter Ubuntu mit direnv erstellt.
Erstellen Sie in Docker eine Ebene für AWS Lambda Python
Ubuntu 20.04 auf Himbeer-Pi 4 mit OpenCV und mit Python verwenden
[Python] Erstellen Sie mit np.arange ein Datumsarray mit beliebigen Inkrementen
Hinweise zur Beschleunigung des Python-Codes mit Numba
[Python] So erstellen Sie mit Matplotlib ein zweidimensionales Histogramm
[Python] Erstellen Sie mit cx_Freeze eine Verteilungsdatei für das Tkinter-Programm
Erstellen Sie unter Windows eine anständige Shell- und Python-Umgebung