6. コンテンツにスキップ

6. WEBAPIの複数導入

Senju Service Managerが提供するWEBAPIはバージョンアップやパッチ適用により仕様が変更され、現在ご利用中の運用に影響がある場合がございます。急な仕様変更に対応するために、旧バージョンと新バージョンのWEBAPIを同時に稼働し、接続先をポート番号で分けることで 両方の仕様を使い分けることが可能となります。

複数のWEBAPIを稼働する必要がある場合、以下の手順に従って追加の「Apache」と「WEBAPI」のインストールを行ってください。

仕様補足

2台のApacheをインストールして複数のWEBAPIを稼働することで、サーバーへの負荷や性能に影響を及ぼす可能性があります。

6.1 追加WEBAPIのインストール

補足説明

別のWEBAPIをインストールするためには、既存と違う仮想環境からインストールする必要があります。仮想環境の作成方法は以下の手順を参照してください。
「6.1.1 仮想環境の作成」

6.1.1 仮想環境の作成

  1. ドライブ C 直下に仮想環境用のフォルダを作成します。(フォルダ名は任意です。)
  2. コマンドプロンプトを新規に起動し、下記のコマンドを実行します。

    • コマンド
      cd C:\[仮想環境用のフォルダ名]
      py -3.11 -m venv .env
      .env\Scripts\activate
      
    • コマンドプロンプトの画面が下図のように表示されることをご確認ください。

以上で6.1.1 仮想環境の作成は終了です。

6.1.2 Pythonパッケージのインストール

Senju Service Managerと連携する、APIサーバーのWEBアプリケーションは以下のPythonパッケージの機能を利用しています。

No Pythonパッケージ名 バージョン ファイル名
1 aniso8601 9.0.1 aniso8601-9.0.1-py2.py3-none-any.whl
2 attrs 19.3.0 attrs-19.3.0-py2.py3-none-any.whl
3 certifi 2022.12.7 certifi-2022.12.7-py3-none-any.whl
4 cffi 1.15.1 cffi-1.15.1-cp311-cp311-win_amd64.whl
5 chardet 3.0.4 chardet-3.0.4-py2.py3-none-any.whl
6 Click 7 Click-7.0-py2.py3-none-any.whl
7 concurrent_log_handler 0.9.25 concurrent_log_handler-0.9.25-py3-none-any.whl
8 cryptography 40.0.1 cryptography-40.0.1-cp36-abi3-win_amd64.whl
9 Flask 1.1.1 Flask-1.1.1-py2.py3-none-any.whl
10 Flask-JWT-Extended 3.24.1 Flask-JWT-Extended-3.24.1.tar.gz
11 flask-marshmallow 0.12.0 flask_marshmallow-0.12.0-py2.py3-none-any.whl
12 Flask-RESTful 0.3.8 Flask_RESTful-0.3.8-py2.py3-none-any.whl
13 Flask-SQLAlchemy 2.4.2 Flask_SQLAlchemy-2.4.2-py2.py3-none-any.whl
14 idna 2.8 idna-2.8-py2.py3-none-any.whl
15 itsdangerous 1.1.0 itsdangerous-1.1.0-py2.py3-none-any.whl
16 Jinja2 2.11.1 Jinja2-2.11.1-py2.py3-none-any.whl
17 jsonschema 3.2.0 jsonschema-3.2.0-py2.py3-none-any.whl
18 MarkupSafe 1.1.1 MarkupSafe-1.1.1.tar.gz
19 marshmallow 3.6.0 marshmallow-3.6.0-py2.py3-none-any.whl
20 marshmallow-sqlalchemy 0.23.0 marshmallow_sqlalchemy-0.23.0-py2.py3-none-any.whl
21 mod-wsgi 4.9.2 mod_wsgi-4.9.2-cp311-cp311-win_amd64.whl
22 oracledb 1.3.0 oracledb-1.3.0-cp311-cp311-win_amd64.whl
23 pip 23.0.1 pip-23.0.1-py3-none-any.whl
24 portalocker 2.10.0 portalocker-2.10.0-py3-none-any.whl
25 psycopg2 2.9.6 psycopg2-2.9.6-cp311-cp311-win_amd64.whl
26 pycparser 2.21 pycparser-2.21-py2.py3-none-any.whl
27 PyJWT 1.7.1 PyJWT-1.7.1-py2.py3-none-any.whl
28 pyrsistent 0.15.7 pyrsistent-0.15.7.tar.gz
29 pytz 2019.3 pytz-2019.3-py2.py3-none-any.whl
30 pywin32 306 pywin32-306-cp311-cp311-win_amd64.whl
31 requests 2.22.0 requests-2.22.0-py2.py3-none-any.whl
32 six 1.14.0 six-1.14.0-py2.py3-none-any.whl
33 SQLAlchemy 1.3.17 SQLAlchemy-1.3.17.tar.gz
34 tzlocal 2.1 tzlocal-2.1-py2.py3-none-any.whl
35 urllib3 1.25.11 urllib3-1.25.11-py2.py3-none-any.whl
36 Werkzeug 1.0.0 Werkzeug-1.0.0-py2.py3-none-any.whl
37 wheel 0.40.0 wheel-0.40.0-py3-none-any.whl
38 cpe 1.3.1 cpe-1.3.1.tar.gz
39 xmltodict 0.14.2 xmltodict-0.14.2-py2.py3-none-any.whl

