[PYTHON] Faire de Jupyter Notebook un service sur CentOS

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.

--Installez Python 3 --Installation de Qiskit --Installation d'Anaconda --Installation de Jupyter --Service Jupyter

À partir de la procédure suivante, il est supposé 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. Comme c'est la première fois à effectuer, le détour et la mise à couvert sont excellents.

Tout d'abord, mettez-le à jour.

Mise à jour du système d'exploitation


# yum update 

Installer Python 3

Je veux utiliser Python 3 au lieu de Python 2 qui peut être utilisé en standard, alors installez-le.

Commande d'exécution


# yum update python3

Après l'installation, les informations de version, y compris la confirmation de l'installation, s'affichent. Vous pouvez voir que Python 3.6.8 est installé.

Vérification de la version Python


# python3 --version
Python 3.6.8

De plus, puisque nous voulons utiliser python3 introduit cette fois avec la commande python, définissez-le.

Modification du profil


# vim ~/.bashrc

Ajoutez le contenu suivant à la fin de .bashrc. Après l'ajout, déconnectez-vous une fois et reconnectez-vous.

/root/.bashrc


alias python="python3" 
alias pip="pip3"

En guise de test, vérifiez la version avec la commande python. Vous pouvez voir que python3 est spécifié.

Vérification de la version Python


# python --version
Python 3.6.8

Installation d'Anaconda

Puisque git est requis pour installer pyenv, installez d'abord git.

installation de git


# yum install git

Installez pyenv.

Installez pyenv


# git clone https://github.com/yyuu/pyenv.git ~/.pyenv
# pyenv install -l | grep anaconda
  anaconda-1.4.0
  anaconda-1.5.0
  anaconda-1.5.1
  anaconda-1.6.0
  anaconda-1.6.1
  anaconda-1.7.0
  anaconda-1.8.0
  anaconda-1.9.0
  anaconda-1.9.1
  anaconda-1.9.2
  anaconda-2.0.0
  anaconda-2.0.1
  anaconda-2.1.0
  anaconda-2.2.0
  anaconda-2.3.0
  anaconda-2.4.0
  anaconda-4.0.0
  anaconda2-2.4.0
  anaconda2-2.4.1
  anaconda2-2.5.0
  anaconda2-4.0.0
  anaconda2-4.1.0
  anaconda2-4.1.1
  anaconda2-4.2.0
  anaconda2-4.3.0
  anaconda2-4.3.1
  anaconda2-4.4.0
  anaconda2-5.0.0
  anaconda2-5.0.1
  anaconda2-5.1.0
  anaconda2-5.2.0
  anaconda2-5.3.0
  anaconda2-5.3.1
  anaconda2-2018.12
  anaconda2-2019.03
  anaconda2-2019.07
  anaconda3-2.0.0
  anaconda3-2.0.1
  anaconda3-2.1.0
  anaconda3-2.2.0
  anaconda3-2.3.0
  anaconda3-2.4.0
  anaconda3-2.4.1
  anaconda3-2.5.0
  anaconda3-4.0.0
  anaconda3-4.1.0
  anaconda3-4.1.1
  anaconda3-4.2.0
  anaconda3-4.3.0
  anaconda3-4.3.1
  anaconda3-4.4.0
  anaconda3-5.0.0
  anaconda3-5.0.1
  anaconda3-5.1.0
  anaconda3-5.2.0
  anaconda3-5.3.0
  anaconda3-5.3.1
  anaconda3-2018.12
  anaconda3-2019.03
  anaconda3-2019.07
  anaconda3-2019.10
  anaconda3-2020.02

Installez le dernier anaconda.

Installation d'anaconda


# pyenv install anaconda3-5.3.1

Faites les réglages.

paramètres anaconda


# pyenv rehash
# pyenv global anaconda3-5.3.1
# echo 'export PATH="$PYENV_ROOT/versions/anaconda3-5.3.1/bin/:$PATH"' >> ~/.bashrc
# source ~/.bashrc
# conda update conda

Vérifiez la version.

Vérifiez la version de conda


# conda --version
conda 4.8.4

Installez Qiskit

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

Installez Qiskit


# pip install qiskit

Vérifiez s'il est installé.

Confirmation de l'installation de Qiskit


# 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


# python

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.

Installer Jupyter

Ensuite, essayez d'installer jupyter. Lorsque j'ai essayé de terminer la commande, il semble que jupyter était déjà installé, donc lorsque je l'ai exécuté, l'erreur suivante a été générée.

erreur d'exécution jupyter


# jupyter --version
Traceback (most recent call last):
  File "/root/.pyenv/versions/anaconda3-5.3.1/bin/jupyter", line 7, in <module>
    from jupyter_core.command import main
ModuleNotFoundError: No module named 'jupyter_core'

Essayez d'installer jupyter à partir de conda une fois.

