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.
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.
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
# 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.
J'ai pu y accéder.
Ensuite, essayez de vous connecter en tant qu'utilisateur jupyter.
J'ai pu me connecter.
Vérifiez si Qiskit peut être exécuté.
J'ai pu l'exécuter.
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.
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)
Recommended Posts