ThingWorx Flow aktualisieren
Die manuelle Aktualisierung von ThingWorx Flow wird für die folgenden Versionen unterstützt:
Von einer älteren Version von 8.4.x auf eine neuere Version von 8.4.x.
Von 8.4.x auf 8.5.x.
Von einer älteren Version von 8.5.x auf eine neuere Version von 8.5.x.
* 
Ein manuelles Upgrade von einer neuen Installation von ThingWorx Flow 8.4.x auf 9.x ist nicht möglich. Soll ein Upgrade von einer neuen Installation von ThingWorx Flow 8.4.x auf 9.x durchgeführt werden, so müssen Sie ThingWorx Flow migrieren.
* 
Wenn Sie ein Upgrade von einer neuen Installation von ThingWorx Flow 8.5.x und höher auf 9.x durchführen möchten, müssen Sie das Installationsprogramm für ein automatisches Upgrade von ThingWorx Flow verwenden.
Für diese Vorgehensweise gehen wir davon aus, dass Sie derzeit <ältere 8.x.x-Version> verwenden und auf <neuere 8.x.x-Version> aktualisieren möchten.
Voraussetzungen
Stellen Sie vor dem Aktualisieren von ThingWorx Flow sicher, dass die folgenden Voraussetzungen erfüllt sind:
Sie verfügen über die erforderlichen Berechtigungen, um alle installierten Dateien für die Dienste zu ändern.
Sie haben das entsprechende ThingWorx Flow Patch-Update für Version <neuere 8.x.x-Version> für Ihr Betriebssystem von der Website PTC Software-Downloads heruntergeladen.
Dies sind die Hauptschritte des Prozesses:
Schritt 1: ThingWorx Foundation und ThingWorx Flow Dienste beenden
Verwenden Sie abhängig von Ihrem Betriebssystem die Dienststeuerungstools sc oder "Dienste" für Windows und sysctl für Linux, um die folgenden Dienste zu beenden:
ThingWorxOrchestrationNginx oder nginx
ThingWorx-Foundation
ThingWorx-Flow
RabbitMQ / rabbitmq.service
Stellen Sie sicher, dass alle entsprechenden Prozesse vollständig beendet sind. Jeder ausgeführte Prozess kann in späteren Phasen Probleme beim Aktualisieren der Ordner verursachen.
Schritt 2: Vorhandene Installation sichern
Sichern Sie Ihre vorhandene Installation, die u.a. Folgendes enthält:
Die Ordner ThingworxPlatform und ThingworxStorage im ThingWorx Foundation Installationsordner
Den Ordner ThingworxOrchestration, in dem ThingWorx Flow Komponenten installiert wurden
Die ThingWorx Foundation und ThingWorx Flow Datenbanken
Es wird dringend empfohlen, die integrierten Funktionen zum Erstellen von Sicherungen mit Ihrer Datenbanklösung zu verwenden.
Verwenden Sie in PostgreSQL das Tool pg_dump. Verwenden Sie unter Microsoft SQL Server SQL Server Management Studio.
Wenn Sie ThingWorx Flow und/oder ThingWorx Foundation auf virtuellen Maschinen installiert haben, verwenden Sie die native Schnappschussfunktion, um ein Update zurückzusetzen. Wenn Sie auf den Schnappschuss zurücksetzen, müssen Sie die Datenbanksicherung wiederherstellen, falls Ihre Datenbank auf einem separaten Server oder einer virtuellen Maschine gehostet wird.
Schritt 3: ThingWorx Foundation auf <neuere 8.x.x-Version> aktualisieren
Wenn Sie von 8.4.x auf 8.5.x aktualisieren, lesen Sie im englischen Handbuch Upgrade to ThingWorx 8.5 (Upgrade auf ThingWorx 8.5) den entsprechenden Abschnitt für Ihren Betriebssystem- und Datenbanktyp.
Wenn Sie von einer älteren Version von 8.4.x auf eine neuere Version von 8.4.x oder von einer älteren Version von 8.5.x auf eine neuere Version von 8.5.x aktualisieren, müssen Sie möglicherweise nur die Datei Thingworx.war ersetzen.
Schritt 4: Inhalt der TAR-Datei des ThingWorx Flow Updates in einen temporären Ordner extrahieren
1. Erstellen Sie im Ordner /ThingworxOrchestration den neuen Ordner modules-<neuere 8.x.x-Version>.
Der Ordner modules-<neuere 8.x.x-Version> muss parallel zum vorhandenen modules-Ordner erstellt werden.
2. Extrahieren Sie den Inhalt des Patch-Updates flow-upgrade-<neuere 8.x.x-Version>.tar.gz in den Ordner modules-<neuere 8.x.x-Version>.
Nachdem Sie den Inhalt der TAR-Datei extrahiert haben, muss der Ordner /ThingworxOrchestration/modules-neuere 8.x.x-Version/ die folgenden Ordner enthalten:
configs
db_seed
engine
exchange
lookup
oauth
8.4.12 und höher, 8.5.8 und höher – 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
(Nur Windows) 8.4.12 und höher, 8.5.8 und höher – nginx-1.18.0.zip
(Nur Windows) 8.4.12 und höher, 8.5.8 und höher – node-v12.16.3-win-x64.tar.gz
8.4.15 und höher, 8.5.11 und höher – node-v12.19.0-win-x64.tar.gz
Schritt 5: ThingWorx Flow Dienste durch ihre gepatchten Versionen ersetzen
1. Um das vorhandene ThingWorx Flow Konfigurations-Setup mit der gepatchten Software zusammenzuführen, kopieren Sie die folgenden spezifischen Dateien oder Ordner aus dem vorhandenen Ordner ThingWorxOrchestration/modules/ in den Ordner /ThingWorxOrchestration/modules-<neuere 8.x.x-Version>:
Kopieren von
Kopieren nach
/ThingworxOrchestration/modules/db_seed/config
/ThingworxOrchestration/modules-<neuere 8.x.x-Version>/db_seed/
/ThingworxOrchestration/modules/db_seed/migration_config.json
/ThingworxOrchestration/modules-<neuere 8.x.x-Version>/db_seed/
/ThingworxOrchestration/modules/db_seed/SHA1
Optional, nur wenn vorhanden.
/ThingworxOrchestration/modules-<neuere 8.x.x-Version>/db_seed/
/ThingworxOrchestration/modules/engine/config
/ThingworxOrchestration/modules-<neuere 8.x.x-Version>/engine/
/ThingworxOrchestration/modules/engine/deploymentConfig.json
/ThingworxOrchestration/modules-<neuere 8.x.x-Version>/engine/
/ThingworxOrchestration/modules/engine/SHA1
Optional, nur wenn vorhanden.
/ThingworxOrchestration/modules-<neuere 8.x.x-Version>/engine/
/ThingworxOrchestration/modules/exchange/config
/ThingworxOrchestration/modules-<neuere 8.x.x-Version>/exchange/
/ThingworxOrchestration/modules/exchange/deploymentConfig.json
/ThingworxOrchestration/modules-<neuere 8.x.x-Version>/exchange/
/ThingworxOrchestration/modules/exchange/SHA1
Optional, nur wenn vorhanden.
/ThingworxOrchestration/modules-<neuere 8.x.x-Version>/exchange/
/ThingworxOrchestration/modules/lookup/config
/ThingworxOrchestration/modules-<neuere 8.x.x-Version>/lookup/
/ThingworxOrchestration/modules/lookup/deploymentConfig.json
/ThingworxOrchestration/modules-<neuere 8.x.x-Version>/lookup/
/ThingworxOrchestration/modules/lookup/SHA1
Optional, nur wenn vorhanden.
/ThingworxOrchestration/modules-<neuere 8.x.x-Version>/lookup/
/ThingworxOrchestration/modules/oauth/config
/ThingworxOrchestration/modules-<neuere 8.x.x-Version>/oauth/
/ThingworxOrchestration/modules/oauth/deploymentConfig.json
/ThingworxOrchestration/modules-<neuere 8.x.x-Version>/oauth/
/ThingworxOrchestration/modules/oauth/SHA1
Optional, nur wenn vorhanden.
/ThingworxOrchestration/modules-<neuere 8.x.x-Version>/oauth/
/ThingworxOrchestration/modules/static-ux/config
/ThingworxOrchestration/modules-<neuere 8.x.x-Version>/static-ux/
/ThingworxOrchestration/modules/static-ux/SHA1
Optional, nur wenn vorhanden.
/ThingworxOrchestration/modules-<neuere 8.x.x-Version>/static-ux/
/ThingworxOrchestration/modules/trigger/config
/ThingworxOrchestration/modules-<neuere 8.x.x-Version>/trigger/
/ThingworxOrchestration/modules/trigger/deploymentConfig.json
/ThingworxOrchestration/modules-<neuere 8.x.x-Version>/trigger/
/ThingworxOrchestration/modules/trigger/SHA1
Optional, nur wenn vorhanden.
/ThingworxOrchestration/modules-<neuere 8.x.x-Version>/trigger/
/ThingworxOrchestration/modules/ux/config
/ThingworxOrchestration/modules-<neuere 8.x.x-Version>/ux/
/ThingworxOrchestration/modules/ux/deploymentConfig.json
/ThingworxOrchestration/modules-<neuere 8.x.x-Version>/ux/
/ThingworxOrchestration/modules/ux/SHA1
Optional, nur wenn vorhanden.
/ThingworxOrchestration/modules-<neuere 8.x.x-Version>/ux/
/ThingworxOrchestration/modules/orchestration.pm2.json
/ThingworxOrchestration/modules-<neuere 8.x.x-Version>/
/ThingworxOrchestration/modules/cache
/ThingworxOrchestration/modules-<neuere 8.x.x-Version>/
/ThingworxOrchestration/modules/node_modules/config
/ThingworxOrchestration/modules-<neuere 8.x.x-Version>/symphony-connectors/node_modules/
2. Verschieben Sie die folgenden Ordner und Dateien aus /ThingworxOrchestration/modules-<neuere 8.x.x-Version>/symphony-connectors/ zu /ThingworxOrchestration/modules-<neuere 8.x.x-Version>/:
node_modules
package.json
package-lock.json
3. Löschen Sie in /ThingworxOrchestration/modules-<neuere 8.x.x-Version>/ den leeren Ordner symphony-connectors.
4. Wenn Sie ein Upgrade von ThingWorx Flow 8.4.x auf ThingWorx Flow 8.5.x durchführen, fügen Sie die folgenden Zeilen zur Datei deploymentConfig.json im Ordner /ThingworxOrchestration/modules-<neuere 8.x.x-Version>/engine/ hinzu:
"ENGINE_SIZE": "1802",
"KILL_WORKER_AFTER_RUN": "false",
"AVAILABLE_WORKER_CHECK_TRIES": "10",
"AVAILABLE_WORKER_CHECK_INTERVAL": "3000",
"WORKER_DISMISS_INTERVAL": "1800",
5. Wenn Sie ein Upgrade von ThingWorx Flow 8.4.x auf ThingWorx Flow 8.5.x durchführen, fügen Sie die folgenden Zeilen zur Datei deploymentConfig.json im Ordner /ThingworxOrchestration/modules-<neuere 8.x.x-Version>/ux/ hinzu:
"EXCHANGE": {
"HOST": "localhost",
"PORT": "7822"
},
"lookup": {
"host": "http://localhost:8077"
},
6. Um Flow Dienstprogramme zu aktualisieren, führen Sie die folgenden Schritte aus:
a. Löschen Sie die folgenden Ordner aus /ThingWorxOrchestration/packages:
symphony-cli
symphony-deploy
symphony-sdk
symphony-test-helper
b. Verschieben Sie die folgenden Ordner aus /ThingworxOrchestration/modules-<neuere 8.x.x-Version> zu /ThingWorxOrchestration/packages:
symphony-cli
symphony-deploy
symphony-sdk
symphony-test-helper
c. Stellen Sie sicher, dass der Benutzer, der ThingWorx Flow installiert hat, über vollständige Besitzrechte und Berechtigungen für alle Flow Dienstprogramme verfügt.
Navigieren Sie beispielsweise zum Ordner /ThingWorxOrchestration/packages, und führen Sie den folgenden Befehl aus:
chown -R flowuser:flowuser symphony-cli
Ersetzen Sie flowuser durch den Benutzer, der das ThingWorx Flow Installationsprogramm ausgeführt hat.
7. (Nur Linux) Stellen Sie sicher, dass der Benutzer, der ThingWorx Flow installiert hat, über vollständige Besitzrechte und Berechtigungen für den Ordner modules-<neuere 8.x.x-Version> verfügt.
Navigieren Sie zum Ordner ThingWorxOrchestration, und führen Sie den folgenden Befehl aus:
chown -R flowuser:flowuser modules-<neuere 8.x.x-Version>
Ersetzen Sie flowuser durch den Benutzer, der das ThingWorx Flow Installationsprogramm ausgeführt hat.
8. (Nur Windows) Kopieren Sie den Ordner RabbitMQ aus dem Ordner modules in den Ordner modules-<neuere 8.x.x-Version>.
9. Nachdem Sie alle Konfigurationseinstellungen kopiert haben, müssen Sie die folgenden Ordner umbenennen:
a. Benennen Sie den vorhandenen Ordner modules in modules-<ältere 8.x.x-Version> um.
b. Benennen Sie den Ordner modules-<neuere 8.x.x-Version> in modules um.
* 
Unter Windows müssen Sie den Prozess epmd.exe beenden, bevor Sie mit dem Umbenennen der Ordner fortfahren.
Um beispielsweise die Ordner unter Linux umzubenennen, führen Sie die folgenden Befehle aus:
a. mv /ThingworxOrchestration/modules /ThingworxOrchestration/modules-<ältere 8.x.x-Version>
b. mv /ThingworxOrchestration/modules-<neuere 8.x.x-Version> /ThingworxOrchestration/modules
10. (Nur Linux) Navigieren Sie zum Ordner ThingWorxOrchestration, und führen Sie den folgenden Befehl aus, um vollständige Berechtigungen für den Ordner modules festzulegen:
chmod -R 777 modules
11. (Nur Linux) Navigieren Sie zum Ordner ThingWorxOrchestration/modules, und führen Sie den folgenden Befehl aus, um den richtigen Sicherheitskontext auf den Ordner static-ux festzulegen:
chcon -R -t httpd_sys_content_t static-ux
12. Benennen Sie die folgenden Ordner um, und verschieben Sie sie:
a. Benennen Sie den vorhandenen Ordner tw-security-common-nodejs unter /ThingWorxOrchestration/cryptography in tw-security-common-nodejs<ältere 8.x.x-Version> um.
b. Verschieben Sie den Ordner tw-security-common-nodejs aus /ThingworxOrchestration/modules/ nach /ThingWorxOrchestration/cryptography.
c. Stellen Sie sicher, dass der Benutzer, der ThingWorx Flow installiert hat, über vollständige Besitzrechte und Berechtigungen für den Ordner tw-security-common-nodejs verfügt.
Navigieren Sie beispielsweise zum Ordner /ThingWorxOrchestration/cryptography, und führen Sie den folgenden Befehl aus:
chown -R flowuser:flowuser tw-security-common-nodejs
Ersetzen Sie flowuser durch den Benutzer, der das ThingWorx Flow Installationsprogramm ausgeführt hat.
d. Wenn Sie auf 8.4.x aktualisieren, navigieren Sie zum Ordner /ThingWorxOrchestration/cryptography/tw-security-common-nodejs, und führen Sie die folgenden Befehle aus:
Führen Sie unter Windows npm install aus.
Führen Sie unter Linux sudo npm install aus.
Führen Sie unter Linux sudo chown -R flowuser:flowuser node_modules aus.
Ersetzen Sie flowuser durch den Benutzer, der das ThingWorx Flow Installationsprogramm ausgeführt hat.
Schritt 6: Nginx, PM2 und NodeJS aktualisieren, falls diese nicht bereits aktualisiert wurden (8.4.12 und höher, 8.5.8 und höher)
Überspringen Sie diesen Schritt, wenn Sie bereits eine der folgenden Versionen verwenden:
Nginx – 1.18.0
PM2 – 4.4.0
NodeJS – 12.19.x
* 
Wenn Sie diesen Schritt überspringen, müssen Sie die folgenden Ordner aus dem Ordner modules löschen:
ptc-flow-pm2 / pm2
nginx-1.18.0.zip
node-v12.19.0-win-x64.tar.gz
Nginx
Windows
1. Benennen Sie C:\Programme\nginx-1.13.12 in C:\Programme\nginx-1.13.12_old um.
2. Extrahieren Sie aus <Flow Installationsverzeichnis>\modules die Datei nginx-1.18.0.zip unter C:\Programme. Stellen Sie sicher, dass die Datei C:\Programme\nginx-1.18.0\nginx.exe vorhanden ist.
3. Benennen Sie C:\Programme\nginx-1.18.0 in C:\Programme\nginx-1.13.12 um.
4. Ersetzen Sie die Datei C:\Programme\nginx-1.13.12\conf\nginx.conf durch die Datei C:\Programme\nginx-1.13.12_old\conf\nginx.conf.
5. Kopieren Sie die Datei C:\Programme\nginx-1.13.12_old\conf\conf.d in C:\Programme\nginx-1.13.12\conf\.
6. Löschen Sie nginx-1.18.0.zip aus <Flow Installationsverzeichnis>\modules.
Linux
1. Erstellen Sie die Datei /etc/yum.repos.d/nginx.repo mit dem folgenden Inhalt:
[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. Führen Sie den Befehl sudo yum upgrade nginx aus.
PM2
Windows
1. Sichern Sie den Ordner <Flow Installationsverzeichnis>\packages\ptc-flow-pm2\node_modules\pm2-windows-service-nosetup\src\daemon.
Wenn Sie ThingWorx Flow 8.4.x verwenden, so heißt der Ordner ptc-flow-pm2 pm2.
2. Benennen Sie den Ordner <Flow Installationsverzeichnis>\packages\ptc-flow-pm2 in ptc-flow-pm2_old um.
Wenn Sie ThingWorx Flow 8.4.x verwenden, benennen Sie pm2 in pm2_old um.
3. Gehen Sie bei einer Aktualisierung von 8.4.x folgendermaßen vor:
a. Verschieben Sie den Ordner pm2 von <Flow Installationsverzeichnis>\modules in <Flow Installationsverzeichnis>\packages und benennen Sie ihn in pm2 um.
b. Bearbeiten Sie die Datei <Flow Installationsverzeichnis>\packages\pm2\node_modules\pm2-windows-service-nosetup\src\daemon\thingworxflow.xml so, dass der folgende Pfad gültig ist:
<argument>C:\ThingWorxOrchestration\packages\pm2\node_modules\node-windows\lib\wrapper.js</argument>
c. Fügen Sie der Umgebungsvariable PATH Folgendes hinzu:
C:\ThingWorxOrchestration\packages\pm2\node_modules\.bin
d. Fügen Sie die folgende Umgebungsvariable hinzu:
PM2_SERVICE_PM2_DIR = C:\ThingWorxOrchestration\packages\pm2\node_modules\pm2
4. Wenn Sie von 8.5.x aktualisieren, ersetzen Sie den Ordner <Flow Installationsverzeichnis>\packages\ptc-flow-pm2 durch den Ordner ptc-flow-pm2 unter <Flow Installationsverzeichnis>\modules.
5. Kopieren Sie das gesicherte Daemon-Verzeichnis in <Flow Installationsverzeichnis>\packages\ptc-flow-pm2\node_module\pm2-windows-service-nosetup\src.
Wenn Sie ThingWorx Flow 8.4.x verwenden, so heißt der Ordner ptc-flow-pm2 pm2.
Linux
1. Ersetzen Sie <Flow Installationsverzeichnis>/packages/ptc-flow-pm2 durch den Ordner ptc-flow-pm2 unter <Flow Installationsverzeichnis>\modules.
Wenn Sie ThingWorx Flow 8.4.x verwenden, so heißt der Ordner ptc-flow-pm2 unter packages pm2.
2. Gehen Sie bei einer Aktualisierung von 8.4.x folgendermaßen vor:
a. Benennen Sie den Ordner <Flow Installationsverzeichnis>/packages/pm2 in pm2_old um.
b. Verschieben Sie den Ordner ptc-flow-pm2 von <Flow Installationsverzeichnis>/modules nach <Flow Installationsverzeichnis>/packages und benennen Sie ihn in pm2 um.
NodeJS
Windows
1. Extrahieren Sie node-v12.19.0-win-x64.tar.gz aus <Flow Installationsverzeichnis>\modules.
2. Ersetzen Sie den Ordner <Flow Installationsverzeichnis>\node durch den extrahierten Ordner.
3. Löschen Sie node-v12.19.0-win-x64.tar.gz aus <Flow Installationsverzeichnis>\modules.
Linux
Führen Sie die folgenden Befehle aus:
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
Schritt 7: Upload-Größe in Nginx auf 1 GB beschränken (nur für Upgrades von 8.4.x auf 8.5.x)
1. Suchen Sie in der Datei <Nginx Konfigurationsverzeichnis>\conf.d\vhost-flow.conf nach der folgenden Zeile:
client_max_body_size 18M;
2. Aktualisieren Sie den Wert von 18M auf 1000M.
3. Verifizieren Sie, dass das Ergebnis wie folgt aussieht:
client_max_body_size 1000M;
Schritt 8: Privaten Nginx-Schlüssel verschlüsseln (8.4.14 und höher, 8.5.10 und höher)
Im folgenden Abschnitt werden die Schritte beschrieben, die Sie ausführen müssen, um die vordefinierte Schlüsseldatei zu verschlüsseln. Wenn Sie eine andere .key -Datei verwenden, ersetzen Sie alle orchestration.key-Referenzen durch den Namen Ihrer Schlüsseldatei.
1. Erstellen Sie im Ordner <Flow Installationsverzeichnis>/SSL die Datei nginx-keyfile, die das Passwort für den verschlüsselten privaten Schlüssel enthält.
2. Verwenden Sie das Dienstprogramm openssl, um den folgenden Befehl auszuführen:
<openssl_cmd> rsa -aes256 -passout pass:<Dasselbe Passwort wie in nginx-keyfile definiert> -in "<Flow Installationsverzeichnis>\SSL\orchestration.key" -out "<Flow Installationsverzeichnis>\SSL\orchestration_enc.key"
Windows: <openssl_cmd>. Führen Sie cd C:/opscode/chef/embedded/bin aus, geben Sie openssl ein, und führen Sie den vorstehenden Befehl aus.
Linux: <openssl_cmd>. Geben Sie openssl ein, und führen Sie den vorstehenden Befehl aus.
3. Löschen Sie orchestration.key, und benennen Sie orchestration_enc.key in orchestration.key um.
4. Fügen Sie in der Datei <Nginx Konfigurationsverzeichnis>\conf.d\vhost-flow.conf die folgende Zeile nach dem Parameter ssl_certificate_key hinzu:
ssl_password_file "<Flow Installationsverzeichnis>\SSL\nginx-keyfile";
Dabei befindet sich <Nginx Konfigurationsverzeichnis> auf Windows unter C:\Programme\nginx-1.18.0\conf und auf Linux unter /etc/nginx.
5. Führen Sie die folgenden Befehle aus (nur Linux) :
a. sudo chown flowuser:flowuser <Flow Installationsverzeichnis>\SSL\orchestration.key, wobei flowuser der Benutzer ist, der das ThingWorx Flow Installationsprogramm ausgeführt hat.
b. sudo chcon -t httpd_sys_content_t <Flow Installationsverzeichnis>\SSL\orchestration.key
c. sudo chown flowuser:flowuser <Flow Installationsverzeichnis>\SSL\nginx-keyfile, wobei flowuser der Benutzer ist, der das ThingWorx Flow Installationsprogramm ausgeführt hat.
d. sudo chcon -t httpd_sys_content_t <Flow Installationsverzeichnis>\SSL\nginx-keyfile
Schritt 9: Sicherheitsänderungen an der Nginx-Konfiguration vornehmen (8.4.14 und höher, 8.5.10 und höher)
1. Aktualisieren Sie die Datei <Nginx Konfigurationsverzeichnis>\nginx.conf zum Schutz vor Brute-Force-Angriffen und aktivieren Sie den Grenzwert-Mechanismus in Nginx. Dadurch wird die Anzahl der Anforderungen, die von einer bestimmten IP-Adresse ausgeführt werden, eingeschränkt
a. Suchen Sie nach den folgenden Zeilen:
# 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. Kommentieren Sie die erste und letzte Zeile aus.
c. Ändern Sie den Grenzwert in der ersten Zeile in 500r/s.
* 
Sie können den Grenzwert (Anforderungen pro Sekunde) auch auf eine andere Zahl festlegen. 500r / s ist jedoch eine angemessene Anzahl von Anforderungen pro Sekunde, die von unzulässigen Clients nicht erreicht werden kann.
d. Verifizieren Sie, dass das Ergebnis wie folgt aussieht:
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. Aktualisieren Sie die Datei <Nginx Konfigurationsverzeichnis>\nginx.conf, um den Cache-Control-Header auf no-cache festzulegen:
a. Suchen Sie nach der folgenden Zeile:
map $sent_http_content_type $expires {
b. Ändern Sie den Wert von text/html auf -1.
c. Verifizieren Sie, dass das Ergebnis wie folgt aussieht:
map $sent_http_content_type $expires {
default off;
text/html -1;
text/css 30d;
application/javascript 7d;
~image/ 30d;
}
3. Aktualisieren Sie die Datei <Nginx Konfigurationsverzeichnis>\conf.d\vhost-flow.conf, um die HTTP-Methode HEAD zu blockieren:
a. Suchen Sie nach den folgenden Zeilen:
if ($scheme = "https") {
set $secure_var "secure";
}
b. Fügen Sie die folgenden Zeilen vor den obigen Zeilen hinzu:
# block 'head' http method for security reasons
if ($request_method = 'HEAD') {
return 405;
}
c. Verifizieren Sie, dass das Ergebnis wie folgt aussieht:
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. Aktualisieren Sie die Datei <Nginx Konfigurationsverzeichnis>\conf.d\vhost-flow.conf, um externe Umleitungen zu location ~ ^(/config|/js|/locales|/resources) zu vermeiden:
a. Suchen Sie nach den folgenden Zeilen:
location /Thingworx/Flow {
rewrite /Thingworx/Flow/(.*) /$1 break;
try_files $uri $uri/ @flow_api;
}
b. Ändern Sie try_files $uri $uri/ @flow_api; in try_files $uri @flow_api;.
c. Fügen Sie die folgenden Zeilen nach den obigen Zeilen hinzu:
# avoid external redirects for bellow locations
location ~ ^(/config|/js|/locales|/resources) {
internal;
}
d. Verifizieren Sie, dass das Ergebnis wie folgt aussieht:
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. Aktualisieren Sie die Datei <Nginx Konfigurationsverzeichnis>\conf.d\vhost-flow.conf, um die HTTP-Methode options zu blockieren, und den folgenden Speicherorten einen Grenzwert zum Schutz vor Brute-Force-Angriffen hinzuzufügen:
Speicherort
Schritt 1: Speicherort suchen
Schritt 2: Angegebenen Inhalt nach dem Speicherort hinzufügen
Schritt 3: Angegebene Zeile auskommentieren
Schritt 4: Angegebenen Inhalt zur auskommentierten Zeile hinzufügen
Schritt 5: Ergebnis verifizieren
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. Aktualisieren Sie die Datei <Nginx Konfigurationsverzeichnis>\conf.d\vhost-flow.conf, um einen Grenzwert für Brute-Force-Schutz für die folgenden Speicherorte hinzuzufügen:
Speicherort
Schritt 1: Speicherort suchen
Schritt 2: Angegebene Zeile auskommentieren
Schritt 3: Angegebenen Inhalt zur auskommentierten Zeile hinzufügen
Schritt 4: Ergebnis verifizieren
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;
Schritt 10 (optional): Konfigurationsänderungen an ThingWorx Foundation und ThingWorx Flow vornehmen
Nehmen Sie bei Bedarf Konfigurationsänderungen an den ThingWorx Foundation und ThingWorx Flow Diensten vor.
Dies kann erforderlich sein, wenn ein Patch neue Konfigurationseinstellungen einführt. Einzelheiten zu den neuen Konfigurationseinstellungen und den Dateien, in denen sie verwendet werden können, finden Sie in den Versionshinweisen.
Schritt 11: Erneutes Seeding der Datenbank mit den neuesten Updates für ThingWorx Flow durchführen
Das erneute Seeding der ThingWorx Flow Datenbank wirkt sich nicht auf vorhandene Entitäten im Besitz eines Benutzers aus, wie Workflows oder Trigger.
1. Starten Sie die Eingabeaufforderung, und navigieren Sie zu /ThingWorxOrchestration/modules/db_seed.
2. Führen Sie den folgenden Befehl aus:
flow-deploy migrate -u <Flow DB-Benutzername> -p <Flow DB-Passwort> -s <Flow Installationsverzeichnis>
Führen Sie unter Linux den Befehl flow-deploy als Nicht-Root-Benutzer aus.
Schritt 12 (optional): Benutzerdefinierte Konnektoren bereitstellen
* 
Führen Sie die Schritte in diesem Abschnitt nur dann aus, wenn Sie benutzerdefinierte Konnektoren mit dem ThingWorx Flow SDK entwickelt haben.
1. Stellen Sie sicher, dass der Quellcode auf demselben System verfügbar ist.
2. Navigieren Sie zum Stammverzeichnis des Konnektors, und führen Sie den Befehl flow-deploy connector aus.
Weitere Informationen finden Sie unter Konnektoren bereitstellen.
3. Führen Sie den folgenden Befehl aus, um ein Seeding für den benutzerdefinierten Konnektor in der Datenbank durchzuführen:
flow-deploy migrate -u <Flow DB-Benutzername> -p <Flow DB-Passwort> -s <Flow Installationsverzeichnis>
Schritt 13: Dienste starten und ihren Status verifizieren
1. Starten Sie die in Schritt 1 beendeten Dienste in der folgenden Reihenfolge:
a. RabbitMQ / rabbitmq.service
* 
Prüfen Sie die RabbitMQ-Protokolle, um sicherzustellen, dass der RabbitMQ-Dienst vollständig gestartet wurde, bevor Sie den nächsten Dienst starten.
Windows: /ThingworxOrchestration/modules/RabbitMQ/log/rabbit@{hostname}.log
Linux: /var/log/rabbitmq/rabbit@{hostname}.log
b. ThingWorx-Foundation
c. ThingWorx-Flow
d. ThingWorxOrchestrationNginx oder nginx
2. Überprüfen Sie die ThingWorx Foundation Protokolle, und stellen Sie sicher, dass während des Starts keine unerwarteten Fehler oder Warnungen aufgetreten sind.
3. Öffnen Sie die Eingabeaufforderung, und führen Sie den folgenden Befehl aus, um zu überprüfen, ob ThingWorx Flow ordnungsgemäß aktualisiert wurde:
pm2 ls
Die folgenden ThingWorx Flow Komponenten müssen den Status "online" haben:
flow-api
flow-engine
flow-exchange
flow-lookup
flow-oauth-server
flow-trigger
Um Protokolle eines einzelnen Diensts anzuzeigen, führen Sie den Befehl pm2 logs <Dienstname> aus.
Schritt 14: Workflow-Untersystem neu starten
1. Melden Sie sich bei ThingWorx Foundation an.
2. Navigieren Sie zu Untersystem > Workflow-Untersystem.
3. Klicken Sie auf Neu starten.
Schritt 15: Verifizieren, ob die Funktion wie erwartet funktioniert
Testen Sie die Funktionalität in ThingWorx Foundation und ThingWorx Flow, um sicherzustellen, dass sie wie erwartet funktionieren. Verifizieren Sie, ob Sie Workflows in ThingWorx Composer und im Workflow-Editor erstellen können. Sie können beispielsweise die folgenden Aufgaben ausführen:
Melden Sie sich beim ThingWorx Flow Dashboard an. Informationen zum Zugreifen auf ThingWorx Flow und ThingWorx Composer finden Sie unter Accessing ThingWorx Flow and ThingWorx Composer.
Erstellen Sie Autorisierungen und Verbindungen für jeden Konnektor, den Sie verwenden möchten.
Schritt 16: Ordner "tw-security-common-nodejs_<ältere 8.x.x-Version>" löschen
Löschen Sie den Ordner tw-security-common-nodejs_<ältere 8.x.x-Version> aus dem Ordner /ThingWorxOrchestration/cryptography.
Schritt 17 (optional): Ordner "modules-<ältere 8.x.x-Version>" löschen
Sobald Sie validiert und verifiziert haben, dass das Update erfolgreich war und Flüsse erfolgreich ausgeführt werden (und die vorherige Version nicht mehr benötigt wird), löschen Sie den Ordner modules-<ältere 8.x.x-Version>.
Sie haben ThingWorx Flow erfolgreich aktualisiert.
* 
Wenn die Flussausführung in der Engine abrupt angehalten wird, führen Sie die Schritte unter Problembehandlung für die ThingWorx Flow Installation aus.