# HULFT10 Smart Proxyの起動と終了

本書では、Red Hat Enterprise Linux 9でHULFT10 Smart Proxyを起動および終了する際の設定について説明します。

## 実行ファイルの作成

HULFT10 Smart Proxy（Web API）とHULFT10 Smart Proxy（WSS）の実行ファイルを作成します。

実行ファイルには、実行権限を付与する必要があります。

### HULFT10 Smart Proxy（Web API）の実行ファイルの作成

$HULFT_SMART_PROXY_HOME/bin/に、実行ファイルを作成します。

以下は実行ファイルのサンプルです。

    #!/bin/bash
    cd "$HULFT_SMART_PROXY_HOME/bin" || { echo "Failed to change directory.
    Exiting.";exit 1;}
    if [ ! -x "./hsp-api-server" ]; then
    echo "./hsp-api-server is not executable. Exiting."
    exit 1
    fi
    ./hsp-api-server > /dev/null

### HULFT10 Smart Proxy（WSS）の実行ファイルの作成

$HULFT_SMART_PROXY_HOME/binに、実行ファイルを作成します。

以下は実行ファイルのサンプルです。

    #!/bin/bash
    cd "$HULFT_SMART_PROXY_HOME/bin" || { echo "Failed to change directory.
    Exiting.";exit 1;}
    if [ ! -x "./hsp-wss-server" ]; then
    echo "./hsp-wss-server is not executable. Exiting."
    exit 1
    fi
    ./hsp-wss-server > /dev/null

## 各サーバーの起動

各サーバーの起動の手順を説明します。初回はこの手順でサーバーを起動してください。

1. HULFT10 Smart Proxy（Web API）の起動前の準備

   HULFT10 Smart Proxy（Web API）（以降、APIサーバー）を起動する前に、以下の準備が必要です。

   - 接続するPostgreSQLデータベースを起動

   - $HULFT_SMART_PROXY_HOME/etc/に以下をおく

     APIサーバー設定ファイル（api-config.yml）

   - APIサーバー設定ファイルに以下を設定

     - PostgreSQLデータベースへの接続情報

     - サーバー証明書と秘密鍵のパス

     APIサーバー設定ファイルの項目詳細は、「APIサーバー設定ファイル（api-config.yml）」を参照してください。

   - カレントディレクトリーは、APIサーバーの実行ファイルと同じ階層にする

2. APIサーバーの起動

   以下の実行ファイルを実行します。

       $ ./hsp-api-server

   実行時にコンソールログが標準出力に出力されます。必要に応じてリダイレクトしてください。

   バックグラウンドジョブでの動作や、仮想端末を閉じたりログアウトしたりしても停止しないよう、必要に応じてnohupコマンドを使用します。

   nohupコマンドの詳細は、Linuxのヘルプを参照してください。

3. HULFT10 Smart Proxy（WSS）の起動前の準備

   HULFT10 Smart Proxy（WSS）（以降、WSSサーバー）を起動する前に、以下の準備が必要です。

   - 接続するPostgreSQLデータベースを起動

   - $HULFT_SMART_PROXY_HOME/etc/に以下をおく

     WSSサーバー設定ファイル（wss-config.yml）

   - WSSサーバー設定ファイルに以下を設定

     - PostgreSQLデータベースへの接続情報

     - サーバー証明書と秘密鍵のパス

   - カレントディレクトリーは、WSSサーバーの実行ファイルと同じ階層にする

4. WSSサーバーの起動

   以下の実行ファイルを実行します。

       $ ./hsp-wss-server

   実行時にコンソールログが標準出力に出力されます。必要に応じてリダイレクトしてください。

   バックグラウンドジョブでの動作や、仮想端末を閉じたりログアウトしたりしても停止しないよう、必要に応じてnohupコマンドを使用します。

   nohupコマンドの詳細は、Linuxのヘルプを参照してください。

## 各サーバーの停止

各サーバーを停止するには、killコマンドなどでサーバーのプロセスを停止します。

killコマンドを使用して、APIサーバーを停止させる例は以下のとおりです。

    $ ps ax | grep ./hsp-api-server               # APIサーバーのプロセスIDを問い合わせ
    16619 ?        Sl     0:01 ./hsp-api-server
    $ kill 16619                                  # killコマンドでAPIサーバーのプロセスIDを指定してプロセスを停止

各コマンドの詳細は、Linuxのコマンドのヘルプを参照してください。

## systemdを使用した各サーバーの起動と停止

初回の各サーバーの起動および停止以降は、systemdによるサービスの起動および停止の機能を使用して、各サーバーを起動および停止できます。

### ユニットファイルの作成

systemdがシステム起動時にHULFT10 Smart Proxyをサービスとして起動するためのユニットファイルを作成します。

ユニットファイル名は任意で、/etc/systemd/systemのディレクトリーに配置します。

以下はユニットファイルのサンプルです。

- HULFT10 Smart Proxy（Web API）を起動するためのユニットファイル

  例）/etc/systemd/system/hulft-api-server.service

      [Unit]
      Description=SmartProxy api-server run test
      After=network.target

      [Service]
      Environment="HULFT_SMART_PROXY_HOME=xxx" (*1)
      ExecStart=/bin/bash -c 'xxx.sh' (*2)

      [Install]
      WantedBy=multi-user.target

- HULFT10 Smart Proxy（WSS）を起動するためのユニットファイル

  例）/etc/systemd/system/hulft-wss-server.service

      [Unit]
      Description=SmartProxy wss-server run test
      After=network.target

      [Service]
      Environment="HULFT_SMART_PROXY_HOME=xxx" (*1)
      ExecStart=/bin/bash -c 'xxx.sh' (*2)

      [Install]
      WantedBy=multi-user.target

*1 | : | Environmentには、HULFT10 Smart Proxyを導入したディレクトリーを指定します。
*2 | : | ExecStartには、実行ファイルを配置したディレクトリーを指定します。

### サービスの操作コマンド

作成したユニットファイルをサービスとして、以下のとおり登録、起動、停止、および参照できます。

- 更新したユニットファイルの内容をsystemdに反映

      sudo systemctl daemon-reload

- サービスの自動起動を有効

      sudo systemctl enable xxx

  “xxx”にはユニットファイル名を指定します。

- サービスを起動

      sudo systemctl start xxx

  “xxx”にはユニットファイル名を指定します。

- サービスを停止

      sudo systemctl stop xxx

  “xxx”にはユニットファイル名を指定します。

- サービスのステータスを表示

      sudo systemctl satus xxx

  “xxx”にはユニットファイル名を指定します。

## 各サーバーのログ

各サーバーからのログの出力先は、各設定ファイルに指定したパスになります。

- APIサーバー

  APIサーバー設定ファイル（api-wss-config.yml）

  ログレベル（level）

  ファイルパス（filepath）

- WSSサーバー

  WSSサーバー設定ファイル（wss-config.yml）

  ログ出力レベル（log-level）

  ログファイル名（log-path）

各設定ファイルの詳細は、「設定ファイル」を参照してください。