installation de jupyter


# conda install jupyter

Ensuite, l'erreur suivante est générée et l'installation n'est pas terminée.

Erreur lors de l'installation de jupyter


failed with initial frozen solve. Retrying with flexible solve.
Solving environment: -résiliation forcée

J'ai essayé google et exécuté la commande suivante.

mise à jour de conda


# conda update --all

J'ai eu une erreur avec la commande ci-dessus. Ensuite, j'ai exécuté la commande suivante à titre d'essai.

Installation d'OpenCV


# conda install -c menpo opencv

Cela a bien fonctionné. Essayez à nouveau d'installer jupyter.

Re-défi l'installation de Jupyter


# conda install jupyter
Collecting package metadata (repodata.json): done
Solving environment: done

# All requested packages already installed.

On dirait qu'il est correctement installé. Vérifiez les informations de version.

Vérifiez la version de jupyter


# jupyter --version
4.4.0

Il est correctement installé et fonctionne.

Configurez Jupyter Notebook.

Se préparer à démarrer Jupyter


# jupyter --path
config:
    /root/.jupyter
    /root/.pyenv/versions/anaconda3-5.3.1/etc/jupyter
    /usr/local/etc/jupyter
    /etc/jupyter
data:
    /root/.local/share/jupyter
    /root/.pyenv/versions/anaconda3-5.3.1/share/jupyter
    /usr/local/share/jupyter
    /usr/share/jupyter
runtime:
    /run/user/1000/jupyter
# mkdir ~/.jupyter
# touch ~/.jupyter/jupyter_notebook_config.py
# mkdir ~/jupyter_files
# touch ~/jupyter_files/test.py
# ipython

Définition du mot de passe de connexion


Python 3.7.0 (default, Oct  9 2018, 10:31:47) 
Type 'copyright', 'credits' or 'license' for more information
IPython 6.5.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]: from notebook.auth import passwd

In [2]: passwd()
Enter password: 
Verify password: 
Out[2]: 'sha1:da72b0981831:41b14f79bbfeda08322cfdb3a056a58fc70c65ea'

In [3]: exit

Notez la valeur de hachage du mot de passe Out [2] dans un éditeur de texte, etc., car elle sera utilisée pour éditer le fichier de configuration suivant.

Modifier le fichier de configuration


vim ~/.jupyter/jupyter_notebook_config.py

Ajoutez ce qui suit au fichier de configuration. Pour la valeur de hachage du mot de passe, copiez et collez la valeur de sortie dans le paramètre de mot de passe de connexion.

py:/root/.jupyter/jupyter_notebook_config.py


c = get_config()

c.NotebookApp.ip = '*'
c.NotebookApp.open_browser = False
c.NotebookApp.port = 8888
c.NotebookApp.password = u'sha1:da72b0981831:41b14f79bbfeda08322cfdb3a056a58fc70c65ea'
c.NotebookApp.notebook_dir = '/root/jupyter_files/'

Démarrez Jupyter Notebook. Cet environnement est un environnement d'essai et est défini par l'utilisateur root, alors exécutez la commande suivante.

Lancer le notebook


# jupyter notebook --allow-root

Après cela, essayez d'accéder à http: // localhost: 8888 / à l'aide d'un navigateur Web.

JN.png

Maintenant que vous avez accès, essayez de vous connecter avec le mot de passe de connexion que vous avez défini précédemment.

JNlogined.png

J'ai pu me connecter avec succès. Vous pouvez également consulter le fichier de confirmation test.py créé précédemment.

Ensuite, rendez-le accessible à l'aide du navigateur Web de la machine hôte. Autorisez le port 8888 sur le pare-feu.

Paramètres d'autorisation du pare-feu


# firewall-cmd --add-port=8888/tcp --zone=public --permanent
success
# firewall-cmd --reload
success

Essayez d'accéder à http://192.168.249.129:8888/ à partir du navigateur Web de la machine hôte.

JN_host.png

J'ai pu y accéder en toute sécurité.

Faire de Jupyter un service

Définissez Jupyter pour qu'il puisse être contrôlé par systemd. Tout d'abord, vérifiez le chemin de jupyter.

Vérifiez le chemin de jupyter


# which jupyter
/root/.pyenv/versions/anaconda3-5.3.1/bin/jupyter

Créer un fichier de définition


# vim /etc/systemd/system/notebook.service

* Le contenu suivant ne peut pas être exécuté avec succès </ b>

/etc/systemd/system/notebook.service


[Unit]
Description = Jupyter Notebook

[Service]
Type=simple
PIDFile=/var/run/jupyter-notebook.pid
ExecStart=/root/.pyenv/versions/anaconda3-5.3.1/bin/jupyter notebook
WorkingDirectory=/root/
User=root
Group=root
Restart=always

