インストール手順

環境構築

pyenvを用いたPython環境の構築

IROHA2を実行する場合、OSにプリインストールされているPythonを直接利用するのではなく、Python環境の切り替えツールを用いることを推奨する。 例として、pyenvおよびpyenv-virtualenvを用いたPython3.12の仮想環境の構築方法について説明する。

pyenvの導入

pyenvのインストール・動作に必要なパッケージをインストールする。

$ sudo dnf 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する。

$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv

.bash_profile にパスを追加する。

$ echo 'export PATH="$HOME/.pyenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(pyenv init -)"' >> ~/.bash_profile

pyenvを有効化する。

$ source .bash_profile

pyenvによるPythonのインストール

インストール可能なPythonのバージョンを確認する。

$ pyenv install --list

例えば、3.12.9をインストールする。

$ pyenv install 3.12.9

pyenv-virtualenvの導入

githubのリポジトリからソースコードをcloneする。

$ git clone https://github.com/pyenv/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv

.bash_profile にパスを追加する。

$ echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bash_profile

pyenv-virtualenvを有効化する。

$ source .bash_profile

仮想環境の構築

IROHA2を実行するためのPython3.12仮想環境( iroha2_p312 )を作成する。

$ pyenv virtualenv 3.12.9 iroha2_p312

Note

この場合、あらかじめpyenvでPython3.12.9をインストールしておく必要がある。

仮想環境の有効化

仮想環境 iroha2_p312 を有効化したいディレクトリにおいて以下のコマンドを実行する。

$ pyenv local iroha2_p312

このコマンドを実行したディレクトリ以下のディレクトリで仮想環境が有効化される。

Pythonパッケージ(ライブラリ)インストール

バージョン2.8以降は必要なパッケージが記述された設定ファイル( requirements.txt など)が用意されている。

Table 5 Pythonパッケージ設定ファイルの一覧

ファイル

説明

requirements.txt

基本の4サーバーに加えてデバイス監視ログ可視化システムに必要なパッケージを加えたもの

requirements_crypto.txt

requirements.txtに加えて暗号化通信用のパッケージとOracle DB用のパッケージを加えたもの

requirements_crypto.txt を用いた場合、暗号化通信が有効になる。 この場合、各サーバーにアクセスするためには、装置管理サーバーにおいて 暗号キーの作成とディレクトリ指定 の設定が必要になる。 とりあえずIROHA2が動けばよいという場合、 requirements.txt を用いることを推奨する。

IROHA2ソースコードの展開 の後に以下のコマンドでパッケージをインストールする( requirements.txt の場合)。

$ cd /opt/mlfsoft/iroha2
$ pip install -r requirements.txt

IROHA2のインストール

IROHA2ソースコードの展開

任意のディレクトリに iroha2.tar.gz を展開する。推奨するインストール先は /opt/mlfsoft である。

$ cd /opt
$ sudo mkdir mlfsoft
# 適切なユーザーへの所有権の変更と必要に応じてパーミッションの変更を行う
$ sudo chown $USER mlfsoft
$ cd mlfsoft
$ pwd
/opt/mlfsoft
# iroha2.tar.gzをコピー後
$ tar zxvf iroha2.tar.gz
$ ls
iroha2

python3コマンドを使用する場合の修正

ディストリビューションの種類や設定によっては python コマンドでPython2系が、 python3 コマンドでPython3系が実行される場合がある。 IROHA2は python コマンドで実行するようにコーディングされているため、このような環境においてPython3でIROHA2を実行する場合、いくつかのファイルを修正する必要がある。

各サーバーのrun.sh
Table 6 run.shの修正点

修正前

修正後

python(Pythonを実行している部分)

python3

各サーバーの起動スクリプト

サービスとしてサーバーを実行する場合、後述するように起動スクリプトを修正する( 起動スクリプト:irhdevsrv )。

サーバーの起動

コマンドラインからの起動

各サーバーの起動コマンドについて説明する。設定等の詳細は装置スタッフマニュアルを参照のこと。

デバイス制御サーバー

$ cd /opt/mlfsoft/iroha2/iroha-device-server
$ ./run.sh

装置管理サーバー

$ cd /opt/mlfsoft/iroha2/iroha-management-server
$ ./run.sh

シーケンス管理サーバー

$ cd /opt/mlfsoft/iroha2/iroha-sequence-server
$ ./run.sh

統合制御サーバー

$ cd /opt/mlfsoft/iroha2/iroha-integrate-server
$ ./run.sh

サービスとしての登録と起動

CentOS7以降ではsystemctlコマンドを利用して各サーバーを起動・停止する。 IROHA2.6以降はCentOS7以降のOSで動作することを想定していることから、 サービスとして実行する場合にはsystemctlコマンドを使用することとしている。 各サーバーフォルダに格納されているユニットファイル( .service )を /etc/systemd/system/ に コピーし、登録コマンドを実行することでサービスとして登録することができる。

1. ファイルの準備

ユニットファイルおよび起動スクリプトを編集する。デバイス制御サーバーを例に説明する。

ユニットファイル:irhdevsrv.service

[Service]の ExecStart で指定している起動スクリプトのパスをマシンの環境に合わせて修正する。

[Unit]
Description = IROHA2 Device Server

[Service]
ExecStart = /opt/mlfsoft/iroha2/iroha-device-server/irhdevsrv start
Restart = always
Type = simple

[Install]
WantedBy = multi-user.target
起動スクリプト:irhdevsrv

Pythonの実行体のパス PYTHON 、 起動スクリプト自身のパス EXE_PATH 、サーバーのポート番号 SRV_PORT 、 実行するユーザー名 EXE_USER をマシンの環境に合わせて修正する。

特に、仮想環境で実行する場合には PYTHON の変更が必要な場合が多いので注意する。

# スクリプトの先頭付近
PYTHON=/usr/bin/python
EXE_PATH=/opt/mlfsoft/iroha2/iroha-device-server
SRV_PORT=8085
EXE_USER=mlfdev

また、起動スクリプトには実行権限を付与しておく。

$ chmod 755 irhdevsrv

2. ユニットファイルの登録

ユニットファイルを登録し、サービスに反映させる。

$ sudo cp irhdevsrv.service /etc/systemd/system
$ sudo systemctl daemon-reload

3. サービスとしての起動

以下のコマンドでIROHA2サーバーの起動を制御することができる。

# 起動
$ sudo systemctl start irhdevsrv
# 状態確認
$ sudo systemctl status irhdevsrv
# 再起動
$ sudo systemctl restart irhdevsrv
# 停止
$ sudo systemctl stop irhdevsrv

サービスの自動起動の有効化、無効化は以下のコマンドで設定する。

# 自動起動の有効化
$ sudo systemctl enable irhdevsrv
# 自動起動の無効化
$ sudo systemctl disable irhdevsrv

なお、各サーバーのサービス名は以下の通りである。

  • デバイス制御サーバー:irhdevsrv

  • 装置管理サーバー:irhmngsrv

  • シーケンス管理サーバー:irhseqsrv

  • 統合制御サーバー:irhintsrv

旧バージョン

バージョン2.10までの環境構築方法およびインストール方法については インストール手順(バージョン2.10まで) を参照のこと。

古い実行環境における環境構築方法等については インストール手順(旧バージョン) を参照のこと。