仕様補足

例として手順を説明するバージョンは開発時点のバージョンになります。インストール時には、セキュリティ上の観点を考慮してその時点での最適なバージョンを導入してください。

  1. Pythonパッケージを入手し、インストールするサーバーのC:\TEMP\modulesに格納します。

    No Pythonパッケージ名 ダウンロード先
    1 aniso8601 https://pypi.org/project/aniso8601/9.0.1/#files
    2 attrs https://pypi.org/project/attrs/19.3.0/#files
    3 certifi https://pypi.org/project/certifi/2022.12.7/#files
    4 cffi https://pypi.org/project/cffi/1.15.1/#files
    5 chardet https://pypi.org/project/chardet/3.0.4/#files
    6 Click https://pypi.org/project/click/7.0/#files
    7 concurrent-log-handler https://pypi.org/project/concurrent-log-handler/0.9.25/#files
    8 cryptography https://pypi.org/project/cryptography/40.0.1/#files
    9 Flask https://pypi.org/project/Flask/1.1.1/#files
    10 Flask-JWT-Extended https://pypi.org/project/Flask-JWT-Extended/3.24.1/#files
    11 flask-marshmallow https://pypi.org/project/flask-marshmallow/0.12.0/#files
    12 Flask-RESTful https://pypi.org/project/Flask-RESTful/0.3.8/#files
    13 Flask-SQLAlchemy https://pypi.org/project/Flask-SQLAlchemy/2.4.2/#files
    14 idna https://pypi.org/project/idna/2.8/#files
    15 itsdangerous https://pypi.org/project/itsdangerous/1.1.0/#files
    16 Jinja2 https://pypi.org/project/Jinja2/2.11.1/#files
    17 jsonschema https://pypi.org/project/jsonschema/3.2.0/#files
    18 MarkupSafe https://pypi.org/project/MarkupSafe/1.1.1/#files
    19 marshmallow https://pypi.org/project/marshmallow/3.6.0/#files
    20 marshmallow-sqlalchemy https://pypi.org/project/marshmallow-sqlalchemy/0.23.0/#files
    21 mod-wsgi https://pypi.org/project/mod-wsgi/4.9.2/#files
    22 oracledb https://pypi.org/project/oracledb/1.3.0/#files
    23 pip https://pypi.org/project/pip/23.0.1/#files
    24 portalocker https://pypi.org/project/portalocker/2.10.0/#files
    25 psycopg2 https://pypi.org/project/psycopg2/2.9.6/#files
    26 pycparser https://pypi.org/project/pycparser/2.21/#files
    27 PyJWT https://pypi.org/project/PyJWT/1.7.1/#files
    28 pyrsistent https://pypi.org/project/pyrsistent/0.15.7/#files
    29 pytz https://pypi.org/project/pytz/2019.3/#files
    30 pywin32 https://pypi.org/project/pywin32/306/#files
    31 requests https://pypi.org/project/requests/2.22.0/#files
    32 six https://pypi.org/project/six/1.14.0/#files
    33 SQLAlchemy https://pypi.org/project/SQLAlchemy/1.3.17/#files
    34 tzlocal https://pypi.org/project/tzlocal/2.1/#files
    35 urllib3 https://pypi.org/project/urllib3/1.25.11/#files
    36 Werkzeug https://pypi.org/project/Werkzeug/1.0.0/#files
    37 wheel https://pypi.org/project/wheel/0.40.0/#files
    38 cpe https://pypi.org/project/cpe/1.3.1/#files
    39 xmltodict https://pypi.org/project/xmltodict/0.14.2/#files

    補足説明

    ※…ダウンロードするファイルの選択肢が複数存在します。
    以下を参考にファイル名に含まれる文字列からファイルを選択してください。
    ・cp[Pythonのバージョン]
    例)cp311…Python3.11用
    ・win_amd64:Windows(64-bit)用

    補足説明

    指定されたPythonパッケージが入手できない場合、お手数ですがSenju カスタマーサポートセンターまでご連絡ください。

    補足説明

    mod-wsgiはpypiではtar.gz形式しかダウンロードできないため、mod_wsgi-4.9.2-cp311-cp311-win_amd64.whlを利用する際にビルドする必要があります。
    ローカルでのビルド等が難しい場合を考慮し、導入可能なパッケージモジュールを提供しておりますので、必要な場合は千手カスタマーサポートセンターまでお問い合わせください。

  2. Pythonパッケージのファイル名一覧をテキストファイルに記載し、C:\TEMP\modulesに保存します。

    • ファイル名: requirements.txt
    requirements.txtの記載内容
    concurrent-log-handler==0.9.25
    Flask==1.1.1
    Flask-JWT-Extended==3.24.1
    flask-marshmallow==0.12.0
    Flask-RESTful==0.3.8
    Flask-SQLAlchemy==2.4.2
    jsonschema==3.2.0
    marshmallow==3.6.0
    marshmallow-sqlalchemy==0.23.0
    mod-wsgi==4.9.2
    oracledb==1.3.0
    portalocker==2.10.0
    psycopg2==2.9.6
    pywin32==306
    requests==2.22.0
    SQLAlchemy==1.3.17
    tzlocal==2.1
    cpe==1.3.1
    xmltodict==0.14.2
  3. コマンドプロンプトを新規に起動し、下記のコマンドを実行します。

    • コマンド
      cd C:\[仮想環境用のフォルダ名]
      .env\Scripts\activate
      
  4. 仮想環境上で以下のコマンドを実行し、Pythonパッケージのインストールを行います。

    • コマンド
      cd C:\TEMP\modules
      python -m pip install pip-23.0.1-py3-none-any.whl
      pip install wheel-0.40.0-py3-none-any.whl
      pip install –-no-index --find-links C:\TEMP\modules –r requirements.txt
      

  5. 仮想環境上で以下のコマンドを実行し、Pythonパッケージがインストールされたことを確認します

    • コマンド
      pip show <Pythonパッケージ名>
      

