Préparer l'environnement Python3 avec CentOS7

introduction

Notez la procédure de construction de l'environnement Python sur Cent OS. Il ne s'agit que d'un mémo sur la procédure de construction, donc lors de la construction dans l'environnement de production, ces informations ne sont pas utilisées pour créer et exploiter l'environnement de production. L'environnement est le suivant et il est construit avec une machine virtuelle sur VMware.

Ce que je veux faire est le suivant.

--Installation d'Anaconda --Installation de Qiskit --Construction de JupyterHub --Service JupyterHub

À partir de la procédure suivante, on suppose que le système d'exploitation est déjà installé. Par convention, \ # est l'utilisateur root, $ est l'utilisateur général et >>> est l'invite indiquant que python est en cours d'exécution.

Tout d'abord, mettez-le à jour.

Commande d'exécution


# yum update 

Ensuite, créez un utilisateur pour jupyter.

Créer un utilisateur


# useradd jupyter
# passwd jupyter
Modifiez le mot de passe de l'utilisateur jupyter.
nouveau mot de passe:
Veuillez saisir à nouveau votre nouveau mot de passe:
passwd:Tous les jetons d'authentification ont été renouvelés avec succès.

Installation d'Anaconda

Tout d'abord, téléchargez le programme d'installation de la version que vous souhaitez installer.

Télécharger le shell d'installation d'Anaconda


# wget https://repo.continuum.io/archive/Anaconda3-5.3.1-Linux-x86_64.sh

Ensuite, exécutez le programme d'installation téléchargé. Au moment de la configuration initiale, il vous sera demandé le répertoire d'installation, mais définissez / opt / anaconda3 / au lieu du paramètre initial. Autre que cela, continuez par oui.

Exécutez le shell d'installation


# bash Anaconda3-5.3.1-Linux-x86_64.sh
...
Anaconda3 will now be installed into this location:
/root/anaconda3

  - Press ENTER to confirm the location
  - Press CTRL-C to abort the installation
  - Or specify a different location below

[/root/anaconda3] >>> /opt/anaconda3/  <-Changer le répertoire d'installation

Si vous ne rechargez pas le shell une fois, le chemin peut ne pas être chargé et la commande conda peut ne pas être disponible, alors rechargez-le.

Recharger le profil de la coque


# source ~/.bashrc

Après cela, vérifiez la version à titre d'essai.

Vérification de la version d'Anaconda


# conda --version
conda 4.8.4

Anaconda est installé et les informations de version sont affichées.

Installez Qiskit

Maintenant que l'installation d'Anaconda est terminée, installez Qiskit ensuite.

Tout d'abord, installez gcc.

installation de gcc


# yum install gcc

Ensuite, démarrez l'environnement virtuel d'Anaconda et installez-y qiskit.

Installez Qiskit


# conda create -n myenv python=3
# source activate myenv
(myenv) # pip install qiskit

Vérifiez s'il est installé.

Confirmation de l'installation de Qiskit


(myenv) # conda list | grep qiskit
qiskit                    0.21.0                   pypi_0    pypi
qiskit-aer                0.6.1                    pypi_0    pypi
qiskit-aqua               0.7.5                    pypi_0    pypi
qiskit-ibmq-provider      0.9.0                    pypi_0    pypi
qiskit-ignis              0.4.0                    pypi_0    pypi
qiskit-terra              0.15.2                   pypi_0    pypi

Ensuite, vérifiez la version installée de Qiskit.

exécution python


(myenv) # python
Python 3.8.5 (default, Sep  4 2020, 07:30:14) 
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.

Importez Qiskit et exécutez la commande de confirmation de version.

Vérifiez la version de Qiskit


>>> import qiskit
>>> qiskit.__qiskit_version__
{'qiskit-terra': '0.15.2', 'qiskit-aer': '0.6.1', 'qiskit-ignis': '0.4.0', 'qiskit-ibmq-provider': '0.9.0', 'qiskit-aqua': '0.7.5', 'qiskit': '0.21.0'}

Lorsque la confirmation est terminée, appuyez sur Ctrl-D pour quitter python.

Installation de JupyterHub

Installation de JupyterHub


# conda install -c conda-forge jupyterhub
# conda install notebook

Une fois l'installation terminée, créez un fichier de configuration.

Générer un fichier de configuration


(myenv) # cd /opt/
(myenv) # jupyterhub --generate-config
Writing default config to: jupyterhub_config.py
# ls -l
44 au total
drwxr-xr-x.26 racine racine 4096 18 septembre 18:49 anaconda3
-rw-r--r--.1 racine racine 40275 18 septembre 19:00 jupyterhub_config.py
drwxr-xr-x.2 racine racine 6 31 octobre 2018 rh

