インストール手順 ========================== .. contents:: 目次: :depth: 3 環境構築 ##################################### pyenvを用いたPython環境の構築 ************************************* IROHA2を実行する場合、OSにプリインストールされているPythonを直接利用するのではなく、Python環境の切り替えツールを用いることを推奨する。 例として、pyenvおよびpyenv-virtualenvを用いたPython3.12の仮想環境の構築方法について説明する。 pyenvの導入 ------------------------------------- pyenvのインストール・動作に必要なパッケージをインストールする。 .. code-block:: sh $ 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する。 .. code-block:: sh $ git clone https://github.com/pyenv/pyenv.git ~/.pyenv ``.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.12.9をインストールする。 .. code-block:: sh $ pyenv install 3.12.9 pyenv-virtualenvの導入 ------------------------------------- githubのリポジトリからソースコードをcloneする。 .. code-block:: sh $ git clone https://github.com/pyenv/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv ``.bash_profile`` にパスを追加する。 .. code-block:: sh $ echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bash_profile pyenv-virtualenvを有効化する。 .. code-block:: sh $ source .bash_profile 仮想環境の構築 ------------------------------------- IROHA2を実行するためのPython3.12仮想環境( `iroha2_p312` )を作成する。 .. code-block:: sh $ pyenv virtualenv 3.12.9 iroha2_p312 .. note:: この場合、あらかじめpyenvでPython3.12.9をインストールしておく必要がある。 仮想環境の有効化 ------------------------------------- 仮想環境 `iroha2_p312` を有効化したいディレクトリにおいて以下のコマンドを実行する。 .. code-block:: sh $ pyenv local iroha2_p312 このコマンドを実行したディレクトリ以下のディレクトリで仮想環境が有効化される。 .. _pip_requirements_v211+: Pythonパッケージ(ライブラリ)インストール ****************************************** バージョン2.8以降は必要なパッケージが記述された設定ファイル( ``requirements.txt`` など)が用意されている。 .. csv-table:: Pythonパッケージ設定ファイルの一覧 :header-rows: 1 :widths: 20, 60 :name: pip_requirements ファイル, 説明 requirements.txt, 基本の4サーバーに加えてデバイス監視ログ可視化システムに必要なパッケージを加えたもの requirements_crypto.txt, requirements.txtに加えて暗号化通信用のパッケージとOracle DB用のパッケージを加えたもの ``requirements_crypto.txt`` を用いた場合、暗号化通信が有効になる。 この場合、各サーバーにアクセスするためには、装置管理サーバーにおいて :ref:`create_crypto_key` の設定が必要になる。 とりあえずIROHA2が動けばよいという場合、 ``requirements.txt`` を用いることを推奨する。 :ref:`tar_src` の後に以下のコマンドでパッケージをインストールする( ``requirements.txt`` の場合)。 .. code-block:: sh $ cd /opt/mlfsoft/iroha2 $ pip install -r requirements.txt IROHA2のインストール ##################################### .. _tar_src: IROHA2ソースコードの展開 ************************************* 任意のディレクトリに ``iroha2.tar.gz`` を展開する。推奨するインストール先は ``/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 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` )。 サーバーの起動 ##################################### コマンドラインからの起動 ************************************* 各サーバーの起動コマンドについて説明する。設定等の詳細は装置スタッフマニュアルを参照のこと。 デバイス制御サーバー ------------------------------------- .. 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 サービスとしての登録と起動 ************************************* CentOS7以降ではsystemctlコマンドを利用して各サーバーを起動・停止する。 IROHA2.6以降はCentOS7以降のOSで動作することを想定していることから、 サービスとして実行する場合にはsystemctlコマンドを使用することとしている。 各サーバーフォルダに格納されているユニットファイル( ``.service`` )を ``/etc/systemd/system/`` に コピーし、登録コマンドを実行することでサービスとして登録することができる。 1. ファイルの準備 ----------------------- ユニットファイルおよび起動スクリプトを編集する。デバイス制御サーバーを例に説明する。 ユニットファイル:irhdevsrv.service ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [Service]の **ExecStart** で指定している起動スクリプトのパスをマシンの環境に合わせて修正する。 .. code-block:: ini [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 旧バージョン ##################################### バージョン2.10までの環境構築方法およびインストール方法については :doc:`/MANUAL/AdminManual/InstallOld/install_oldv210` を参照のこと。 古い実行環境における環境構築方法等については :doc:`/MANUAL/AdminManual/InstallOld/install_old` を参照のこと。