Créez une plateforme multi-utilisateurs Python avec JupyterHub + JupyterLab sur Rapsberry Pi 3B +!

introduction

La configuration d'une machine virtuelle est un problème. Mais je veux créer un environnement de développement Python ** bon marché ** pour plusieurs personnes. Qiita pour ceux qui sont inquiets. C'est un mémo pour moi.

Espérons que ** cela prendra environ une heure **.

Material --Raspberry Pi3 + (je voulais vraiment de la mémoire Raspberry Pi4: 4 Go)

Method

Environnement

  1. Tout d'abord, utilisez apt pour installer l'ensemble nécessaire sur jupyterhub.

    $ sudo apt update
    $ sudo apt upgrade
    $ sudo apt install python3 python3-pip npm nodejs libnode64
    
  2. Ensuite, utilisez pip3 et npm pour installer l'ensemble jupyterhub et la fonction proxy. # 1

    $ sudo pip3 install jupyterhub notebook wheel ipywidgets jupyterlab
    $ sudo npm install -g configurable-http-proxy
    
  3. Démarrez JupyterHub localement et vérifiez le fonctionnement. Tout d'abord, vérifiez auprès d'un utilisateur général.

    $ /usr/local/bin/jupyterhub
    

Ensuite, dans Chromium sur le bureau du Raspberry Pi, accédez à http: // localhost: 8000 / et confirmez que l'écran suivant apparaît. Le serveur JupyterHub peut se terminer par `` ctrl-c ''. Screen Shot 2020-02-22 at 23.50.49.png

Pour l'utiliser en tant qu'utilisateur multiple, vous devez le démarrer en tant qu'utilisateur root. Alors, démarrez-le en tant que root (sudo) et vérifiez à nouveau que l'écran de connexion ci-dessus est affiché.

```Bash
$ sudo jupyterhub
```
  1. Afin de configurer JupyterHub, créez la source du fichier de configuration dans "/ etc / jupyterhub".

    $ sudo mkdir /etc/jupyterhub
    $ cd /etc/jupyterhub
    $ sudo jupyterhub --generate-config    #Demandez à cette commande de créer un fichier de configuration par défaut
    

Puis "jupyterhub_config.py" est craché. Ouvrez-le en tant qu'utilisateur root et corrigez les problèmes suivants:

```Bash
$ sudo vi /etc/jupyterhub/jupyterhub_config.py    #vi ou ce que vous voulez avec votre éditeur de texte préféré
```
```/etc/jupyterhub/jupyterhub_config.py
#Je veux utiliser jupyter lab par défaut, alors modifiez ce qui suit
c.Spawner.default_url = '/lab' 

#Ajouter des utilisateurs accessibles à la liste blanche
c.Authenticator.whitelist = {'User1, User2'}

#Ajouter un utilisateur administrateur(Autorisé à déconnecter les utilisateurs généraux)
c.Authenticator.admin_users = {'User0'}

#Défini pour faire référence au dossier du bloc-notes de chaque répertoire utilisateur lors de l'accès
#Ce n'est pas un élément de réglage obligatoire, mais un endroit où les préférences sont divisées.
c.Spawner.notebook_dir = '~/notebook'
```

Si "c. Spawner.notebook_dir" est défini, "le répertoire de notebook de chaque utilisateur (~ / notebook) doit être créé à l'avance. (Site de référence: https://qiita.com/atsushi_wagatsuma/items/89b714328663992b54f4)