Une fois le fichier de configuration créé, modifiez-le.

Modifier le fichier de configuration


(myenv) # vim jupyterhub_config.py 

Ajoutez le contenu suivant. Les deux lignes du bas sont les paramètres requis pour la conversion de service.

/opt/jupyterhub_config.py


c.Spawner.notebook_dir = '~/notebook'

c.Authenticator.whitelist = {'jupyter'}

c.Authenticator.admin_users = {'root'}

c.ConfigurableHTTPProxy.command = '/opt/anaconda3/envs/myenv/bin/configurable-http-proxy'

c.Spawner.cmd = ['/opt/anaconda3/envs/myenv/bin/jupyterhub-singleuser']

Ensuite, créez un répertoire pour les utilisateurs qui utilisent JupyterHub.

Créer un répertoire pour les utilisateurs


# mkdir -p /home/jupyter/notebook
# chown jupyter:jupyter /home/jupyter/notebook

Démarrez JupyterHub.

Lancez Jupyter Hub


# jupyterhub &

JupyterHub fonctionne sur le port 8000, autorisez donc le port 8000.

Paramètres d'autorisation du pare-feu


# firewall-cmd --add-port=8000/tcp --permanent 
success
# firewall-cmd --reload 
success

Essayez d'accéder à http://192.168.249.130:8000/ à partir de la machine hôte.

jupyterhub.png

J'ai pu y accéder.

Ensuite, essayez de vous connecter en tant qu'utilisateur jupyter.

jupyterhub_loggedin.png

J'ai pu me connecter.

Vérifiez si Qiskit peut être exécuté.

jupyterhub_qiskit.png

J'ai pu l'exécuter.

Faire de JupyterHub un service

Enfin, faites-en un service.

Effectuez divers réglages.

Paramètres du service jupyterhub


# conda install --quiet --yes notebook jupyterhub nodejs configurable-http-proxy
# npm install -g configurable-http-proxy
# ln -s /usr/bin/nodejs /usr/bin/node
# npm -v
# npm cache clean -f
# npm install -g n
# n stable

Vérifiez le chemin de la commande jupyterhub pour créer le fichier de définition d'enregistrement de service.

Vérifiez le chemin de jupyterhub


(myenv) # which jupyterhub
/opt/anaconda3/envs/myenv/bin/jupyterhub

Une fois les informations obtenues, créez un fichier de définition.

Créer un fichier de définition


(myenv) # vim /etc/systemd/system/jupyterhub.service

Ajoutez le contenu suivant.

/etc/systemd/system/jupyterhub.service


[Unit]
Description = JupyterHub

[Service]
Type=simple
PIDFile=/var/run/jupyterhub.pid
ExecStart=/opt/anaconda3/envs/myenv/bin/jupyterhub
WorkingDirectory=/opt/
Restart=always

[Install]
WantedBy = multi-user.target

Lorsque le fichier de définition est terminé, commencez la lecture.

Lire le fichier de définition


# systemctl daemon-reload

Après avoir lu, démarrez le service.

Début du service


# systemctl start jupyterhub.service

Vérifiez l'état du service. Il y a eu des erreurs, mais j'ai pu démarrer et me connecter. Qiskit fonctionne également très bien.

Vérification de l'état du service


(myenv) # systemctl status jupyterhub.service
● jupyterhub.service - JupyterHub
   Loaded: loaded (/etc/systemd/system/jupyterhub.service; enabled; vendor preset: disabled)
   Active: active (running)depuis Kim 2020-09-18 21:27:20 JST; 7min ago
 Main PID: 3291 (python)
    Tasks: 7
   CGroup: /system.slice/jupyterhub.service
           └─3307 node /opt/anaconda3/envs/myenv/bin/configurable-http-proxy --ip --port 8000 --api-ip 127.0.0.1 --api-port 8001 --error-target http://...
           ‣ 3291 /opt/anaconda3/envs/myenv/bin/python /opt/anaconda3/envs/myenv/bin/jupyterhub