以上でPythonパッケージのインストールは終了です。

6.1.3 WEBアプリケーションのインストール

  1. インストール用のwhlファイルを入手して、インストールするサーバーのC:\TEMPに格納します。

    • ファイル名: ssmwebapi-2025.0.1.1-py3-none-any.whl

    仕様補足

    WebアプリケーションはPythonで作成されています。
    Pythonのパッケージ管理システムを用いてインストールします。

  2. インストールするサーバーに管理者権限のアカウントでログインします。

  3. コマンドプロンプトを新規に起動し、下記のコマンドを実行します。

    • コマンド
      cd C:\[仮想環境用のフォルダ名]
      .env\Scripts\activate
      
  4. 仮想環境で下記のコマンドを実行します。

    • コマンド
      cd C:\TEMP
      pip install –U ssmwebapi-2025.0.1.1-py3-none-any.whl
      
  5. 仮想環境で下記のコマンドを実行し、WEBアプリケーションがインストールされていることを確認します。

    • コマンド
      pip show ssmwebapi
      

    テキスト自動的に生成された説明

以上で6.1.3 WEBアプリケーションのインストールは終了です。

6.2 追加Apacheのインストール

  1. インストール用のzipファイルを入手し、インストールするサーバーのC:\TEMPに格納します。

    • ダウンロード先:https://www.apachelounge.com/download/
    • ファイル名: httpd-2.4.58-win64-VS17.zip
  2. インストールするサーバーに管理者権限のアカウントでログインします。

  3. zipファイルを展開し、既存インストールしたApacheと区分するため、フォルダ「Apache24」のフォルダ名を「Apache24_2」で変更してCドライブ直下に格納してください。

    仕様補足

    追加作成したApacheのフォルダ名変更に従って、格納経路についての設定を変更する必要があります。以下の設定ファイルをテキストエディタで開いて設定ファイルを修正してください。
    設定ファイル:Apache24_2\conf\httpd.conf

    Define SRVROOT "c:/Apache24_2"
    ServerRoot "${SRVROOT}"

  4. Apacheの設定ファイル(httpd.conf)をテキストエディタで開き、以下の内容を編集します。

    ポート番号を設定します。既に使用しているポート番号と違う番号を設定してください。

    #Listen 80
    Listen 49153
    

    サーバー名を設定します。ポート番号を付加する際に上述の番号を記載してください。

    #ServerName www.example.com:80
    ServerName ssmapihost:49153
    

    「Include conf/extra/httpd-mpm.conf」で検索し、左の「#」を削除します。

    #Include conf/extra/httpd-mpm.conf
    Include conf/extra/httpd-mpm.conf
    

    Apacheインストール先\conf\extra\httpd-mpm.confのバックアップを取得します。

    [格納先参考] 
    C:\\Apache24\\conf\\extra\\httpd-mpm.conf
    

    「<IfModule mpm_winnt_module>」で検索し、「MaxConnectionsPerChild」の下に「ThreadStackSize 8388608」を追加します。

    例

    <IfModule mpm_winnt_module> 
       ThreadsPerChild 150 
       MaxConnectionsPerChild 0 
       ThreadStackSize 8388608 
    </IfModule>
    

    httpd-mpm.confを上書き保存します。

  5. コマンドプロンプトを新規に起動し、下記のコマンドを実行します。

    • コマンド
      cd C:\Apache24_2\bin
      httpd.exe
      
  6. WebブラウザからApacheのドキュメントルートページを表示し、「It works!」が画面に表示されていることを確認します。

    URL
    http://ssmapihost:49153
  7. コマンドプロンプトでctrl+cを入力し、起動中のhttpd.exeを終了させます。

  8. コマンドプロンプトで下記のコマンドを実行し、Windowsのサービスに「Apache24_2」を登録します。

    ※Apacheのサービス名は例です。

    • コマンド
      httpd.exe -k install -n "Apache24_2" -f "C:/Apache24_2/conf/httpd.conf"
      

    仕様補足

    「Apache24_2」を登録する前に、既存で運用しているApacheが稼働中の場合、Windowsのサービスから該当Apacheを停止してから登録してください。

  9. 「スタート」メニュー>「管理ツール」>「サービス」を選択し、「サービス」画面を表示します。