[Install]
WantedBy = multi-user.target

Recharger le fichier de paramètres


# systemctl daemon-reload

Début du service


# systemctl start notebook

Lorsque j'ai vérifié l'état du service, il a échoué.

Vérification de l'état du service(Échec)


# systemctl status notebook
● notebook.service - Jupyter Notebook
   Loaded: loaded (/etc/systemd/system/notebook.service; disabled; vendor preset: disabled)
   Active: failed (Result: start-limit)depuis Kim 2020-09-18 15:21:44 JST; 1min 8s ago
  Process: 18766 ExecStart=/root/.pyenv/versions/anaconda3-5.3.1/bin/jupyter notebook (code=exited, status=1/FAILURE)
 Main PID: 18766 (code=exited, status=1/FAILURE)

18 septembre 15:21:44 localhost.localdomain systemd[1]: notebook.service: main process exited, code=exited, status=1/FAILURE
18 septembre 15:21:44 localhost.localdomain systemd[1]: Unit notebook.service entered failed state.
18 septembre 15:21:44 localhost.localdomain systemd[1]: notebook.service failed.
18 septembre 15:21:44 localhost.localdomain systemd[1]: notebook.service holdoff time over, scheduling restart.
18 septembre 15:21:44 localhost.localdomain systemd[1]: Stopped Jupyter Notebook.
18 septembre 15:21:44 localhost.localdomain systemd[1]: start request repeated too quickly for notebook.service
18 septembre 15:21:44 localhost.localdomain systemd[1]: Failed to start Jupyter Notebook.
18 septembre 15:21:44 localhost.localdomain systemd[1]: Unit notebook.service entered failed state.
18 septembre 15:21:44 localhost.localdomain systemd[1]: notebook.service failed.

Quand j'ai pensé à la cause, je me suis souvenu que --allow-root avait été donné au premier démarrage, mais j'ai oublié de le donner dans ce fichier de paramètres. Modifiez à nouveau le fichier de paramètres comme suit.

/etc/systemd/system/notebook.service


[Unit]
Description = Jupyter Notebook

[Service]
Type=simple
PIDFile=/var/run/jupyter-notebook.pid
ExecStart=/root/.pyenv/versions/anaconda3-5.3.1/bin/jupyter notebook --allow-root
WorkingDirectory=/root/
User=root
Group=root
Restart=always

[Install]
WantedBy = multi-user.target

Relisez le fichier de paramètres et démarrez le service.

Rechargement du fichier de paramètres et démarrage du service


# systemctl daemon-reload
# systemctl start notebook

Vérifiez l'état du service.

Vérification de l'état du service(Succès)


# systemctl status notebook
● notebook.service - Jupyter Notebook
   Loaded: loaded (/etc/systemd/system/notebook.service; enabled; vendor preset: disabled)
   Active: active (running)depuis Kim 2020-09-18 15:29:38 JST; 3min 8s ago
 Main PID: 19068 (jupyter-noteboo)
    Tasks: 1
   CGroup: /system.slice/notebook.service
           └─19068 /root/.pyenv/versions/anaconda3-5.3.1/bin/python /root/.pyenv/versions/anaconda3-5.3.1/bin/jupyter-notebook --...

18 septembre 15:29:38 localhost.localdomain systemd[1]: Started Jupyter Notebook.
18 septembre 15:29:39 localhost.localdomain jupyter[19068]: [W 15:29:39.391 NotebookApp] WARNING: The notebook server is listeni...nded.
18 septembre 15:29:39 localhost.localdomain jupyter[19068]: [I 15:29:39.393 NotebookApp] The port 8888 is already in use, trying...port.
18 septembre 15:29:39 localhost.localdomain jupyter[19068]: [I 15:29:39.423 NotebookApp] JupyterLab extension loaded from /root/...erlab
18 septembre 15:29:39 localhost.localdomain jupyter[19068]: [I 15:29:39.423 NotebookApp] JupyterLab application directory is /ro...r/lab
18 septembre 15:29:39 localhost.localdomain jupyter[19068]: [I 15:29:39.426 NotebookApp] Serving notebooks from local directory:...files
18 septembre 15:29:39 localhost.localdomain jupyter[19068]: [I 15:29:39.426 NotebookApp] The Jupyter Notebook is running at:
18 septembre 15:29:39 localhost.localdomain jupyter[19068]: [I 15:29:39.426 NotebookApp] http://(localhost.localdomain or 127.0....8889/
18 septembre 15:29:39 localhost.localdomain jupyter[19068]: [I 15:29:39.427 NotebookApp] Use Control-C to stop this server and s...ion).
Hint: Some lines were ellipsized, use -l to show in full.

Cette fois, je veux le voir se tenir debout en toute sécurité. Activez l'exécution automatique.

Activer et vérifier l'exécution automatique


