ThingWorx Flow > ThingWorx Flow のインストールと管理 > ThingWorx Flow のアップデート
ThingWorx Flow のアップデート
次のバージョンでは、ThingWorx Flow の手動のアップデートがサポートされています。
8.4.x の古いバージョンから 8.4.x の新しいバージョンへ。
8.4.x から 8.5.x へ。
8.5.x の古いバージョンから 8.5.x の新しいバージョンへ。
* 
ThingWorx Flow 8.4.x の新規インストールから 9.x に手動でアップグレードすることはできません。ThingWorx Flow 8.4.x の新規インストールから 9.x にアップグレードする場合は、 ThingWorx Flow のマイグレーションを実行する必要があります。
* 
ThingWorx Flow 8.5.x 以降の新規インストールから 9.x にアップグレードする場合は、 ThingWorx Flow 自動アップグレードインストーラを使用する必要があります。
この手順では、現在の <古い 8.x.x> から <新しい 8.x.x> にアップデートするものとします。
必要条件
ThingWorx Flow をアップデートする前に、以下の前提条件を設定していることを確認してください。
サービスのインストール済みのすべてのファイルを修正するために必要な権限がある。
PTC ソフトウェアダウンロード Web サイトから、お使いのオペレーティングシステムに適した ThingWorx Flow パッチアップデート <新しい 8.x.x> バージョンをダウンロードしている。
このプロセスの主な手順は以下のとおりです。
手順 1: ThingWorx Foundation および ThingWorx Flow のサービスの停止
お使いのオペレーティングシステムに応じて、サービスコントロールツール (Windows の場合は sc または「サービス」、Linux の場合は sysctl) を使用して以下のサービスを停止します。
ThingWorxOrchestrationNginx または nginx
ThingWorx-Foundation
ThingWorx-Flow
RabbitMQ / rabbitmq.service
各プロセスすべてが完全に停止していることを確認します。実行中のプロセスがある場合、以降の段階でフォルダの更新中に問題が発生する可能性があります。
手順 2: 既存のインストールのバックアップ
以下などが含まれている既存のインストールをバックアップします。
ThingWorx Foundation インストールフォルダ内の ThingworxPlatform および ThingworxStorage のフォルダ
ThingWorx Flow コンポーネントがインストールされていた ThingworxOrchestration フォルダ
ThingWorx Foundation および ThingWorx Flow のデータベース
データベースソリューションでは組み込みの機能を使用してバックアップを作成することを強くお勧めします。
PostgreSQL では、pg_dump ツールを使用します。Microsoft SQL Server では、SQL Server Management Studio を使用します。
ThingWorx FlowThingWorx Foundation、またはその両方を仮想マシンにインストールしている場合、ネイティブスナップショット機能を使用してアップデートをロールバックします。データベースが別個のサーバーまたは仮想マシンでホストされている場合、スナップショットに戻すにはデータベースバックアップを復元しなければなりません。
手順 3: ThingWorx Foundation の <新しい 8.x.x> への更新
8.4.x から 8.5x にアップデートする場合は、 「Upgrading to ThingWorx 8.5」ガイドで、お使いのオペレーティングシステムとデータベースタイプに該当するセクションを参照してください。
8.4.x の古いバージョンから 8.4.x の新しいバージョン、または 8.5.x の古いバージョンから 8.5.x の新しいバージョンにアップデートする場合は、Thingworx.war ファイルのみの置換が必要となる可能性があります。
手順 4: テンポラリフォルダへの ThingWorx Flow アップデート tar コンテンツの抽出
1. /ThingworxOrchestration フォルダ内に、modules-<新しい 8.x.x> という新規フォルダを作成します。
この modules-<新しい 8.x.x> フォルダは既存の modules フォルダと並列でなければなりません。
2. flow-upgrade-<新しい 8.x.x>.tar.gz パッチアップデートのコンテンツを modules-<新しい 8.x.x> フォルダに抽出します。
tar のコンテンツを抽出した後、/ThingworxOrchestration/modules-<新しい 8.x>/ フォルダには次のフォルダが含まれていなければなりません。
configs
db_seed
engine
exchange
lookup
oauth
8.4.12 以降、8.5.8 以降 - ptc-flow-pm2 / pm2
README.pdf
static-ux
symphony-cli
symphony-connectors
symphony-deploy
symphony-sdk
symphony-test-helper
trigger
tw-security-common-nodejs
ux
(Windows のみ) 8.4.12 以降、8.5.8 以降 - nginx-1.18.0.zip
(Windows のみ) 8.4.12 以降、8.5.8 以降 - node-v12.16.3-win-x64.tar.gz
8.4.15 以降、8.5.11 以降 - node-v12.19.0-win-x64.tar.gz
手順 5: パッチバージョンへの ThingWorx Flow サービスの置き換え
1. ThingWorx Flow の既存のコンフィギュレーション設定をパッチソフトウェアにマージするため、既存の ThingWorxOrchestration/modules/ フォルダから /ThingWorxOrchestration/modules-<新しい 8.x> フォルダに以下の特定のファイルまたはフォルダをコピーします。
コピー元
コピー先
/ThingworxOrchestration/modules/db_seed/config
/ThingworxOrchestration/modules-<新しい 8.x.x>/db_seed/
/ThingworxOrchestration/modules/db_seed/migration_config.json
/ThingworxOrchestration/modules-<新しい 8.x.x>/db_seed/
/ThingworxOrchestration/modules/db_seed/SHA1
オプション。存在する場合のみ。
/ThingworxOrchestration/modules-<新しい 8.x.x>/db_seed/
/ThingworxOrchestration/modules/engine/config
/ThingworxOrchestration/modules-<新しい 8.x.x>/engine/
/ThingworxOrchestration/modules/engine/deploymentConfig.json
/ThingworxOrchestration/modules-<新しい 8.x.x>/engine/
/ThingworxOrchestration/modules/engine/SHA1
オプション。存在する場合のみ。
/ThingworxOrchestration/modules-<新しい 8.x.x>/engine/
/ThingworxOrchestration/modules/exchange/config
/ThingworxOrchestration/modules-<新しい 8.x.x>/exchange/
/ThingworxOrchestration/modules/exchange/deploymentConfig.json
/ThingworxOrchestration/modules-<新しい 8.x.x>/exchange/
/ThingworxOrchestration/modules/exchange/SHA1
オプション。存在する場合のみ。
/ThingworxOrchestration/modules-<新しい 8.x.x>/exchange/
/ThingworxOrchestration/modules/lookup/config
/ThingworxOrchestration/modules-<新しい 8.x.x>/lookup/
/ThingworxOrchestration/modules/lookup/deploymentConfig.json
/ThingworxOrchestration/modules-<新しい 8.x.x>/lookup/
/ThingworxOrchestration/modules/lookup/SHA1
オプション。存在する場合のみ。
/ThingworxOrchestration/modules-<新しい 8.x.x>/lookup/
/ThingworxOrchestration/modules/oauth/config
/ThingworxOrchestration/modules-<新しい 8.x.x>/oauth/
/ThingworxOrchestration/modules/oauth/deploymentConfig.json
/ThingworxOrchestration/modules-<新しい 8.x.x>/oauth/
/ThingworxOrchestration/modules/oauth/SHA1
オプション。存在する場合のみ。
/ThingworxOrchestration/modules-<新しい 8.x.x>/oauth/
/ThingworxOrchestration/modules/static-ux/config
/ThingworxOrchestration/modules-<新しい 8.x.x>/static-ux/
/ThingworxOrchestration/modules/static-ux/SHA1
オプション。存在する場合のみ。
/ThingworxOrchestration/modules-<新しい 8.x.x>/static-ux/
/ThingworxOrchestration/modules/trigger/config
/ThingworxOrchestration/modules-<新しい 8.x.x>/trigger/
/ThingworxOrchestration/modules/trigger/deploymentConfig.json
/ThingworxOrchestration/modules-<新しい 8.x.x>/trigger/
/ThingworxOrchestration/modules/trigger/SHA1
オプション。存在する場合のみ。
/ThingworxOrchestration/modules-<新しい 8.x.x>/trigger/
/ThingworxOrchestration/modules/ux/config
/ThingworxOrchestration/modules-<新しい 8.x.x>/ux/
/ThingworxOrchestration/modules/ux/deploymentConfig.json
/ThingworxOrchestration/modules-<新しい 8.x.x>/ux/
/ThingworxOrchestration/modules/ux/SHA1
オプション。存在する場合のみ。
/ThingworxOrchestration/modules-<新しい 8.x.x>/ux/
/ThingworxOrchestration/modules/orchestration.pm2.json
/ThingworxOrchestration/modules-<新しい 8.x.x>/
/ThingworxOrchestration/modules/cache
/ThingworxOrchestration/modules-<新しい 8.x.x>/
/ThingworxOrchestration/modules/node_modules/config
/ThingworxOrchestration/modules-<新しい 8.x.x>/symphony-connectors/node_modules/
2. 以下のフォルダとファイルを /ThingworxOrchestration/modules-<新しい 8.x.x>/symphony-connectors/ から /ThingworxOrchestration/modules-<新しい 8.x.x>/ に移動します。
node_modules
package.json
package-lock.json
3. /ThingworxOrchestration/modules-<新しい 8.x.x>/ から、空の symphony-connectors フォルダを削除します。
4. ThingWorx Flow 8.4.x から ThingWorx Flow 8.5.x にアップグレードする場合は、/ThingworxOrchestration/modules-<新しい 8.x.x>/engine/ フォルダの deploymentConfig.json ファイルに、次の行を追加します。
"ENGINE_SIZE": "1802",
"KILL_WORKER_AFTER_RUN": "false",
"AVAILABLE_WORKER_CHECK_TRIES": "10",
"AVAILABLE_WORKER_CHECK_INTERVAL": "3000",
"WORKER_DISMISS_INTERVAL": "1800",
5. ThingWorx Flow 8.4.x から ThingWorx Flow 8.5.x にアップグレードする場合は、/ThingworxOrchestration/modules-<newer-8.x.x>/ux/ フォルダの deploymentConfig.json ファイルに、次の行を追加します。
"EXCHANGE": {
"HOST": "localhost",
"PORT": "7822"
},
"lookup": {
"host": "http://localhost:8077"
},
6. Flow ユーティリティをアップデートするには、以下の手順を実行します。
a. 次のフォルダを /ThingWorxOrchestration/packages から削除します。
symphony-cli
symphony-deploy
symphony-sdk
symphony-test-helper
b. 次のフォルダを /ThingworxOrchestration/modules-<新しい 8.x.x> から /ThingWorxOrchestration/packages に移動します。
symphony-cli
symphony-deploy
symphony-sdk
symphony-test-helper
c. ThingWorx Flow をインストールしたユーザーがすべての Flow ユーティリティに対する完全な所有権とアクセス許可を持っていることを確認します。
たとえば、/ThingWorxOrchestration/packages フォルダに移動し、以下のコマンドを実行します。
chown -R flowuser:flowuser symphony-cli
flowuser を、ThingWorx Flow インストーラを実行したユーザーに置き換えます。
7. (Linux のみ) ThingWorx Flow をインストールしたユーザーが modules-<新しい 8.x.x> フォルダに対する完全な所有権とアクセス許可を持っていることを確認します。
ThingWorxOrchestration フォルダに移動し、以下のコマンドを実行します。
chown -R flowuser:flowuser modules-<新しい 8.x.x>
flowuser を、ThingWorx Flow インストーラを実行したユーザーに置き換えます。
8. (Windows のみ) modules フォルダから modules-<新しい 8.x.x> フォルダに RabbitMQ フォルダをコピーします。
9. すべてのコンフィギュレーション設定をコピーした後で、以下のフォルダの名前を変更しなければなりません。
a. 既存の modules フォルダの名前を modules-<古い 8.x.x> に変更します。
b. modules-<新しい 8.x.x> フォルダの名前を modules に変更します。
* 
Windows では、フォルダ名の変更に進む前に、epmd.exe プロセスを停止しなければなりません。
たとえば、Linux 上のフォルダの名前を変更するには、以下のコマンドを実行します。
a. mv /ThingworxOrchestration/modules /ThingworxOrchestration/modules-<古い 8.x.x>
b. mv /ThingworxOrchestration/modules-<新しい 8.x.x> /ThingworxOrchestration/modules
10. (Linux のみ) ThingWorxOrchestration フォルダに移動して、次のコマンドを実行して modules フォルダにフルアクセス許可を設定します。
chmod -R 777 modules
11. (Linux のみ) ThingWorxOrchestration/modules フォルダに移動して、次のコマンドを実行して static-ux フォルダに正しいセキュリティコンテキストを設定します。
chcon -R -t httpd_sys_content_t static-ux
12. 以下のフォルダの名前変更と移動を行います。
a. /ThingWorxOrchestration/cryptography にある既存の tw-security-common-nodejs フォルダの名前を tw-security-common-nodejs_<古い 8.x.x> に変更します。
b. tw-security-common-nodejs フォルダを /ThingworxOrchestration/modules/ から /ThingWorxOrchestration/cryptography に移動します。
c. ThingWorx Flow をインストールしたユーザーが tw-security-common-nodejs フォルダに対する完全な所有権とアクセス許可を持っていることを確認します。
たとえば、/ThingWorxOrchestration/cryptography フォルダに移動し、以下のコマンドを実行します。
chown -R flowuser:flowuser tw-security-common-nodejs
flowuser を、ThingWorx Flow インストーラを実行したユーザーに置き換えます。
d. 8.4.x にアップデートする場合は、/ThingWorxOrchestration/cryptography/tw-security-common-nodejs フォルダに移動して、次のコマンドを実行します。
Windows では、npm install を実行します。
Linux では、sudo npm install を実行します。
Linux では、sudo chown -R flowuser:flowuser node_modules を実行します。
flowuser を、ThingWorx Flow インストーラを実行したユーザーに置き換えます。
手順 6: Nginx、PM2、および NodeJS のアップデート (まだアップデートされていない場合) (8.4.12 以降、8.5.8 以降)
次のバージョンをすでに使用している場合は、この手順をスキップしてください。
Nginx - 1.18.0
PM2 - 4.4.0
NodeJS - 12.19.x
* 
この手順をスキップする場合は、modules フォルダから次のフォルダを削除します。
ptc-flow-pm2 / pm2
nginx-1.18.0.zip
node-v12.19.0-win-x64.tar.gz
Nginx
Windows
1. C:\Program Files\nginx-1.13.12C:\Program Files\nginx-1.13.12_old に名前変更します。
2. <Flow インストールディレクトリ>\modules から、nginx-1.18.0.zipC:\Program Files に抽出します。C:\Program Files\nginx-1.18.0\nginx.exe が表示されていることを確認します。
3. C:\Program Files\nginx-1.18.0C:\Program Files\nginx-1.13.12 に名前変更します。
4. C:\Program Files\nginx-1.13.12\conf\nginx.conf ファイルを C:\Program Files\nginx-1.13.12_old\conf\nginx.conf ファイルに置き換えます。
5. C:\Program Files\nginx-1.13.12_old\conf\conf.d ファイルを C:\Program Files\nginx-1.13.12\conf\ にコピーします。
6. <Flow インストールディレクトリ>\modules から nginx-1.18.0.zip を削除します。
Linux
1. 次のコンテンツを含む /etc/yum.repos.d/nginx.repo ファイルを作成します。
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
2. sudo yum upgrade nginx コマンドを実行します。
PM2
Windows
1. <Flow インストールディレクトリ>\packages\ptc-flow-pm2\node_modules\pm2-windows-service-nosetup\src\daemon フォルダのバックアップを作成します。
ThingWorx Flow 8.4.x の場合、ptc-flow-pm2 フォルダは pm2 と呼ばれます。
2. <Flow インストールディレクトリ>\packages\ptc-flow-pm2 フォルダの名前を ptc-flow-pm2_old に変更します。
ThingWorx Flow 8.4.x を使用している場合は、pm2pm2_old に名前変更します。
3. 8.4.x からアップデートする場合は、次の手順を実行します。
a. pm2 フォルダを <Flow インストールディレクトリ>\modules から <Flow インストールディレクトリ>\packages に移動し、その名前を pm2 に変更します。
b. <Flow インストールディレクトリ>\packages\pm2\node_modules\pm2-windows-service-nosetup\src\daemon\thingworxflow.xml ファイルを編集して、次のパスが有効になるようにします。
<argument>C:\ThingWorxOrchestration\packages\pm2\node_modules\node-windows\lib\wrapper.js</argument>
c. PATH 環境変数に以下を追加します。
C:\ThingWorxOrchestration\packages\pm2\node_modules\.bin
d. 次の環境変数を追加します。
PM2_SERVICE_PM2_DIR = C:\ThingWorxOrchestration\packages\pm2\node_modules\pm2
4. 8.5.x からアップデートする場合、<Flow インストールディレクトリ>\packages\ptc-flow-pm2<Flow インストールディレクトリ>\modules からの ptc-flow-pm2 フォルダに置き換えます。
5. バックアップした daemon ディレクトリを <Flow インストールディレクトリ>\packages\ptc-flow-pm2\node_module\pm2-windows-service-nosetup\src にコピーします。
ThingWorx Flow 8.4.x の場合、ptc-flow-pm2 フォルダは pm2 と呼ばれます。
Linux
1. <Flow インストールディレクトリ>/packages/ptc-flow-pm2<Flow インストールディレクトリ>\modules からの ptc-flow-pm2 フォルダに置き換えます。
ThingWorx Flow 8.4.x の packages の下の場合、ptc-flow-pm2 フォルダは pm2 と呼ばれます。
2. 8.4.x からアップデートする場合は、次の手順を実行します。
a. <Flow インストールディレクトリ>/packages/pm2 フォルダの名前を pm2_old に変更します。
b. ptc-flow-pm2 フォルダを <Flow インストールディレクトリ>/modules から <Flow インストールディレクトリ>/packages に移動し、その名前を pm2 に変更します。
NodeJS
Windows
1. <Flow インストールディレクトリ>\modules から、node-v12.19.0-win-x64.tar.gz を抽出します。
2. <Flow インストールディレクトリ>\node フォルダを抽出されたフォルダに置き換えます。
3. <Flow インストールディレクトリ>\modules から、node-v12.19.0-win-x64.tar.gz を削除します。
Linux
次のコマンドを実行します。
1. sudo su
2. sudo curl -sL https://rpm.nodesource.com/setup_12.x | bash
3. sudo yum install nodejs
4. sudo yum remove rh-nodejs8
5. sudo rm -R /opt/rh
手順 7: Nginx のアップロードサイズの 1 GB への制限 (8.4.x から 8.5.x へのアップグレードのみ)
1. <Nginx コンフィギュレーションディレクトリ>\conf.d\vhost-flow.conf ファイルで、次の行を検索します。
client_max_body_size 18M;
2. 値を 18M から 1000M に更新します。
3. 結果が次のようになっていることを確認します。
client_max_body_size 1000M;
手順 8: Nginx 秘密キーの暗号化 (8.4.14 以降、8.5.10 以降)
次のセクションでは、既成のキーファイルを暗号化するために実行する必要のある手順について説明します。別の .key ファイルを使用している場合は、すべての orchestration.key 参照を、使用しているキーファイル名で置き換えてください。
1. <Flow インストールディレクトリ>\SSL フォルダ内に、暗号化された秘密キーのパスワードを含む nginx-keyfile ファイルを作成します。
2. openssl ユーティリティを使用して、次のコマンドを実行します。
<openssl_cmd> rsa -aes256 -passout pass:<nginx-keyfile で定義されているものと同じパスワード> -in "<Flow インストールディレクトリ>\SSL\orchestration.key" -out "<Flow インストールディレクトリ>\SSL\orchestration_enc.key"
Windows の場合: <openssl_cmd> - cd C:/opscode/chef/embedded/bin を実行し、openssl と入力して上記のコマンドを実行します。
Linux の場合: <openssl_cmd> - openssl と入力して上記のコマンドを実行します。
3. orchestration.key を削除し、orchestration_enc.key の名前を orchestration.key に変更します。
4. <Nginx コンフィギュレーションディレクトリ>\conf.d\vhost-flow.conf ファイルで、ssl_certificate_key パラメータの後に次の行を追加します。
ssl_password_file "<Flow インストールディレクトリ>\SSL\nginx-keyfile";
ここで、<Nginx コンフィギュレーションディレクトリ> は、Windows では C:\Program Files\nginx-1.18.0\conf、Linux では /etc/nginx です。
5. (Linux のみ) 次のコマンドを実行します。
a. sudo chown flowuser:flowuser <Flow インストールディレクトリ>\SSL\orchestration.key。ここで flowuserThingWorx Flow インストーラを実行したユーザーです。
b. sudo chcon -t httpd_sys_content_t <Flow インストールディレクトリ>\SSL\orchestration.key
c. sudo chown flowuser:flowuser <Flow インストールディレクトリ>\SSL\nginx-keyfile。ここで flowuserThingWorx Flow インストーラを実行したユーザーです。
d. sudo chcon -t httpd_sys_content_t <Flow インストールディレクトリ>\SSL\nginx-keyfile
手順 9: Nginx コンフィギュレーションでのセキュリティの変更 (8.4.14 以降、8.5.10 以降)
1. <Nginx コンフィギュレーションディレクトリ>\nginx.conf ファイルを更新して、ブルート フォース攻撃から保護し、Nginx 内の速度制限メカニズムをオンにします。これにより、特定の IP アドレスから実行されるリクエストの数が制限されます。
a. 次の行を検索します。
# limit_req_zone $limit_key zone=by_ip:10m rate=100r/s;
# limit_req_zone $limit_method zone=post:10m rate=20r/s;
# limit_req_zone $request_uri zone=by_uri:10m rate=500r/m;
# # limit_req_zone "$binary_remote_addr$request_uri" zone=by_uri_ip:10m rate=2r/s;
# # limit_req_zone $http_authorization zone=by_oauth_token:100m rate=1r/m;
# limit_req_status 429;
b. 最初と最後の行をコメント解除します。
c. 最初の行で、速度 (rate) を 500r/s に修正します。
* 
速度 (1 秒あたりのリクエスト数) を別の数値に設定できます。ただし、500r/s は、違法クライアントが到達できない 1 秒あたりの適切なリクエスト数です。
d. 結果が次のようになっていることを確認します。
limit_req_zone $limit_key zone=by_ip:10m rate=500r/s;
# limit_req_zone $limit_method zone=post:10m rate=20r/s;
# limit_req_zone $request_uri zone=by_uri:10m rate=500r/m;
# # limit_req_zone "$binary_remote_addr$request_uri" zone=by_uri_ip:10m rate=2r/s;
# # limit_req_zone $http_authorization zone=by_oauth_token:100m rate=1r/m;
limit_req_status 429;
2. <Nginx コンフィギュレーションディレクトリ>\nginx.conf ファイルを更新して、cache-control ヘッダーを no-cache に設定します。
a. 次の行を検索します。
map $sent_http_content_type $expires {
b. text/html の値を -1 に変更します。
c. 結果が次のようになっていることを確認します。
map $sent_http_content_type $expires {
default off;
text/html -1;
text/css 30d;
application/javascript 7d;
~image/ 30d;
}
3. <Nginx コンフィギュレーションディレクトリ>\conf.d\vhost-flow.conf ファイルを更新して、HEAD HTTP メソッドをブロックします。
a. 次の行を検索します。
if ($scheme = "https") {
set $secure_var "secure";
}
b. 上記の行の前に次の行を追加します。
# block 'head' http method for security reasons
if ($request_method = 'HEAD') {
return 405;
}
c. 結果が次のようになっていることを確認します。
set $proxy_scheme $scheme;
# block 'head' http method for security reasons
if ($request_method = 'HEAD') {
return 405;
}
if ($scheme = "https") {
set $secure_var "secure";
}
4. <Nginx コンフィギュレーションディレクトリ>\conf.d\vhost-flow.conf ファイルを更新して、location ~ ^(/config|/js|/locales|/resources) への:外部のリダイレクトを避けます。
a. 次の行を検索します。
location /Thingworx/Flow {
rewrite /Thingworx/Flow/(.*) /$1 break;
try_files $uri $uri/ @flow_api;
}
b. try_files $uri $uri/ @flow_api;try_files $uri @flow_api; に変更します。
c. 上記の行の後に次の行を追加します。
# avoid external redirects for bellow locations
location ~ ^(/config|/js|/locales|/resources) {
internal;
}
d. 結果が次のようになっていることを確認します。
location /Thingworx/Flow {
rewrite /Thingworx/Flow/(.*) /$1 break;
try_files $uri @flow_api;
}
# avoid external redirects for bellow locations
location ~ ^(/config|/js|/locales|/resources) {
internal;
}
location @flow_api {
5. <Nginx コンフィギュレーションディレクトリ>\conf.d\vhost-flow.conf ファイルを更新して、次の場所で、options HTTP メソッドをブロックし、ブルートフォース保護の速度制限を追加します。
場所
手順 1: 場所を検索
手順 2: 指定したコンテンツをその場所の後に追加
手順 3: 指定した行のコメントを解除
手順 4: 指定したコンテンツをコメント解除した行に追加
手順 5: 結果を確認
location /Thingworx/Oauths
location /Thingworx/Oauths {
# limit_req zone=by_ip;
# limit_conn addr 500;
# block 'options' http method for security reasons
if ($request_method = 'OPTIONS') {
return 405;
}
# limit_req zone=by_ip;
burst=10 nodelay
location /Thingworx/Oauths {
# block 'options' http method for security reasons
if ($request_method = 'OPTIONS') {
return 405;
}
limit_req zone=by_ip burst=10 nodelay;
# limit_conn addr 500;
location /Thingworx/Triggers
location /Thingworx/Triggers {
# limit_req zone=by_ip;
# limit_conn addr 500;
# block 'options' http method for security reasons
if ($request_method = 'OPTIONS') {
return 405;
}
# limit_req zone=by_ip;
burst=10 nodelay
location /Thingworx/Triggers {
# block 'options' http method for security reasons
if ($request_method = 'OPTIONS') {
return 405;
}
limit_req zone=by_ip burst=10 nodelay;
# limit_conn addr 500;
location @flow_api
location @flow_api {
# limit_req zone=by_ip;
# limit_conn addr 500;
# block 'options' http method for security reasons
if ($request_method = 'OPTIONS') {
return 405;
}
# limit_req zone=by_ip;
burst=10 nodelay
location @flow_api {
# block 'options' http method for security reasons
if ($request_method = 'OPTIONS') {
return 405;
}
limit_req zone=by_ip burst=10 nodelay;
# limit_conn addr 500;
6. <Nginx コンフィギュレーションディレクトリ>\conf.d\vhost-flow.conf ファイルを更新して、次の場所のブルートフォース保護の速度制限を追加します。
場所
手順 1: 場所を検索
手順 2: 指定した行のコメントを解除
手順 3: 指定したコンテンツをコメント解除した行に追加
手順 4: 結果を確認
location /Thingworx/Composer/apps/flow
location /Thingworx/Composer/apps/flow {
rewrite /Thingworx/Composer/apps/flow/(.*) /$1 break;
# limit_req zone=by_ip;
# limit_conn addr 500;
# limit_req zone=by_ip;
burst=10 nodelay
location /Thingworx/Composer/apps/flow {
rewrite /Thingworx/Composer/apps/flow/(.*) /$1 break;
limit_req zone=by_ip burst=10 nodelay;
# limit_conn addr 500;
location ~* \.(jpg|jpeg|png|gif|ico|css|js|svg|woff2?)$
location ~* \.(jpg|jpeg|png|gif|ico|css|js|svg|woff2?)$ {
rewrite /Thingworx/Composer/apps/flow/(.*) /$1 break;
# limit_req zone=by_ip burst=10 nodelay;
expires $expires;
# limit_req zone=by_ip burst=10 nodelay;
location ~* \.(jpg|jpeg|png|gif|ico|css|js|svg|woff2?)$ {
rewrite /Thingworx/Composer/apps/flow/(.*) /$1 break;
limit_req zone=by_ip burst=10 nodelay;
expires $expires;
location /Thingworx/Lookups
location /Thingworx/Lookups {
# limit_req zone=by_ip;
burst=10 nodelay
location /Thingworx/Lookups {
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Methods' 'GET,POST,PUT,DELETE,OPTIONS,HEAD';
add_header 'Access-Control-Allow-Headers' 'Authorization, Content-Length, X-Requested-With, application_uid, application_id, application_api_key, authtoken, Content-Type';
add_header 'Access-Control-Max-Age' '1728000';
if ($request_method = 'OPTIONS') {
return 200;
}
limit_req zone=by_ip burst=10 nodelay;
# limit_conn addr 500;
location /Thingworx/WS
location /Thingworx/WS {
# limit_req zone=by_ip;
burst=10 nodelay
location /Thingworx/WS {
limit_req zone=by_ip burst=10 nodelay;
# limit_conn addr 500;
location /Thingworx/RemoteTunnel
location /Thingworx/RemoteTunnel {
# limit_req zone=by_ip;
burst=10 nodelay
location /Thingworx/RemoteTunnel {
limit_req zone=by_ip burst=10 nodelay;
# limit_conn addr 500;
location /Thingworx/WSTunnelClient/
location /Thingworx/WSTunnelClient/ {
# limit_req zone=by_ip;
burst=10 nodelay
location /Thingworx/WSTunnelClient/ {
limit_req zone=by_ip burst=10 nodelay;
# limit_conn addr 500;
location /Thingworx/WSTunnelServer/
location /Thingworx/WSTunnelServer/ {
# limit_req zone=by_ip;
burst=10 nodelay
location /Thingworx/WSTunnelServer/ {
limit_req zone=by_ip burst=10 nodelay;
# limit_conn addr 500;
location /Thingworx
location /Thingworx {
# limit_req zone=by_ip;
burst=10 nodelay
location /Thingworx {
limit_req zone=by_ip burst=10 nodelay;
# limit_conn addr 500;
(オプション) 手順 10: ThingWorx Foundation および ThingWorx Flow のコンフィギュレーションの変更
必要に応じて、ThingWorx Foundation および ThingWorx Flow サービスのコンフィギュレーションを変更します。
パッチによって新しいコンフィギュレーション設定が導入された場合には、これが必須となります。新規コンフィギュレーション設定およびそれらを使用可能なファイルの詳細については、 リリースノートを参照してください。
手順 11: ThingWorx Flow の最新のアップデートによるデータベースの再シード
ThingWorx Flow データベースを再シードしても、ワークフローやトリガーなど、ユーザーが所有する既存のエンティティには影響がありません。
1. コマンドプロンプトを開き、/ThingWorxOrchestration/modules/db_seed に移動します。
2. 以下のコマンドを実行します。
flow-deploy migrate -u <Flow DB ユーザー名> -p <Flow DB パスワード> -s <Flow インストールディレクトリ>
Linux では、非ルートユーザーとして flow-deploy コマンドを実行します。
(オプション) 手順 12: カスタムコネクタの展開
* 
このセクションの手順は、ThingWorx Flow SDK を使用してカスタムコネクタを開発している場合にのみ実行します。
1. 同じシステム上にソースコードがあることを確認します。
2. コネクタのルートディレクトリに移動し、flow-deploy connector コマンドを実行します。
詳細については、 コネクタの展開を参照してください。
3. 以下のコマンドを実行して、データベース内にカスタムコネクタをシードします。
flow-deploy migrate -u <Flow DB ユーザー名> -p <Flow DB パスワード> -s <Flow インストールディレクトリ>
手順 13: サービスの開始およびステータスの確認
1. 手順 1 で停止したサービスを以下の順序で開始します。
a. RabbitMQ / rabbitmq.service
* 
次のサービスを開始する前に、RabbitMQ のログを見て RabbitMQ サービスが完全に開始していることを確認します。
Windows: /ThingworxOrchestration/modules/RabbitMQ/log/rabbit@{ホスト名}.log
Linux: /var/log/rabbitmq/rabbit@{ホスト名}.log
b. ThingWorx-Foundation
c. ThingWorx-Flow
d. ThingWorxOrchestrationNginx または nginx
2. ThingWorx Foundation のログを見て、起動時に予期しないエラーまたは警告が発生していないことを確認します。
3. ThingWorx Flow が正しくアップデートされたことを確認するには、管理者としてコマンドプロンプトを起動し、以下のコマンドを実行します。
pm2 ls
以下の ThingWorx Flow コンポーネントのステータスが 'online' でなければなりません。
flow-api
flow-engine
flow-exchange
flow-lookup
flow-oauth-server
flow-trigger
個々のサービスのログを表示するには、pm2 logs <サービス名> コマンドを実行します。
手順 14: 「ワークフローサブシステム」の再起動
1. ThingWorx Foundation にログインします。
2. 「サブシステム」 > 「ワークフローサブシステム」に移動します。
3. 「再起動」をクリックします。
手順 15: 機能が予想どおりに動作していることの確認
ThingWorx Foundation および ThingWorx Flow で機能をテストして、予想どおりに動作していることを確認します。ThingWorx Composer およびワークフローエディタで、ワークフローを作成できることを確認します。たとえば、次のタスクを実行できます。
ThingWorx Flow ダッシュボードにログインします。ThingWorx Flow および ThingWorx Composer にアクセスする方法については、 ThingWorx Flow および ThingWorx Composer へのアクセスを参照してください。
使用する各コネクタの 承認接続を作成します。
必要に応じて、 ワークフロー内にトリガを作成してテストします。
手順 16: tw-security-common-nodejs_<古い 8.x.x> フォルダの削除
/ThingWorxOrchestration/cryptography フォルダから、tw-security-common-nodejs_<古い 8.x.x> フォルダを削除します。
(オプション) 手順 17: modules-<古い 8.x.x> フォルダの削除
アップデートに成功してフローが正常に実行している (以前のリリースが不要になった) ことを確認した後で、modules-<古い 8.x.x> フォルダを削除します。
ThingWorx Flow のアップデートに成功しました。
* 
エンジンでフローの実行が突然停止した場合は、 ThingWorx Flow インストールのトラブルシューティングの手順に従います。