「Apache24_2」がサービスに登録されていることを確認します。

6.3 ApacheのThreadStackSize拡張

  1. Apacheの設定ファイル「httpd.conf」をテキストエディタで開きます。

    • 格納先
      %Apache24%\conf\httpd.conf
      

    仕様補足

    ※%Apache24%はApacheのインストール先を表します。これ以降も同様です。 例:C:\Apache24_2\conf\httpd.conf

  2. 「Include conf/extra/httpd-mpm.conf」で検索し、左の「#」を削除します。

    Include conf/extra/httpd-mpm.conf
    
  3. 「httpd.conf」を上書き保存します。

  4. Apacheの設定ファイル「httpd-mpm.conf」をテキストエディタで開きます。

    • 格納先
      %Apache24%\conf\extra\httpd-mpm.conf
      
  5. 「<IfModule mpm_winnt_module>」で検索し、「MaxConnectionsPerChild」の下に「ThreadStackSize 8388608」を追加します。

     <IfModule mpm_winnt_module>     
       ThreadsPerChild        150
       MaxConnectionsPerChild   0
       ThreadStackSize    8388608
     </IfModule>
    
  6. 「httpd-mpm.conf」を上書き保存します。

6.4 追加WEBAPIとApacheの接続設定

WEBサーバーとWEBアプリケーションを接続するための設定手順について説明します。

6.4.1 WEBサーバーのWSGI対応

WEBサーバーとPythonで作成されたWEBアプリケーションを接続するためには、WEBサーバーがWSGI(Web Server Gateway Interface)に対応している必要があります。