Pour une gestion détaillée des utilisateurs, reportez-vous à cet article "Ajout et suppression d'utilisateurs".

  1. Enfin, démarrez jupyterhub et vérifiez le fonctionnement.

    $ 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    #Si cet affichage apparaît, le démarrage est terminé!
    
  2. Vérifiez si l'utilisateur Admin et l'utilisateur général peuvent se connecter à partir de l'hôte local ou d'un autre ordinateur du réseau. Si vous écrivez un programme Python simple et que cela fonctionne, c'est OK! 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. Cela a fonctionné pour le moment, mais je dois taper $ sudo jupyterhub -f / etc / jupyterhub / jupyterhub_config.py '' à chaque fois que je le lance. Très ennuyant. Par conséquent, il est géré de manière centralisée par le service Systemd et configuré pour démarrer automatiquement au démarrage de Raspberry pi.

    $ sudo mkdir -p /opt/jupyterhub/etc/systemd    #Selon la convention, créez un dossier comme celui-ci sous opt et placez-y le fichier de configuration.
    $ sudo vi /opt/jupyterhub/etc/systemd/jupyterhub.service    #Créez un nouveau fichier avec l'éditeur de texte tel que vi et copiez et collez l'écriture suivante.
    
    [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. Créez un lien symbolique vers le dossier de chargement systemd.

    $ sudo ln -s /opt/jupyterhub/etc/systemd/jupyterhub.service /etc/systemd/system/jupyterhub.service
    
  2. Rechargez le fichier de configuration avec systmctl. Ensuite, configurez le jupyterhub pour qu'il démarre automatiquement lorsque le Raspberry Pi démarre. De plus, essayez de le démarrer manuellement pour le moment.

    $ sudo systemctl daemon-reload    # config.Recharger le fichier
    $ sudo systemctl enable jupyterhub.service    #Jupyterhub au démarrage.le service démarre automatiquement
    $ sudo systemctl start jupyterhub.service    # jupyterhub.Démarrer manuellement le service
    $ sudo systemctl status jupyterhub.service    #jupyterhub.Vérifiez l'état du service.
    
    # "Active: active (runnning)"Est affiché, 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 ... ```

Ajouter / supprimer des utilisateurs

--Par défaut, vous pouvez sélectionner un utilisateur qui peut accéder à JupyterHub à partir des utilisateurs Unix du serveur sur lequel JupyterHub est installé.

Jupyterlab/hub-extension À partir du 23.02.2020, vous pouvez accéder à l'écran de configuration du concentrateur à partir de Fichier-> Panneau de configuration du concentrateur` de Jupyterlab. Vous n'avez pas besoin de Jupyterlab / hub-extension?

Post-scriptum (2020.02.23) Officiellement, cette extension semble avoir été intégrée à Jupyterlab. Par conséquent, il n'est pas nécessaire de l'installer. 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 Remarque: puisque je suis un groupe pip '', je ne le décrirai que. Si vous êtes membre du groupe Conda``, veuillez google ... m (_ _) m

Trouble-Shooting

Ne démarre pas avec une erreur liée au proxy

  1. Lorsque j'ai essayé de démarrer Jupyterhub, j'ai reçu un code d'erreur lié au proxy et je n'ai pas pu le démarrer. Je pensais que npm était la cause, alors j'ai tapé la commande npm, mais poirier.

    $ sudo npm
    $                   #Rien ne s'affiche
    
  2. Il n'y a aucune aide pour cela, supprimez donc les éléments liés à npn / node / nodejs et réinstallez.

    $ sudo apt remove node npm nodejs
    $ sudo apt update     #Mettre à jour la liste pour le moment
    $ sudo apt upgrade    #Pour le moment, la dernière version
    $ sudo apt install node libnode64 npm
    
  3. Essayez de taper la commande npm. C'est bien car la version s'affiche normalement.

    $ sudo npm -v
    5.8.0
    
  4. Si vous appuyez uniquement sur npm, vous recevrez un avertissement indiquant que "les versions de npm et de Node.js ne correspondent pas". Cela peut poser des problèmes à l'avenir, mais jupyterhub fonctionne pour le moment.

    $ 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. Démarrez jupyterhub et vérifiez s'il démarre normalement.

    $ 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

Extension jupyterlab, jupyterlab-drawio ne peut pas être installé

Probablement en raison du problème que les versions Node.js et npm ci-dessus ne correspondent pas et ne peuvent pas être reconstruites? Actuellement aucune action (au 23 février 2020).

Great Web references for JupyterLab/Python Excellent site pour ceux qui découvrent Jupyter Lab / Python!

  1. Recommandation Jupyter Lab
  2. Matériel de conférence de l'Université de Kyoto: Exercice de programmation Python 2019

Reference

  1. JupyterHub Quickstart
  2. JupyterHub Official page

Recommended Posts

Créez une plateforme multi-utilisateurs Python avec JupyterHub + JupyterLab sur Rapsberry Pi 3B +!
Créer une salle de classe sur Jupyterhub
Créer un répertoire avec python
getrpimodel: Reconnaître le modèle Raspberry Pi (A, B, B +, B2, B3, etc.) avec python
Créer un environnement Python sur Mac (2017/4)
Créez un environnement virtuel avec Python!
Créer un décorateur de fonction Python avec Class
Créez une image factice avec Python + PIL.
Créez un environnement python sur votre Mac
[Python] Créez un environnement virtuel avec Anaconda
Créons un groupe gratuit avec Python
Un mémo contenant Python2.7 et Python3 dans CentOS
Carte des informations de location sur une carte avec python
Créer un compteur de fréquence de mots avec Python 3.4
Créez un compteur de voiture avec Raspberry Pi
Travailler avec le GPS en Python pour Raspberry Pi 3
Détectez les signaux analogiques avec un convertisseur A / N en utilisant python sur Raspberry Pi 3!
Procédure de création d'un environnement virtuel Python avec VS Code sous Windows
Créez un environnement Python 3 avec pyenv sur Mac et affichez des graphiques Network X
Créer un LINE BOT avec Minette pour Python
Créez un environnement python avec ansible sur centos6
Créer une page qui se charge indéfiniment avec python
[Note] Créez une classe de fuseau horaire sur une ligne avec python
Vous pouvez facilement créer une interface graphique même avec Python
Créer un environnement de construction python3 avec Sublime Text3
Créer une barre de couleurs avec Python + Qt (PySide)
Folium: Visualisez les données sur une carte avec Python
Étapes pour créer un bot Twitter avec Python
[Venv] Créer un environnement virtuel python sur Ubuntu
Créer un arbre de décision à partir de 0 avec Python (1. Présentation)
Créer une nouvelle page en confluence avec Python
Créer un widget avec une couleur spécifiée avec Python + Qt (PySide)
Créer un fichier au format Photoshop (.psd) avec python
Facile à créer une application console Python avec Click
Décrypter une chaîne chiffrée sur iOS avec Python
Créer un environnement d'exécution Python sur IBM i
[Docker] Créez un environnement jupyterLab (python) en 3 minutes!
Connectez-vous à MySQL avec Python sur Raspberry Pi
Visualiser grib2 sur une carte avec python (matplotlib)
Construire un environnement de développement Python sur Raspberry Pi
Suivi GPS avec Raspeye 4B + BU-353S4 (Python)
[Note] Utilisez un périphérique de connexion LAN filaire avec pont WiFi-Eth sur Raspberry Pi 4B
Jusqu'à ce que vous créiez un environnement d'apprentissage automatique avec Python sur Windows 7 et que vous l'exécutiez
Exécutez la matrice LED de manière interactive avec Raspberry Pi 3B + sur Slackbot
Essayez de déboguer Python sur Raspberry Pi avec Visual Studio.
[Python] Générer ValueObject avec un constructeur complet à l'aide de classes de données
Pourquoi ne pas créer facilement une table élégante avec Python?
Créez un environnement de développement Python 3 (Anaconda) confortable avec Windows
Créez un environnement de développement python avec vagrant + ansible + fabric
Faire un point d'arrêt sur la couche c avec python
J'ai créé un environnement Python3 sur Ubuntu avec direnv.
Créer une couche pour AWS Lambda Python dans Docker
Ubuntu 20.04 sur raspberry pi 4 avec OpenCV et utilisation avec python
[python] Créez un tableau de dates avec des incréments arbitraires avec np.arange
Remarques sur l'accélération du code Python avec Numba
[Python] Comment créer un histogramme bidimensionnel avec Matplotlib
[Python] Créez un fichier de distribution pour le programme Tkinter avec cx_Freeze
Créez un environnement shell et python décent sur Windows