インストール手順¶
目次:
環境構築¶
pyenvを用いたPython3.9環境の構築¶
IROHA2.8以降はPython3.9実行環境が必要である(デバイス制御サーバーはPython2.7にも対応)。 pyenvおよびpyenv-virtualenvを用いたPython3.9の仮想環境の構築方法について説明する。
pyenvの導入¶
pyenvのインストール・動作に必要なパッケージをインストールする。
$ sudo yum install gcc zlib-devel bzip2 bzip2-devel readline readline-devel sqlite sqlite-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.9.16をインストールする。
$ pyenv install 3.9.16
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.9仮想環境( iroha2_p39 )を作成する。
$ pyenv virtualenv 3.9.16 iroha2_p39
Note
この場合、あらかじめpyenvでPython3.9.16をインストールしておく必要がある。
仮想環境の有効化¶
仮想環境 iroha2_p39 を有効化したいディレクトリにおいて以下のコマンドを実行する。
$ pyenv local iroha2_p39
このコマンドを実行したディレクトリ以下のディレクトリで仮想環境が有効化される。
CentOS7におけるPython3環境の構築¶
CentOS7系にPython3環境を構築する方法として、SCL(Software Collection Library)を用いる方法を説明する。
SCLとPython3のインストール¶
$ sudo yum install -y centos-release-scl
$ sudo yum install -y rh-python36
Python3の有効化¶
下記のコマンドを実行したターミナルではPython3が有効化する。
$ source /opt/rh/rh-python36/enable
$ python
Python 3.6.12 ~
>>>
ターミナル起動時にPython3を有効化したい場合には ~/.bashrc
に以下の1行を追記する。
$ source /opt/rh/rh-python36/enable
Pythonのライブラリインストール¶
Python2¶
requests
future
pycrypto(任意)
$ pip install requests
$ pip install future
$ pip install pycrypto
Python3¶
future
six
lxml
pycrypto(任意)
$ pip3 install future
$ pip3 install six
$ pip3 install lxml
$ pip3 install pycrypto
Python3(バージョン2.8以降)¶
IROHA2ソースコードの展開 の後に requirements.txt
を用いてインストールする。
$ cd /opt/mlfsoft/iroha2
$ pip install -r requirements.txt
Note
IROHA2の実行に必要最低限のライブラリ以外に、デバイス監視ログ可視化システムに必要なライブラリ等も含まれる。
IROHA2のインストール¶
IROHA2ソースコードの展開¶
任意のディレクトリに iroha2.tar.gz
を展開する。推奨するインストール先は /opt/mlfsoft
である。
$ cd /opt
$ mkdir mlfsoft
$ cd mlfsoft
$ pwd
/opt/mlfsoft
# iroha2.tar.gzをコピー後
$ tar zxvf iroha2.tar.gz
$ ls
iroha2
シーケンス管理サーバーのシンボリックリンク作成(version 2.6のみ)¶
シーケンス管理サーバーのスクリプトおよびファサードは iroha2/iroha-settings/sequence/database
以下にその実体を格納しているが、
実装の都合上 iroha2/iroha-sequence-server/database
にシンボリックリンクを貼ることで対応している。
ファイルの受け渡し方法などによってはこのシンボリックリンクが無効になる可能性があることから、
そのような場合には以下の手順でシンボリックリンクを作成する。
$ 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¶
修正前 |
修正後 |
---|---|
python(Pythonを実行している部分) |
python3 |
各サーバーの起動スクリプト¶
サービスとしてサーバーを実行する場合、後述するように起動スクリプトを修正する。
シーケンス管理サーバー(Version 2.6.2以前)¶
シーケンス管理サーバーの irhlibseq
フォルダにある以下のファイルのシェバン(1行目のインタプリタを指定する部分)を修正する。
irhfacademngr.py
irhrunsrv.py
runcheck.py
修正前 |
修正後 |
---|---|
#!/usr/bin/env python(1行目) |
#!/usr/bin/env python3 |
Version 2.6.3以降はこの修正を行わずにPython3によるファサードの実行が可能になっている。
サーバーの起動¶
コマンドラインからの起動¶
各サーバーの起動コマンドについて説明する。設定等の詳細は装置スタッフマニュアルを参照のこと。
デバイス制御サーバー¶
$ 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
サービスとしての登録と起動(version 2.6以降)¶
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 をマシンの環境に合わせて修正する。
特に、Python3で実行する場合には 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
サービスとしての登録と起動(version 2.6以前)¶
各サーバーフォルダに格納されている起動スクリプトを /etc/init.d
に
コピーし、登録コマンドを実行することで各サーバーをサービスとして起動・停止できる。
1. ファイルの準備¶
起動スクリプトを編集する。デバイス制御サーバーを例に説明する。
起動スクリプト:irhdevsrv¶
起動スクリプト自身のパス EXE_PATH 、サーバーのポート番号 SRV_PORT 、 実行するユーザー名 EXE_USER をマシンの環境に合わせて修正する。
# スクリプトの先頭付近
EXE_PATH=/opt/mlfsoft/iroha2/iroha-device-server
SRV_PORT=8085
EXE_USER=mlfdev
また、起動スクリプトには実行権限を付与しておく。
$ chmod 755 irhdevsrv
2. 起動スクリプトの登録¶
起動スクリプトを /etc/init.d
にコピーする。
$ sudo cp irhdevsrv /etc/init.d/
起動スクリプトをサービスに登録する。
$ sudo chkconfig --add irhdevsrv
3. サービスとしての起動¶
以下のコマンドでIROHA2サーバーの起動を制御することができる。
# 起動
$ sudo service irhdevsrv start
# 状態確認
$ sudo service irhdevsrv status
# 再起動
$ sudo service irhdevsrv restart
# 停止
$ sudo service irhdevsrv stop
自動起動の有効化、無効化は以下のコマンドで設定する。
# 自動起動の有効化
$ sudo chkconfig irhdevsrv on
# 自動起動の無効化
$ sudo chkconfig irhdevsrv off