Mise à jour de ThingWorx Flow
La mise à jour manuelle de ThingWorx Flow est prise en charge pour les versions suivantes :
D'une version antérieure de 8.4.x vers une version ultérieure de 8.4.x.
De 8.4.x à 8.5.x.
D'une version antérieure de 8.5.x vers une version ultérieure de 8.5.x.
* 
La mise à niveau manuelle d'une nouvelle installation de ThingWorx Flow 8.4.x vers 9.x n'est pas disponible. Si vous souhaitez effectuer une mise à niveau à partir d'une nouvelle installation de ThingWorx Flow 8.4.x vers 9.x, vous devez procéder à une migration de ThingWorx Flow.
* 
Si vous souhaitez effectuer une mise à niveau à partir d'une nouvelle installation de ThingWorx Flow 8.5.x et version ultérieure vers 9.x, vous devez utiliser le programme d'installation de mise à niveau automatisé de ThingWorx Flow.
Pour cette procédure, supposons que vous disposiez actuellement d'une version <antérieure-8.x.x> et que vous souhaitiez la mettre à jour vers une version <ultérieure-8.x.x>.
Prérequis
Avant de procéder à la mise à jour de ThingWorx Flow, assurez-vous que les conditions requises suivantes sont remplies :
Vous disposez des droits nécessaires pour modifier tous les fichiers installés pour les services.
Vous avez téléchargé la version <ultérieure-8.x.x> appropriée pour votre système d'exploitation du correctif de mise à jour de ThingWorx Flow depuis la page des téléchargements de logiciels de PTC.
Voici les principales étapes du processus :
Etape 1 : Arrêt des services ThingWorx Foundation et ThingWorx Flow
En fonction de votre système d'exploitation, utilisez les outils de contrôle de services (sc ou Services pour Windows, et sysctl pour Linux) pour arrêter les services suivants :
ThingWorxOrchestrationNginx ou nginx
ThingWorx-Foundation
ThingWorx-Flow
RabbitMQ / rabbitmq.service
Assurez-vous que tous les processus respectifs sont complètement arrêtés. Tout processus en cours d'exécution peut entraîner des problèmes lors des étapes ultérieures de mise à jour des dossiers.
Etape 2 : Sauvegarde de votre installation existante
Sauvegardez votre installation existante qui inclut, sans s'y limiter, les éléments suivants :
Dossiers ThingworxPlatform et ThingworxStorage de votre dossier d'installation ThingWorx Foundation
Dossier ThingworxOrchestration dans lequel les composants ThingWorx Flow ont été installés
Bases de données ThingWorx Foundation et ThingWorx Flow
Il est vivement recommandé d'utiliser les outils intégrés pour créer des sauvegardes avec votre solution de base de données.
Sur PostgreSQL, utilisez l'outil pg_dump. Sur Microsoft SQL Server, utilisez SQL Server Management Studio.
Si vous avez installé ThingWorx Flow et/ou ThingWorx Foundation sur des machines virtuelles, utilisez la fonctionnalité d'instantanés native pour restaurer une mise à jour. Si vous rétablissez l'instantané, vous devez restaurer la sauvegarde de votre base de données si cette dernière est hébergée sur un serveur distinct ou sur une machine virtuelle.
Etape 3 : Mise à jour de ThingWorx Foundation vers la version <ultérieure–8.x.x>
Si vous effectuez une mise à jour de la version 8.4.x vers 8.5.x, reportez-vous à la section correspondant à votre système d'exploitation et à votre type de base de données du document anglais Upgrading to ThingWorx 8.5.
Si vous effectuez une mise à jour à partir d'une version antérieure de 8.4.x vers une version plus récente de 8.4.x ou d'une version antérieure de 8.5.x vers une version plus récente de 8.5.x, vous n'aurez peut-être qu'à remplacer le fichier Thingworx.war.
Etape 4 : Extraction du contenu du fichier tar de mise à jour de ThingWorx Flow dans un dossier temporaire
1. Créez un dossier modules-<ultérieur-8.x.x> dans le dossier /ThingworxOrchestration.
Le dossier modules-<ultérieur-8.x.x> doit être parallèle au dossier modules existant.
2. Extrayez le contenu du correctif de mise à jour flow-upgrade-<ultérieur-8.x.x>.tar.gz dans le dossier modules-<ultérieur-8.x.x>.
Une fois le contenu du fichier tar extrait, le dossier /ThingworxOrchestration/modules-<ultérieur-8.x.x>/ doit contenir les dossiers suivants :
configs
db_seed
engine
exchange
lookup
oauth
8.4.12 et versions ultérieures, 8.5.8 et versions ultérieures : 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 uniquement) 8.4.12 et versions ultérieures, 8.5.8 et versions ultérieures : nginx-1.18.0.zip
(Windows uniquement) 8.4.12 et versions ultérieures, 8.5.8 et versions ultérieures : node-v12.16.3-win-x64.tar.gz
8.4.15 et versions ultérieures, 8.5.11 et versions ultérieures : node-v12.19.0-win-x64.tar.gz
Etape 5 : Remplacement des services ThingWorx Flow par leurs versions corrigées
1. Pour fusionner la configuration ThingWorx Flow existante avec le logiciel corrigé, copiez les fichiers ou dossiers spécifiques suivants depuis le dossier ThingWorxOrchestration/modules/ existant vers le dossier /ThingWorxOrchestration/modules-<ultérieur-8.x.x> :
Copier depuis
Copier vers
/ThingworxOrchestration/modules/db_seed/config
/ThingworxOrchestration/modules-<ultérieur-8.x.x>/db_seed/
/ThingworxOrchestration/modules/db_seed/migration_config.json
/ThingworxOrchestration/modules-<ultérieur-8.x.x>/db_seed/
/ThingworxOrchestration/modules/db_seed/SHA1
Facultatif, uniquement s'il existe.
/ThingworxOrchestration/modules-<ultérieur-8.x.x>/db_seed/
/ThingworxOrchestration/modules/engine/config
/ThingworxOrchestration/modules-<ultérieur-8.x.x>/engine/
/ThingworxOrchestration/modules/engine/deploymentConfig.json
/ThingworxOrchestration/modules-<ultérieur-8.x.x>/engine/
/ThingworxOrchestration/modules/engine/SHA1
Facultatif, uniquement s'il existe.
/ThingworxOrchestration/modules-<ultérieur-8.x.x>/engine/
/ThingworxOrchestration/modules/exchange/config
/ThingworxOrchestration/modules-<ultérieur-8.x.x>/exchange/
/ThingworxOrchestration/modules/exchange/deploymentConfig.json
/ThingworxOrchestration/modules-<ultérieur-8.x.x>/exchange/
/ThingworxOrchestration/modules/exchange/SHA1
Facultatif, uniquement s'il existe.
/ThingworxOrchestration/modules-<ultérieur-8.x.x>/exchange/
/ThingworxOrchestration/modules/lookup/config
/ThingworxOrchestration/modules-<ultérieur-8.x.x>/lookup/
/ThingworxOrchestration/modules/lookup/deploymentConfig.json
/ThingworxOrchestration/modules-<ultérieur-8.x.x>/lookup/
/ThingworxOrchestration/modules/lookup/SHA1
Facultatif, uniquement s'il existe.
/ThingworxOrchestration/modules-<ultérieur-8.x.x>/lookup/
/ThingworxOrchestration/modules/oauth/config
/ThingworxOrchestration/modules-<ultérieur-8.x.x>/oauth/
/ThingworxOrchestration/modules/oauth/deploymentConfig.json
/ThingworxOrchestration/modules-<ultérieur-8.x.x>/oauth/
/ThingworxOrchestration/modules/oauth/SHA1
Facultatif, uniquement s'il existe.
/ThingworxOrchestration/modules-<ultérieur-8.x.x>/oauth/
/ThingworxOrchestration/modules/static-ux/config
/ThingworxOrchestration/modules-<ultérieur-8.x.x>/static-ux/
/ThingworxOrchestration/modules/static-ux/SHA1
Facultatif, uniquement s'il existe.
/ThingworxOrchestration/modules-<ultérieur-8.x.x>/static-ux/
/ThingworxOrchestration/modules/trigger/config
/ThingworxOrchestration/modules-<ultérieur-8.x.x>/trigger/
/ThingworxOrchestration/modules/trigger/deploymentConfig.json
/ThingworxOrchestration/modules-<ultérieur-8.x.x>/trigger/
/ThingworxOrchestration/modules/trigger/SHA1
Facultatif, uniquement s'il existe.
/ThingworxOrchestration/modules-<ultérieur-8.x.x>/trigger/
/ThingworxOrchestration/modules/ux/config
/ThingworxOrchestration/modules-<ultérieur-8.x.x>/ux/
/ThingworxOrchestration/modules/ux/deploymentConfig.json
/ThingworxOrchestration/modules-<ultérieur-8.x.x>/ux/
/ThingworxOrchestration/modules/ux/SHA1
Facultatif, uniquement s'il existe.
/ThingworxOrchestration/modules-<ultérieur-8.x.x>/ux/
/ThingworxOrchestration/modules/orchestration.pm2.json
/ThingworxOrchestration/modules-<ultérieur-8.x.x>/
/ThingworxOrchestration/modules/cache
/ThingworxOrchestration/modules-<ultérieur-8.x.x>/
/ThingworxOrchestration/modules/node_modules/config
/ThingworxOrchestration/modules-<ultérieur-8.x.x>/symphony-connectors/node_modules/
2. Déplacez les dossiers et fichiers suivants depuis /ThingworxOrchestration/modules-<ultérieur-8.x.x>/symphony-connectors/ vers /ThingworxOrchestration/modules-<ultérieur-8.x.x>/ :
node_modules
package.json
package-lock.json
3. Dans /ThingworxOrchestration/modules-<ultérieur-8.x.x>/, supprimez le dossier symphony-connectors vide.
4. Si vous effectuez une mise à niveau de ThingWorx Flow 8.4.x vers ThingWorx Flow 8.5.x, ajoutez les lignes suivantes au fichier deploymentConfig.json dans le dossier /ThingworxOrchestration/modules-<ultérieur-8.x.x>/engine/ :
"ENGINE_SIZE": "1802",
"KILL_WORKER_AFTER_RUN": "false",
"AVAILABLE_WORKER_CHECK_TRIES": "10",
"AVAILABLE_WORKER_CHECK_INTERVAL": "3000",
"WORKER_DISMISS_INTERVAL": "1800",
5. Si vous effectuez une mise à niveau de ThingWorx Flow 8.4.x vers ThingWorx Flow 8.5.x, ajoutez les lignes suivantes au fichier deploymentConfig.json dans le dossier /ThingworxOrchestration/modules-<ultérieur-8.x.x>/ux/ :
"EXCHANGE": {
"HOST": "localhost",
"PORT": "7822"
},
"lookup": {
"host": "http://localhost:8077"
},
6. Pour mettre à jour les utilitaires Flow, procédez comme suit :
a. Supprimez les dossiers suivants de /ThingWorxOrchestration/packages :
symphony-cli
symphony-deploy
symphony-sdk
symphony-test-helper
b. Déplacez les dossiers suivants de /ThingworxOrchestration/modules-<ultérieur-8.x.x> vers /ThingWorxOrchestration/packages :
symphony-cli
symphony-deploy
symphony-sdk
symphony-test-helper
c. Assurez-vous que l'utilisateur qui a installé ThingWorx Flow est propriétaire de tous les utilitaires Flow et qu'il dispose de toutes les permissions adéquates.
Par exemple, accédez au dossier /ThingWorxOrchestration/packages et exécutez la commande suivante :
chown -R flowuser:flowuser symphony-cli
Remplacez flowuser par l'utilisateur qui a exécuté le programme d'installation ThingWorx Flow.
7. (Linux uniquement) Assurez-vous que l'utilisateur qui a installé ThingWorx Flow est propriétaire du dossier modules-<ultérieur-8.x.x> et qu'il dispose de toutes les permissions adéquates.
Accédez au dossier ThingWorxOrchestration et exécutez la commande suivante :
chown -R flowuser:flowuser modules-<ultérieur-8.x.x>
Remplacez flowuser par l'utilisateur qui a exécuté le programme d'installation ThingWorx Flow.
8. (Windows uniquement) Copiez le dossier RabbitMQ du dossier modules vers le dossier modules-<ultérieur-8.x.x>.
9. Après avoir copié tous les paramètres de configuration, vous devez renommer les dossiers suivants :
a. Renommez le dossier modules existant en modules-<antérieur-8.x.x>.
b. Renommez le dossier modules-<ultérieur-8.x.x> en modules.
* 
Sous Windows, avant de procéder au changement de nom des dossiers, vous devez arrêter le processus epmd.exe.
Par exemple, pour renommer les dossiers sous Linux, exécutez les commandes suivantes :
a. mv /ThingworxOrchestration/modules /ThingworxOrchestration/modules-<antérieur-8.x.x>
b. mv /ThingworxOrchestration/modules-<ultérieur-8.x.x> /ThingworxOrchestration/modules
10. (Linux uniquement) Accédez au dossier ThingWorxOrchestration et exécutez la commande suivante pour accorder des permissions complètes au dossier modules :
chmod -R 777 modules
11. (Linux uniquement) Accédez au dossier ThingWorxOrchestration/modules et exécutez la commande suivante pour définir le contexte de sécurité approprié sur le dossier static-ux :
chcon -R -t httpd_sys_content_t static-ux
12. Renommez, puis déplacez les dossiers suivants :
a. Renommez le dossier tw-security-common-nodejs qui se trouve dans /ThingWorxOrchestration/cryptography en tw-security-common-nodejs_<antérieur-8.x.x>.
b. Déplacez le dossier tw-security-common-nodejs de /ThingworxOrchestration/modules/ vers /ThingWorxOrchestration/cryptography.
c. Assurez-vous que l'utilisateur qui a installé ThingWorx Flow est propriétaire du dossier tw-security-common-nodejs et qu'il dispose de toutes les permissions adéquates.
Par exemple, accédez au dossier /ThingWorxOrchestration/cryptography et exécutez la commande suivante :
chown -R flowuser:flowuser tw-security-common-nodejs
Remplacez flowuser par l'utilisateur qui a exécuté le programme d'installation ThingWorx Flow.
d. Si vous effectuez une mise à jour vers 8.4.x, accédez au dossier /ThingWorxOrchestration/cryptography/tw-security-common-nodejs et exécutez les commandes suivantes :
Sous Windows, exécutez npm install.
Sous Linux, exécutez sudo npm install.
Sous Linux, exécutez sudo chown -R flowuser:flowuser node_modules.
Remplacez flowuser par l'utilisateur qui a exécuté le programme d'installation ThingWorx Flow.
Etape 6 : Mise à jour de Nginx, PM2 et NodeJS, si elles ne sont pas déjà mises à jour (8.4.12 et versions ultérieures, 8.5.8 et versions ultérieures)
Ignorez cette étape si vous utilisez déjà les versions suivantes :
Nginx : 1.18.0
PM2 : 4.4.0
NodeJS : 12.19.x
* 
Si vous ignorez cette étape, supprimez les dossiers suivants du dossier modules :
ptc-flow-pm2 / pm2
nginx-1.18.0.zip
node-v12.19.0-win-x64.tar.gz
Nginx
Windows
1. Renommez C:\Program Files\nginx-1.13.12 en C:\Program Files\nginx-1.13.12_old.
2. A partir de <répertoire d'installation Flow>\modules, extrayez Nginx-1.18.0.zip sous C:\Program Files. Vérifiez que voyez bien C:\Program Files\nginx-1.18.0\nginx.exe.
3. Renommez C:\Program Files\nginx-1.18.0 en C:\Program Files\nginx-1.13.12.
4. Remplacez le fichier C:\Program Files\nginx-1.13.12\conf\nginx.conf par le fichier C:\Program files\nginx-1.13.12_old\conf\nginx.conf.
5. Copiez le fichier C:\Program Files\nginx-1.13.12_old\conf\conf.d dans C:\Program Files\nginx-1.13.12\conf\.
6. Dans <répertoire d'installation Flow>\modules, supprimez Nginx-1.18.0.zip.
Linux
1. Créez le fichier /etc/yum.repos.d/nginx.repo avec le contenu suivant :
[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. Exécutez la commande sudo yum upgrade nginx.
PM2
Windows
1. Sauvegardez le dossier <répertoire d'installation Flow>\packages\ptc-flow-pm2\node_modules\pm2-windows-service-nosetup\src\daemon.
Si vous vous trouvez sur ThingWorx Flow 8.4.x, le dossier ptc-flow-pm2 est appelé pm2.
2. Renommez le dossier <répertoire d'installation Flow>\packages\ptc-flow-pm2 en ptc-flow-pm2_old.
Si vous êtes sur ThingWorx Flow 8.4.x, renommez pm2 en pm2_old.
3. Si vous effectuez une mise à jour à partir de 8.4.x, procédez comme suit :
a. Déplacez le dossier pm2 de <répertoire d'installation Flow>\modules vers <répertoire d'installation Flow>\packages et renommez-le pm2.
b. Modifiez le fichier <répertoire d'installation Flow>\packages\pm2\node_modules\pm2-windows-service-nosetup\src\daemon\thingworxflow.xml pour que le chemin suivant soit valide :
<argument>C:\ThingWorxOrchestration\packages\pm2\node_modules\node-windows\lib\wrapper.js</argument>
c. Ajoutez les éléments suivants à la variable d'environnement PATH :
C:\ThingWorxOrchestration\packages\pm2\node_modules\.bin
d. Ajoutez la variable d'environnement suivante :
PM2_SERVICE_PM2_DIR = C:\ThingWorxOrchestration\packages\pm2\node_modules\pm2
4. Si vous effectuez une mise à jour de la version 8.5.x, remplacez le <répertoire d'installation Flow>\packages\ptc-flow-pm2 par le dossier ptc-flow-pm2 de <répertoire d'installation Flow>\modules.
5. Copiez le répertoire du démon sauvegardé dans <répertoire d'installation Flow>\packages\ptc-flow-pm2\node_module\pm2-windows-service-nosetup\src.
Si vous vous trouvez sur ThingWorx Flow 8.4.x, le dossier ptc-flow-pm2 est appelé pm2.
Linux
1. Remplacez <répertoire d'installation Flow>/packages/ptc-flow-pm2 par le dossier ptc-flow-pm2 de <répertoire d'installation Flow>\modules.
Si vous vous trouvez sur ThingWorx Flow 8.4.x, sous packages, le dossier ptc-flow-pm2 est appelé pm2.
2. Si vous effectuez une mise à jour à partir de 8.4.x, procédez comme suit :
a. Renommez le dossier <répertoire d'installation Flow>/packages/pm2 en pm2_old.
b. Déplacez le dossier ptc-flow-pm2 de <répertoire d'installation Flow>/modules vers <répertoire d'installation Flow>/packages et renommez-le pm2.
NodeJS
Windows
1. A partir de <répertoire d'installation Flow>\modules, extrayez node-v12.19.0-win-x64.tar.gz.
2. Remplacez le dossier <répertoire d'installation Flow>\node par le dossier extrait.
3. Dans <répertoire d'installation Flow>\modules, supprimez node-v12.19.0-win-x64.tar.gz.
Linux
Exécutez les commandes suivantes :
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
Etape 7 : Limite de la taille de chargement de Nginx à 1 Go (mise à niveau de 8.4.x à 8.5.x uniquement)
1. Dans le fichier <répertoire de configuration Nginx>\conf.d\vhost-flow.conf, recherchez la ligne suivante :
client_max_body_size 18M;
2. Remplacez la valeur 18M par 1000M.
3. Vérifiez que le résultat se présente comme suit :
client_max_body_size 1000M;
Etape 8 : Chiffrement de la clé privée Nginx (8.4.14 et versions ultérieures, 8.5.10 et versions ultérieures)
La section suivante décrit les étapes que vous devez effectuer pour chiffrer le fichier de clé standard. Si vous utilisez un fichier .key différent, remplacez l'ensemble des références orchestration.key par votre nom de fichier de clé.
1. Dans le dossier <répertoire d'installation Flow>\SSL, créez le fichier nginx-keyfile contenant le mot de passe de la clé privée chiffrée.
2. Utilisez l'utilitaire openssl pour exécuter la commande suivante :
<openssl_cmd> rsa -aes256 -passout pass:<Même mot de passe que celui défini dans nginx-keyfile> -in "<répertoire d'installation Flow>\SSL\orchestration.key" -out "<répertoire d'installation Flow>\SSL\orchestration_enc.key"
Où, sur Windows, <openssl_cmd> : exécutez cd C:/opscode/chef/embedded/bin, tapez openssl et exécutez la commande ci-dessus.
Sur Linux, <openssl_cmd> : tapez openssl et exécutez la commande ci-dessus.
3. Supprimez le fichier orchestration.key et renommez le fichier orchestration_enc.key en orchestration.key.
4. Dans le fichier <répertoire de configuration Nginx>\conf.d\vhost-flow.conf file, ajoutez la ligne suivante après le paramètre ssl_certificate_key :
ssl_password_file "<répertoire d'installation Flow>\SSL\nginx-keyfile";
<répertoire de configuration Nginx> est C:\Program Files\nginx-1.18.0\conf sur Windows et /etc/nginx sur Linux.
5. (Linux uniquement) Exécutez les commandes suivantes :
a. sudo chown flowuser:flowuser <répertoire d'installation Flow>\SSL\orchestration.key, où flowuser correspond à l'utilisateur qui a exécuté le programme d'installation de ThingWorx Flow.
b. sudo chcon -t httpd_sys_content_t <répertoire d'installation Flow>\SSL\orchestration.key
c. sudo chown flowuser:flowuser <répertoire d'installation Flow>\SSL\nginx-keyfile, où flowuser correspond à l'utilisateur qui a exécuté le programme d'installation de ThingWorx Flow.
d. sudo chcon -t httpd_sys_content_t <répertoire d'installation Flow>\SSL\nginx-keyfile
Etape 9 : Modifications de sécurité dans la configuration de Nginx (8.4.14 et versions ultérieures, 8.5.10 et versions ultérieures)
1. Mettez à jour le fichier <répertoire de configuration Nginx>\nginx.conf pour la protection contre les attaques par force brute et pour activer le mécanisme de limite de débit dans Nginx. Cela limite le nombre de requêtes exécutées à partir d'une adresse IP spécifique.
a. Recherchez les lignes suivantes :
# 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. Annulez les commentaires de la première et de la dernière ligne.
c. Dans la première ligne, modifiez le débit par 500r/s.
* 
Vous pouvez remplacer le débit (requêtes par seconde) par une autre valeur. Cependant, 500r/s est un nombre raisonnable de requêtes par seconde que des clients illégitimes ne peuvent pas atteindre.
d. Vérifiez que le résultat se présente comme suit :
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. Mettez à jour le fichier <répertoire de configuration Nginx>\nginx.conf pour définir l'en-tête cache-control sur no-cache :
a. Recherchez la ligne suivante :
map $sent_http_content_type $expires {
b. Remplacez la valeur de text/html par -1.
c. Vérifiez que le résultat se présente comme suit :
map $sent_http_content_type $expires {
default off;
text/html -1;
text/css 30d;
application/javascript 7d;
~image/ 30d;
}
3. Mettez à jour le fichier <répertoire de configuration Nginx>\conf.d\vhost-flow.conf pour bloquer la méthode HTTP HEAD :
a. Recherchez les lignes suivantes :
if ($scheme = "https") {
set $secure_var "secure";
}
b. Ajoutez les lignes suivantes avant les lignes ci-dessus :
# block 'head' http method for security reasons
if ($request_method = 'HEAD') {
return 405;
}
c. Vérifiez que le résultat se présente comme suit :
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. Mettez à jour le fichier <répertoire de configuration Nginx>\conf.d\vhost-Flow.conf pour éviter les redirections externes vers location ~ ^(/config|/js|/locales|/resources) :
a. Recherchez les lignes suivantes :
location /Thingworx/Flow {
rewrite /Thingworx/Flow/(.*) /$1 break;
try_files $uri $uri/ @flow_api;
}
b. Remplacez try_files $uri $uri/ @flow_api; par try_files $uri @flow_api;.
c. Ajoutez les lignes suivantes après les lignes ci-dessus :
# avoid external redirects for bellow locations
location ~ ^(/config|/js|/locales|/resources) {
internal;
}
d. Vérifiez que le résultat se présente comme suit :
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. Mettez à jour le fichier <répertoire de configuration Nginx>\conf.d\vhost-Flow.conf pour bloquer la méthode HTTP options et ajouter une limite de débit pour la protection contre les attaques par force brute dans les emplacements suivants :
Emplacement
Etape 1 : Rechercher un emplacement
Etape 2 : Ajouter le contenu spécifié après l'emplacement
Etape 3 : Annuler le commentaire de la ligne spécifiée
Etape 4 : Ajouter le contenu spécifié à la ligne non commentée
Etape 5 : Vérifier le résultat
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. Mettez à jour le fichier <répertoire de configuration Nginx>\conf.d\vhost-flow.conf pour ajouter la limite de taux de protection en force pour les emplacements suivants :
Emplacement
Etape 1 : Rechercher un emplacement
Etape 2 : Annuler le commentaire de la ligne spécifiée
Etape 3 : Ajouter le contenu spécifié à la ligne non commentée
Etape 4 : Vérifier le résultat
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;
(Facultatif) Etape 10 : Modification de la configuration de ThingWorx Foundation et de ThingWorx Flow
Si nécessaire, apportez des modifications à la configuration des services ThingWorx Foundation et ThingWorx Flow.
Cela peut être nécessaire si un correctif ajoute de nouveaux paramètres de configuration. Reportez-vous aux notes de mise à jour pour en savoir plus sur les nouveaux paramètres de configuration et les fichiers dans lesquels ils peuvent être utilisés.
Etape 11 : Réamorçage de la base de données à l'aide des dernières mises à jour de ThingWorx Flow
Le réamorçage de la base de données ThingWorx Flow n'affecte pas les entités existantes appartenant à l'utilisateur, telles que les processus ou les déclencheurs.
1. Lancez l'invite de commande et accédez à /ThingWorxOrchestration/modules/db_seed.
2. Exécutez la commande suivante :
flow-deploy migrate -u <nom d'utilisateur base de données Flow> -p <mot de passe base de données Flow> -s <répertoire d'installation Flow>
Sous Linux, exécutez la commande flow-deploy en tant qu'utilisateur non root.
(Facultatif) Etape 12 : Déploiement de connecteurs personnalisés
* 
Ne suivez les étapes de cette section que si vous avez développé des connecteurs personnalisés à l'aide du SDK ThingWorx Flow.
1. Assurez-vous que le code source est disponible sur le même système.
2. Accédez au répertoire racine du connecteur, puis exécutez la commande flow-deploy connector.
Pour plus d'informations, consultez la rubrique Déploiement des connecteurs.
3. Exécutez la commande suivante pour amorcer le connecteur personnalisé dans la base de données :
flow-deploy migrate -u <nom d'utilisateur base de données Flow> -p <mot de passe base de données Flow> -s <répertoire d'installation Flow>
Etape 13 : Démarrage des services et vérification de leur statut
1. Démarrez les services qui ont été arrêtés à l'étape 1 dans l'ordre suivant :
a. RabbitMQ / rabbitmq.service
* 
Consultez les journaux RabbitMQ pour vérifier que le service RabbitMQ a complètement démarré avant de démarrer le service suivant.
Windows : /ThingworxOrchestration/modules/RabbitMQ/log/rabbit@{hostname}.log
Linux : /var/log/rabbitmq/rabbit@{hostname}.log
b. ThingWorx-Foundation
c. ThingWorx-Flow
d. ThingWorxOrchestrationNginx ou nginx
2. Consultez les journaux ThingWorx Foundation et vérifiez qu'aucune erreur ou aucun avertissement inattendu ne s'est produit au démarrage.
3. Pour vérifier que ThingWorx Flow a été correctement mis à jour, lancez l'invite de commande en tant qu'administrateur et exécutez la commande suivante :
pm2 ls
Le statut des composants ThingWorx Flow suivants doit être "online" :
flow-api
flow-engine
flow-exchange
flow-lookup
flow-oauth-server
flow-trigger
Pour afficher les journaux d'un service individuel, exécutez la commande pm2 logs <nom du service>.
Etape 14 : Redémarrage du sous-système de processus
1. Connectez-vous à ThingWorx Foundation.
2. Accédez à Sous-système > Sous-système de processus.
3. Cliquez sur Redémarrer.
Etape 15 : Vérification du bon fonctionnement de la fonctionnalité
Effectuez un test dans ThingWorx Foundation et ThingWorx Flow pour vérifier le bon fonctionnement des différents éléments. Vérifiez que vous pouvez créer des processus dans ThingWorx Composer et dans l'éditeur de flux. Par exemple, vous pouvez effectuer les tâches suivantes :
Vous connecter au tableau de bord de ThingWorx Flow. Pour savoir comment accéder à ThingWorx Flow et à ThingWorx Composer, consultez la rubrique Accès à ThingWorx Flow et à ThingWorx Composer.
Créez des autorisations et des connexions pour chaque connecteur que vous souhaitez utiliser.
Etape 16 : Suppression du dossier tw-security-common-nodejs_<antérieur-8.x.x>
Dans le dossier /ThingWorxOrchestration/cryptography, supprimez le dossier tw-security-common-nodejs_<antérieur-8.x.x>.
(Facultatif) Etape 17 : Suppression du dossier modules-<antérieur-8.x.x>
Une fois que vous avez validé et vérifié que la mise à jour a réussi et que les flux s'exécutent correctement (et que la version précédente n'est plus nécessaire), supprimez le dossier modules-<antérieur-8.x.x>.
La mise à jour de ThingWorx Flow a été effectuée.
* 
Si l'exécution des flux dans le moteur s'arrête brusquement, suivez la procédure de la rubrique Dépannage de votre installation.