インストール手順 ========================== .. contents:: 目次: :depth: 3 環境構築 ##################################### pyenvを用いたPython3.9環境の構築 ************************************* IROHA2.8以降はPython3.9実行環境が必要である(デバイス制御サーバーはPython2.7にも対応)。 pyenvおよびpyenv-virtualenvを用いたPython3.9の仮想環境の構築方法について説明する。 pyenvの導入 ------------------------------------- pyenvのインストール・動作に必要なパッケージをインストールする。 .. code-block:: sh $ sudo yum install gcc make zlib-devel bzip2 bzip2-devel readline readline-devel sqlite sqlite-devel xz-devel tk-devel openssl openssl-devel git libffi-devel githubのリポジトリからソースコードをcloneする。 .. code-block:: sh $ git clone https://github.com/pyenv/pyenv.git ~/.pyenv :file:`.bash_profile` にパスを追加する。 .. code-block:: sh $ echo 'export PATH="$HOME/.pyenv/bin:$PATH"' >> ~/.bash_profile $ echo 'eval "$(pyenv init -)"' >> ~/.bash_profile pyenvを有効化する。 .. code-block:: sh $ source .bash_profile pyenvによるPythonのインストール ------------------------------------- インストール可能なPythonのバージョンを確認する。 .. code-block:: sh $ pyenv install --list 例えば、3.9.16をインストールする。 .. code-block:: sh $ pyenv install 3.9.16 pyenv-virtualenvの導入 ------------------------------------- githubのリポジトリからソースコードをcloneする。 .. code-block:: sh $ git clone https://github.com/pyenv/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv :file:`.bash_profile` にパスを追加する。 .. code-block:: sh $ echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bash_profile pyenv-virtualenvを有効化する。 .. code-block:: sh $ source .bash_profile 仮想環境の構築 ------------------------------------- IROHA2を実行するためのPython3.9仮想環境( `iroha2_p39` )を作成する。 .. code-block:: sh $ pyenv virtualenv 3.9.16 iroha2_p39 .. note:: この場合、あらかじめpyenvでPython3.9.16をインストールしておく必要がある。 仮想環境の有効化 ------------------------------------- 仮想環境 `iroha2_p39` を有効化したいディレクトリにおいて以下のコマンドを実行する。 .. code-block:: sh $ pyenv local iroha2_p39 このコマンドを実行したディレクトリ以下のディレクトリで仮想環境が有効化される。 Pythonパッケージ(ライブラリ)インストール ************************************* .. _pip_requirements_v28+: Python3(設定ファイルrequirements.txtを用いる場合) ------------------------------------- バージョン2.8以降は必要なパッケージが記述された設定ファイル( :file:`requirements.txt` など)が用意されている。 .. csv-table:: Pythonパッケージ設定ファイルの一覧 :header-rows: 1 :widths: 20, 60 :name: pip_requirements ファイル, 説明 requirements_min.txt, IROHA2の実行に必要最低限のパッケージ(バージョン2.9以降) requirements_crypto.txt, requirements_min.txtに加えて暗号化通信用のパッケージを加えたもの(バージョン2.9以前) requirements.txt, requirements_crypto.txtに加えてデバイス監視ログ可視化システムに必要なパッケージを加えたもの(バージョン2.8以降) :file:`requirements_crypto.txt` および :file:`requirements.txt` を用いる場合、暗号化通信が有効になる。 この場合、各サーバーにアクセスするためには、装置管理サーバーにおいて :ref:`create_crypto_key` の設定が必要になる。 とりあえずIROHA2が動けばよいという場合、 :file:`requirements_min.txt` を用いることを推奨する。 :ref:`tar_src` の後に以下のコマンドでパッケージをインストールする( :file:`requirements_min.txt` の場合)。 .. code-block:: sh $ cd /opt/mlfsoft/iroha2 $ pip install -r requirements_min.txt .. note:: pycryptodomeがインストールされているPython環境でIROHA2を実行した場合、暗号化通信が有効化される。 :file:`requirements.txt` を用いてパッケージをインストール後、暗号化通信が不要になった場合には pycryptodomeをアンインストール(pip uninstall pycryptodome)することでこれを無効にすることができる。 Python3 ------------------------------------- 設定ファイルを用いない場合、pip3で以下のパッケージをインストールする。 - future - six - lxml - pycryptodome(暗号化通信を用いる場合) .. code-block:: sh $ pip3 install future $ pip3 install six $ pip3 install lxml $ pip3 install pycryptodome Python2 ------------------------------------- pipで以下のパッケージをインストールする。 - requests - future - pycrypto(暗号化通信を用いる場合) .. code-block:: sh $ pip install requests $ pip install future $ pip install pycrypto IROHA2のインストール ##################################### .. _tar_src: IROHA2ソースコードの展開 ************************************* 任意のディレクトリに :file:`iroha2.tar.gz` を展開する。推奨するインストール先は :file:`/opt/mlfsoft` である。 .. code-block:: sh $ cd /opt $ sudo mkdir mlfsoft # 適切なユーザーへの所有権の変更と必要に応じてパーミッションの変更を行う $ sudo chown $USER mlfsoft $ cd mlfsoft $ pwd /opt/mlfsoft # iroha2.tar.gzをコピー後 $ tar zxvf iroha2.tar.gz $ ls iroha2 シーケンス管理サーバーのシンボリックリンク作成(version 2.6のみ) -------------------------------------------------------- シーケンス管理サーバーのスクリプトおよびファサードは :file:`iroha2/iroha-settings/sequence/database` 以下にその実体を格納しているが、 実装の都合上 :file:`iroha2/iroha-sequence-server/database` にシンボリックリンクを貼ることで対応している。 ファイルの受け渡し方法などによってはこのシンボリックリンクが無効になる可能性があることから、 そのような場合には以下の手順でシンボリックリンクを作成する。 .. code-block:: sh $ cd /opt/mlfsoft/iroha2/iroha-sequence-server/database $ ln -s ../../iroha-settings/sequence/database/facades facades $ ln -s ../../iroha-settings/sequence/database/scripts scripts python3コマンドを使用する場合の修正 -------------------------------------------------------- ディストリビューションの種類や設定によっては `python` コマンドでPython2系が、 `python3` コマンドでPython3系が実行される場合がある。 IROHA2は `python` コマンドで実行するようにコーディングされているため、このような環境においてPython3でIROHA2を実行する場合、いくつかのファイルを修正する必要がある。 各サーバーのrun.sh ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. csv-table:: run.shの修正点 :header-rows: 1 :name: py3_runsh 修正前, 修正後 python(Pythonを実行している部分), python3 各サーバーの起動スクリプト ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ サービスとしてサーバーを実行する場合、後述するように起動スクリプトを修正する( :ref:`exec_script` )。 シーケンス管理サーバー(Version 2.6.2以前) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ シーケンス管理サーバーの :file:`irhlibseq` フォルダにある以下のファイルのシェバン(1行目のインタプリタを指定する部分)を修正する。 - irhfacademngr.py - irhrunsrv.py - runcheck.py .. csv-table:: シーケンス管理サーバーの修正点 :header-rows: 1 :name: py3_irhlibseq 修正前, 修正後 #!/usr/bin/env python(1行目), #!/usr/bin/env python3 Version 2.6.3以降はこの修正を行わずにPython3によるファサードの実行が可能になっている。 サーバーの起動 ##################################### コマンドラインからの起動 ************************************* 各サーバーの起動コマンドについて説明する。設定等の詳細は装置スタッフマニュアルを参照のこと。 デバイス制御サーバー ------------------------------------- .. code-block:: sh $ cd /opt/mlfsoft/iroha2/iroha-device-server $ ./run.sh 装置管理サーバー ------------------------------------- .. code-block:: sh $ cd /opt/mlfsoft/iroha2/iroha-management-server $ ./run.sh シーケンス管理サーバー ------------------------------------- .. code-block:: sh $ cd /opt/mlfsoft/iroha2/iroha-sequence-server $ ./run.sh 統合制御サーバー ------------------------------------- .. code-block:: sh $ cd /opt/mlfsoft/iroha2/iroha-integrate-server $ ./run.sh サービスとしての登録と起動(version 2.6以降) ************************************* CentOS7以降ではsystemctlコマンドを利用して各サーバーを起動・停止する。 IROHA2.6以降はCentOS7以降のOSで動作することを想定していることから、 サービスとして実行する場合にはsystemctlコマンドを使用することとしている。 各サーバーフォルダに格納されているユニットファイル(:file:`.service`)を :file:`/etc/systemd/system/` に コピーし、登録コマンドを実行することでサービスとして登録することができる。 1. ファイルの準備 ----------------------- ユニットファイルおよび起動スクリプトを編集する。デバイス制御サーバーを例に説明する。 ユニットファイル:irhdevsrv.service ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [Service]の **ExecStart** で指定している起動スクリプトのパスをマシンの環境に合わせて修正する。 .. code-block:: config [Unit] Description = IROHA2 Device Server [Service] ExecStart = /opt/mlfsoft/iroha2/iroha-device-server/irhdevsrv start Restart = always Type = simple [Install] WantedBy = multi-user.target .. _exec_script: 起動スクリプト:irhdevsrv ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Pythonの実行体のパス **PYTHON** 、 起動スクリプト自身のパス **EXE_PATH** 、サーバーのポート番号 **SRV_PORT** 、 実行するユーザー名 **EXE_USER** をマシンの環境に合わせて修正する。 特に、仮想環境で実行する場合には **PYTHON** の変更が必要な場合が多いので注意する。 .. code-block:: sh # スクリプトの先頭付近 PYTHON=/usr/bin/python EXE_PATH=/opt/mlfsoft/iroha2/iroha-device-server SRV_PORT=8085 EXE_USER=mlfdev また、起動スクリプトには実行権限を付与しておく。 .. code-block:: sh $ chmod 755 irhdevsrv 2. ユニットファイルの登録 ----------------------- ユニットファイルを登録し、サービスに反映させる。 .. code-block:: sh $ sudo cp irhdevsrv.service /etc/systemd/system $ sudo systemctl daemon-reload 3. サービスとしての起動 ----------------------- 以下のコマンドでIROHA2サーバーの起動を制御することができる。 .. code-block:: sh # 起動 $ sudo systemctl start irhdevsrv # 状態確認 $ sudo systemctl status irhdevsrv # 再起動 $ sudo systemctl restart irhdevsrv # 停止 $ sudo systemctl stop irhdevsrv サービスの自動起動の有効化、無効化は以下のコマンドで設定する。 .. code-block:: sh # 自動起動の有効化 $ sudo systemctl enable irhdevsrv # 自動起動の無効化 $ sudo systemctl disable irhdevsrv なお、各サーバーのサービス名は以下の通りである。 - デバイス制御サーバー:irhdevsrv - 装置管理サーバー:irhmngsrv - シーケンス管理サーバー:irhseqsrv - 統合制御サーバー:irhintsrv 旧バージョン ##################################### 古い実行環境や古いバージョンのIROHA2のインストール等については :doc:`/MANUAL/AdminManual/InstallOld/install_old` を参照のこと。