# systemctl enable notebook
# systemctl is-enabled notebook
enabled

Le démarrage automatique a été activé. Pour confirmation, après avoir redémarré le système d'exploitation invité, j'ai essayé d'y accéder à partir de la machine hôte avec l'URL ci-dessus, mais j'ai pu y accéder en toute sécurité. Avec cela, le bloc-notes Jupyter est toujours en cours d'exécution et peut être utilisé à l'aide d'un navigateur Web.

en conclusion

J'ai essayé cette fois et j'ai pensé qu'il n'était pas recommandé de s'exécuter en tant qu'utilisateur root, et c'est gênant car la commande nécessite également des options, il est donc préférable de créer un utilisateur de service et d'exécuter le service en tant qu'utilisateur. Se sentait. De plus, comme je l'ai écrit dans un autre article, j'ai senti que JupyterHub était mieux pour faire cela.

Les références

  • https://qiita.com/iamdaisuke/items/3671032a18f5c4bf37d1
  • https://qiskit.org/documentation/locale/ja/install.html
  • https://ideanotes.cloud/2020/01/29/ubuntu-anaconda-opencv-failed/

Recommended Posts

Faire de Jupyter Notebook un service sur CentOS
Faire de Unity Accelerator un service sous Linux
Construire un notebook jupyter sur un serveur distant (CentOS)
Exécuter le notebook Jupyter sur un serveur distant
Affichage simple du graphique linéaire sur Jupyter Notebook
Introduction de Jupyter Notebook dans CentOS7
Graphiques élevés dans le notebook Jupyter
Afficher le PDF sur Jupyter Notebook
Faire de Responder un démon (service)
Exécutez Jupyter Notebook sous Windows
Un moyen très pratique de présenter avec Jupyter Notebook
Essayez le clustering avec un modèle gaussien mixte sur Jupyter Notebook
Une note lorsque je ne peux pas ouvrir le bloc-notes Jupyter sous Windows
Formatage avec autopep8 sur le notebook Jupyter
Publier Jupyter Notebook en tant que billet de blog
Faisons un service de vente au comptant 2
Faisons un service de vente au comptant 1
Créer un service SlackBot sur Pepper
Présentation de Binder, un service Jupyter gratuit
Créer un environnement python dans centos
Essayez d'exécuter Jupyter Notebook sur Mac
Créer un environnement python3 sur CentOS7
Faisons un service de vente au comptant 3
Faisons un noyau jupyter
Essayez SVM avec scikit-learn sur Jupyter Notebook
Créez un pipeline de notebook avec Kedro + Papermill
Démarrez le notebook jupyter sur le serveur GPU (serveur distant)
Un mémo contenant Python2.7 et Python3 dans CentOS
Cloner le référentiel github sur le notebook Jupyter
Vérification du GPU du PC sur le notebook Jupyter
Afficher l'histogramme / diagramme de dispersion sur Jupyter Notebook
Utiliser les raccourcis clavier vim dans Jupyter Notebook lancé avec Docker
Comment configurer un notebook Jupyter à la destination SSH (AWS EC2)
Installer matplotlib et afficher le graphique dans Jupyter Notebook
Essayez le modèle d'espace d'état (Jupyter Notebook + noyau IR)
Mémo Jupyter Notebook
[Jupyter Notebook / Lab] Trois méthodes de débogage sur Jupyter [Pdb]
Présentation de Jupyter Notebook
Comment rendre plusieurs noyaux sélectionnables sur Jupyter
Créez un environnement python avec ansible sur centos6
Puissant ordinateur portable Jupyter
Activer Jupyter Notebook avec conda sur un serveur distant
Golang avec Jupyter
LINUX: Comment faire correspondre les touches fléchées à 2,4,6,8 sur des notes sans dix touches
[Pythonocc] J'ai essayé d'utiliser la CAO sur un notebook Jupyter
Jupyter sur AWS
Mot de passe du notebook Jupyter
Mémo Jupyter Notebook
Créez un environnement PYNQ sur Ultra96 V2 et connectez-vous à Jupyter Notebook
Essayez Apache Spark avec Jupyter Notebook (sur Docker local
Notebook Jupyter ouvert à distance lancé sur le serveur
jupyter notebook ne commence pas par fish sur mac
De l'introduction de Flask sur CentOS au service sur Nginx et uWSGI
Lancez facilement jupyter notebook sur AWS et accédez localement
Faisons un service de vente au comptant 9 (édition Task Queue)
Exécutez Tensorflow à partir de Jupyter Notebook sur Bash sur Ubuntu sous Windows
Retour sur la création d'un service Web avec Django 1
Surveiller le modèle d'entraînement avec TensorBord sur Jupyter Notebook
Faites de votre curseur une photo de votre choix sous Linux
Créer un robot LINE de retour de perroquet avec AWS Cloud9