しかし、ApacheはWSGIに対応していないため、以下の手順でWSGIに対応させます。

  1. APIサーバーに管理者権限のアカウントでログインします。

  2. コマンドプロンプトを新規に起動し、下記のコマンドを実行します。

    • コマンド
      cd C:\[仮想環境用のフォルダ名]
      .env\Scripts\activate
      
  3. 仮想環境で下記のコマンドを実行します。

    • コマンド
      mod_wsgi-express module-config
      

  4. コマンドの出力結果をコピーし、Apacheの設定ファイルに貼り付けます。

仕様補足

SSL通信を行う場合は、ApacheのSSL設定ファイル(httpd-ssl.conf)に貼り付けてください。

6.4.2 WEBサーバー起動時に実行されるWEBアプリケーションの起動スクリプト登録

WEBサーバー起動時に実行されるPythonのスクリプトを登録します。

例:通信ポートが49153、ccfspwebapiフォルダの格納先がC:\Program Files\CCFSP\の場合

  1. Apacheの設定ファイルに以下の内容を追記します。

    <VirtualHost *:49153>
        DocumentRoot "C:/Program Files/CCFSP/ccfspwebapi/"
        WSGIScriptAlias / "C:/Program Files/CCFSP/ccfspwebapi/wsgi.py"
        <Directory "C:/Program Files/CCFSP/ccfspwebapi">
            Require all granted
        </Directory>
        SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
    </VirtualHost>
    

仕様補足

SSL通信を行う場合は、ApacheのSSL設定ファイル(httpd-ssl.conf)に記述を追記してください。

仕様補足

Apacheの設定ファイル中では、Windowsでもパスセパレータとしてスラッシュを使用してください。

6.4.3 WEBサーバーの再起動

設定を反映させるため、WEBサーバーを再起動します。

  1. 「スタート」メニュー>「管理ツール」>「サービス」を選択し、「サービス」画面を表示します。

  2. 「Apache2.4」を右クリックし、「再起動(E)」をクリックします。

6.5 ウィルススキャンの除外

APIサーバーが稼働している環境において、アンチウィルスソフトのようなセキュリティ関連ソフトや、バックアップソフト等の予期しない動作により、パフォーマンスの影響や動作不調を起こす場合があります。

そのため、アプリケーションやミドルウェアのフォルダやファイルをリアルタイム検索から除外していただく必要があります。

各アンチウィルスソフトの除外設定手順に従い、設定を行ってください。

対象は 資料集「1.1 Senju Service Managerシステム」の9を参照してください。

6.6 WEBAPI初回起動タスクの設定

6.6.1 複数導入のWEBAPIへの対応

複数のWEBAPIを導入している場合、導入数分だけ同様にタスクを登録する必要があります。

本章の手順は 「5.4 WEBAPI初回起動タスクの設定」の1.~4.の手順を参考に実施してください。

なお、以下のパラメータについては起動中のWEBAPIおよびApacheにより指定が変わります。

  • <WEBAPI起動ポート番号>

  • <Apacheサービス名>

6.7 サーバーマネージャーの設定

Senju Service Managerでは、以下のWebAPIでWebSocket通信機能を使用しています。
・プロセス編集画面表示API
WebSocket通信機能を使用するためには、制御情報による機能の有効化以外に、
あらかじめSenju Service ManagerのWEBサーバーに対して、サーバーマネージャーから
WebSocketプロトコルの役割を追加する必要があります。



仕様補足

WebSocket通信機能を使用する機能を利用する場合は必ず実施してください。 利用しない場合は実施する必要はありません。

6.7.1 サーバーマネージャーのサーバー役割の追加設定

1.      サーバーマネージャーを起動して、「役割と機能の追加」を選択します。

2.      役割と機能の追加ウィザード画面の「開始する前に」で「次へ(N)>」ボタンを押下します。

3.      「インストールの種類の選択」で「次へ(N)>」ボタンを押下します。

4.      「サーバーの役割の選択」でWebサーバー(IIS)>アプリケーション開発>WebSocketプロトコルにチェックを入れ、「次へ(N)>」ボタンを押下します。

5.      「機能の選択」で「次へ(N)>」ボタンを押下します。

6.      「インストールオプションの確認」で「インストール(N)」ボタンを押下します。

7.      「インストールの進行状況」でインストールが完了したことを確認し、「閉じる」ボタンを押下します。

6.7.2 Application Host Helper Serviceの再起動

1.  サーバーマネージャーで「IIS」を選択後、サービスから「Application Host Helper Service」を選択し、右クリックから「サービスの再起動」を実行します。