18 septembre 21:27:21 localhost.localdomain jupyterhub[3291]: 21:27:21.575 [ConfigProxy] info: 201 POST /api/routes/
18 septembre 21:27:21 localhost.localdomain jupyterhub[3291]: [I 2020-09-18 21:27:21.577 JupyterHub app:2422] JupyterHub is now running at http://:8000
18 septembre 21:27:29 localhost.localdomain jupyterhub[3291]: [I 2020-09-18 21:27:29.928 JupyterHub log:174] 200 GET /hub/spawn-pending/jupyter (jup...29.88ms
18 septembre 21:27:33 localhost.localdomain jupyterhub[3291]: [I 2020-09-18 21:27:33.252 JupyterHub login:43] User logged out: jupyter
18 septembre 21:27:33 localhost.localdomain jupyterhub[3291]: [I 2020-09-18 21:27:33.262 JupyterHub log:174] 302 GET /hub/logout -> /hub/login (jupy...16.03ms
18 septembre 21:27:33 localhost.localdomain jupyterhub[3291]: [I 2020-09-18 21:27:33.276 JupyterHub log:174] 200 GET /hub/login (@::ffff:192.168.249.1) 8.34ms
18 septembre 21:27:40 localhost.localdomain jupyterhub[3291]: [I 2020-09-18 21:27:40.212 JupyterHub base:663] User logged in: jupyter
18 septembre 21:27:40 localhost.localdomain jupyterhub[3291]: [I 2020-09-18 21:27:40.213 JupyterHub log:174] 302 POST /hub/login?next= -> /hub/spawn...12.63ms
18 septembre 21:27:40 localhost.localdomain python[3291]: pam_loginuid(login:session): Error writing /proc/self/loginuid: Operation not permitted
18 septembre 21:27:40 localhost.localdomain python[3291]: pam_loginuid(login:session): set_loginuid failed
Hint: Some lines were ellipsized, use -l to show in full.

Enfin, activez l'automatisation des services. Désormais, même si le système d'exploitation s'arrête, le service démarre dès qu'il démarre et vous pouvez accéder à Jupyter à partir de votre navigateur Web à tout moment comme auparavant.

Activer et vérifier l'exécution automatique


# systemctl enable jupyterhub
# systemctl is-enabled jupyterhub
enabled

En fait, après avoir redémarré le système d'exploitation invité, j'ai essayé d'y accéder à partir du navigateur Web de la machine hôte et j'ai pu y accéder et me connecter avec succès.

en conclusion

Je suis satisfait à 90% du fait que j'ai pu créer un environnement dans lequel tous les utilisateurs peuvent utiliser Qiskit, ce que je voulais faire cette fois, et les faire utiliser via une authentification à partir d'un navigateur Web. Cependant, il y a des erreurs et des lacunes dans la construction de l'environnement, je voudrais donc travailler sur ces domaines à l'avenir.

Même si je n'étais pas motivé, j'ai pu tout mettre en place en une demi-journée, donc c'était juste pour m'échauffer après-demain. Bien que le service de Jupyter Notebook se soit bien déroulé, le service de JupyterHub a causé des erreurs les unes après les autres, et il était difficile d'en résoudre une, alors j'ai senti que je ne voudrais pas l'implémenter sans rien à nouveau. (Il y a cet article pour ça)

Tâches futures

[Référence] Erreurs qui se sont produites

Références

Recommended Posts

Préparer l'environnement Python3 avec CentOS7
Préparez l'environnement CentOS 8 avec Sakura VPS
Préparer l'environnement de développement Java avec Atom
[Vagrant] Préparez l'environnement de développement LAMP avec Vagrant (centos + apache + MySQL + PHP)
Créer un environnement où pip3 peut être utilisé avec CentOS7 + Python3
Préparer l'environnement de développement Java avec VS Code
Préparer l'environnement de format pour "Rails" (VScode)
[Memo] Créez facilement un environnement CentOS 8 avec Docker
Préparer l'environnement de développement de langage JVM avec WSL
Préparer un environnement de scraping avec Docker et Java
Utilisation de CentOS avec LXD
Installez Python 3 sur CentOS 7
Construisez Growai avec Centos7
[Note] Créez un environnement Python3 avec Docker dans EC2
Préparer l'environnement pour java11 et javaFx avec Ubuntu 18.4
Réseau installer CentOS 8 avec Kickstart.
Créez un VPN softether avec Centos7.
[Docker] Construction de l'environnement Rails 5.2 avec docker
Créer un environnement Docker avec WSL
Créez un environnement virtuel CentOS 8 sur votre Mac à l'aide de VirtualBox
Vérification de l'environnement passionnant avec mkmf
Construction d'environnement hors ligne Édition CentOS
Créez un environnement Vue3 avec Docker!
Créer un environnement Node.js avec Docker Compose
Créer un environnement local Couchbase avec Docker
Construction d'environnement avec Docker pour les débutants
Créer un environnement de vérification SolrCloud avec Docker
WordPress avec Docker Compose sur CentOS 8
Créer un environnement de développement Jooby avec Eclipse
[Construction de l'environnement avec Docker] Rails 6 et MySQL 8
Créez un environnement Docker + Laravel avec Laradock
Commutateur avec la série CentOS7 + JDK-9.0.1 + JDK1.8.0 + alternatives
Créez un environnement de développement sur AWS EC2 avec CentOS7 + Nginx + pm2 + Nuxt.js