Actualización de ThingWorx Flow
La actualización manual de ThingWorx Flow se soporta en las siguientes versiones:
De una versión anterior de 8.4.x a una versión posterior de 8.4.x.
De 8.4.x a 8.5.x.
De una versión anterior de 8.5.x a una versión posterior de 8.5.x.
* 
La actualización manual de una instalación nueva de ThingWorx Flow 8.4.x a 9.x no está disponible. Si desea actualizar desde una instalación nueva de ThingWorx Flow 8.4.x a 9.x, es necesario migrar ThingWorx Flow.
* 
Si desea actualizar desde una instalación nueva de ThingWorx Flow 8.5.x y versiones posteriores a 9.x, es necesario utilizar el instalador de la actualización automatizada de ThingWorx Flow.
Para este procedimiento, supongamos que actualmente el usuario se encuentra en <anterior-8.x.x> y desea actualizar a <más reciente-8.x.x>.
Requisitos previos
Antes de actualizar ThingWorx Flow, asegúrese de haber definido los siguientes requisitos previos:
El usuario dispone de los permisos necesarios para modificar todos los ficheros instalados para los servicios.
Se ha descargado la versión del parche de actualización adecuado de ThingWorx Flow <más reciente-8.x.x> para el sistema operativo desde el sitio Web Descargas de software de PTC.
Estos son los pasos principales del proceso:
Paso 1: Detener los servicios de ThingWorx Foundation y ThingWorx Flow
En función del sistema operativo, utilice las herramientas de control de servicio sc o los servicios para Windows y sysctl para Linux con el fin de detener los siguientes servicios:
ThingWorxOrchestrationNginx o nginx
ThingWorx-Foundation
ThingWorx-Flow
RabbitMQ/rabbitmq.service
Asegúrese de que todos los respectivos se hayan detenido completamente. Cualquier proceso en ejecución puede causar incidencias en etapas posteriores durante la actualización de las carpetas.
Paso 2: Crear una copia de seguridad de la instalación existente
Realice una copia de seguridad de la instalación existente que incluya pero no se limite a lo siguiente:
Las carpetas ThingworxPlatform y ThingworxStorage de la carpeta de instalación de ThingWorx Foundation
La carpeta ThingworxOrchestration en la que se han instalado los componentes de ThingWorx Flow
Las bases de datos de ThingWorx Foundation y ThingWorx Flow
Se recomienda encarecidamente utilizar las instalaciones integradas para crear copias de seguridad con la solución de base de datos.
En PostgreSQL, utilice la herramienta pg_dump. En Microsoft SQL Server, utilice SQL Server Management Studio.
Si se ha instalado ThingWorx Flow o ThingWorx Foundation en máquinas virtuales, utilice la funcionalidad de instantánea nativa para retrotraer una actualización. Si se revierte a la instantánea, se debe restaurar la copia de seguridad de la base de datos si la base de datos está alojada en un servidor independiente o en una máquina virtual.
Paso 3: Actualizar ThingWorx Foundation a <más reciente– 8.x.x>
Si se está actualizando de 8.4.x a 8.5.x, consulte la sección adecuada para el sistema operativo y el tipo de base de datos en el manual Upgrading to ThingWorx 8.5.
Si se actualiza desde una versión anterior de 8.4.x a una versión más reciente de 8.4.x o una versión anterior de 8.5.x a una versión más reciente de 8.5.x, puede que solo sea necesario reemplazar el fichero Thingworx.war.
Paso 4: Extraer el contenido tar de la actualización de ThingWorx Flow en una carpeta temporal
1. Cree una nueva carpeta, modules-<más reciente-8.x.x>, en la carpeta /ThingworxOrchestration.
Esta carpeta modules-<más reciente-8.x.xx> debe ser paralela a la carpeta modules existente.
2. Extraiga el contenido de la actualización del parche flow-upgrade-<más reciente-8.x.x>.tar.gz en la carpeta modules-<más reciente-8.x.x>.
Después de extraer el contenido del fichero tar, la carpeta /ThingworxOrchestration/modules-<más reciente-8.x.x>/ debe contener las siguientes carpetas:
configs
db_seed
engine
exchange
lookup
oauth
8.4.12 y versiones posteriores, 8.5.8 y versiones posteriores: 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
(Solo Windows) 8.4.12 y versiones posteriores, 8.5.8 y versiones posteriores: nginx-1.18.0.zip
(Solo Windows) 8.4.12 y versiones posteriores, 8.5.8 y versiones posteriores: node-v12.16.3-win-x64.tar.gz
8.4.15 y versiones posteriores, 8.5.11 y versiones posteriores: node-v12.19.0-win-x64.tar.gz
Paso 5: Reemplazar los servicios de ThingWorx Flow por las versiones con parches
1. Para combinar la configuración existente de ThingWorx Flow con el software con parches, copie los siguientes ficheros o carpetas específicos de la carpeta ThingWorxOrchestration/modules/ existente en la carpeta /ThingWorxOrchestration/modules-<más reciente-8.x.x>:
Copiar de
Copiar a
/ThingworxOrchestration/modules/db_seed/config
/ThingworxOrchestration/modules-<más reciente-8.x.x>/db_seed/
/ThingworxOrchestration/modules/db_seed/migration_config.json
/ThingworxOrchestration/modules-<más reciente-8.x.x>/db_seed/
/ThingworxOrchestration/modules/db_seed/SHA1
Opcional, solo si existe.
/ThingworxOrchestration/modules-<más reciente-8.x.x>/db_seed/
/ThingworxOrchestration/modules/engine/config
/ThingworxOrchestration/modules-<más reciente-8.x.x>/engine/
/ThingworxOrchestration/modules/engine/deploymentConfig.json
/ThingworxOrchestration/modules-<más reciente-8.x.x>/engine/
/ThingworxOrchestration/modules/engine/SHA1
Opcional, solo si existe.
/ThingworxOrchestration/modules-<más reciente-8.x.x>/engine/
/ThingworxOrchestration/modules/exchange/config
/ThingworxOrchestration/modules-<más reciente-8.x.x>/exchange/
/ThingworxOrchestration/modules/exchange/deploymentConfig.json
/ThingworxOrchestration/modules-<más reciente-8.x.x>/exchange/
/ThingworxOrchestration/modules/exchange/SHA1
Opcional, solo si existe.
/ThingworxOrchestration/modules-<más reciente-8.x.x>/exchange/
/ThingworxOrchestration/modules/lookup/config
/ThingworxOrchestration/modules-<más reciente-8.x.x>/lookup/
/ThingworxOrchestration/modules/lookup/deploymentConfig.json
/ThingworxOrchestration/modules-<más reciente-8.x.x>/lookup/
/ThingworxOrchestration/modules/lookup/SHA1
Opcional, solo si existe.
/ThingworxOrchestration/modules-<más reciente-8.x.x>/lookup/
/ThingworxOrchestration/modules/oauth/config
/ThingworxOrchestration/modules-<más reciente-8.x.x>/oauth/
/ThingworxOrchestration/modules/oauth/deploymentConfig.json
/ThingworxOrchestration/modules-<más reciente-8.x.x>/oauth/
/ThingworxOrchestration/modules/oauth/SHA1
Opcional, solo si existe.
/ThingworxOrchestration/modules-<más reciente-8.x.x>/oauth/
/ThingworxOrchestration/modules/static-ux/config
/ThingworxOrchestration/modules-<más reciente-8.x.x>/static-ux/
/ThingworxOrchestration/modules/static-ux/SHA1
Opcional, solo si existe.
/ThingworxOrchestration/modules-<más reciente-8.x.x>/static-ux/
/ThingworxOrchestration/modules/trigger/config
/ThingworxOrchestration/modules-<más reciente-8.x.x>/trigger/
/ThingworxOrchestration/modules/trigger/deploymentConfig.json
/ThingworxOrchestration/modules-<más reciente-8.x.x>/trigger/
/ThingworxOrchestration/modules/trigger/SHA1
Opcional, solo si existe.
/ThingworxOrchestration/modules-<más reciente-8.x.x>/trigger/
/ThingworxOrchestration/modules/ux/config
/ThingworxOrchestration/modules-<más reciente-8.x.x>/ux/
/ThingworxOrchestration/modules/ux/deploymentConfig.json
/ThingworxOrchestration/modules-<más reciente-8.x.x>/ux/
/ThingworxOrchestration/modules/ux/SHA1
Opcional, solo si existe.
/ThingworxOrchestration/modules-<más reciente-8.x.x>/ux/
/ThingworxOrchestration/modules/orchestration.pm2.json
/ThingworxOrchestration/modules-<más reciente-8.x.x>/
/ThingworxOrchestration/modules/cache
/ThingworxOrchestration/modules-<más reciente-8.x.x>/
/ThingworxOrchestration/modules/node_modules/config
/ThingworxOrchestration/modules-<más reciente-8.x.x>/symphony-connectors/node_modules/
2. Mueva las siguientes carpetas y ficheros de /ThingworxOrchestration/modules-<más reciente-8.x.x>/symphony-connectors/ a /ThingworxOrchestration/modules-<más reciente-8.x.x>/:
node_modules
package.json
package-lock.json
3. En /ThingworxOrchestration/modules-<más reciente-8.x.x>/, borre la carpeta symphony-connectors vacía.
4. Si se actualiza de ThingWorx Flow 8.4.x a ThingWorx Flow 8.5.x, añada las siguientes líneas al fichero deploymentConfig.json en la carpeta /ThingworxOrchestration/modules-<más reciente-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 se actualiza de ThingWorx Flow 8.4.x a ThingWorx Flow 8.5.x, añada las siguientes líneas al fichero deploymentConfig.json en la carpeta /ThingworxOrchestration/modules-<más reciente-8.x.x>/ux/:
"EXCHANGE": {
"HOST": "localhost",
"PORT": "7822"
},
"lookup": {
"host": "http://localhost:8077"
},
6. Para actualizar las utilidades de flujo, realice los siguientes pasos:
a. Borre las siguientes carpetas de /ThingWorxOrchestration/packages:
symphony-cli
symphony-deploy
symphony-sdk
symphony-test-helper
b. Mueva las siguientes carpetas de /ThingworxOrchestration/modules-<más reciente-8.x.x> a /ThingWorxOrchestration/packages:
symphony-cli
symphony-deploy
symphony-sdk
symphony-test-helper
c. Asegúrese de que el usuario que ha instalado ThingWorx Flow tenga la propiedad completa y los permisos necesarios para todas las utilidades de flujo.
Por ejemplo, navegue hasta la carpeta /ThingWorxOrchestration/packages y ejecute el siguiente comando:
chown -R flowuser:flowuser symphony-cli
Reemplace flowuser por el usuario que ha ejecutado el instalador de ThingWorx Flow.
7. (Solo Linux) Asegúrese de que el usuario que ha instalado ThingWorx Flow tenga la propiedad completa y los permisos necesarios para la carpeta modules-<más reciente-8.x.x>.
Navegue hasta la carpeta ThingWorxOrchestration y ejecute el siguiente comando:
chown -R flowuser:flowuser modules-<más reciente-8.x.x>
Reemplace flowuser por el usuario que ha ejecutado el instalador de ThingWorx Flow.
8. (Solo Windows) Copie la carpeta RabbitMQ de la carpeta modules en la carpeta modules-<más reciente-8.x.x>.
9. Una vez que se hayan copiado todos los valores de configuración, se debe cambiar el nombre de las siguientes carpetas:
a. Cambie el nombre de la carpeta modules existente a modules-<anterior-8.x.x>.
b. Cambie el nombre de la carpeta modules-<más reciente-8.x.x> a modules.
* 
En Windows, antes de continuar con el cambio de nombre de las carpetas, se debe detener el proceso epmd.exe.
Por ejemplo, para cambiar el nombre de las carpetas en Linux, ejecute los siguientes comandos:
a. mv /ThingworxOrchestration/modules /ThingworxOrchestration/modules-<anterior-8.x.x>
b. mv /ThingworxOrchestration/modules-<más reciente-8.x.x> /ThingworxOrchestration/modules
10. (Solo Linux) Vaya a la carpeta ThingWorxOrchestration y ejecute el siguiente comando para definir permisos completos para la carpeta modules:
chmod -R 777 modules
11. (Solo Linux) Vaya a la carpeta ThingWorxOrchestration/modules y ejecute el siguiente comando para definir el contexto de seguridad correcto en la carpeta static-ux:
chcon -R -t httpd_sys_content_t static-ux
12. Cambie el nombre de las siguientes carpetas y muévalas:
a. Cambie el nombre de la carpeta tw-security-common-nodejs existente, que se encuentra en /ThingWorxOrchestration/cryptography, a tw-security-common-nodejs_<anterior-8.x.x>.
b. Mueva la carpeta tw-security-common-nodejs de /ThingworxOrchestration/modules/ a /ThingWorxOrchestration/cryptography.
c. Asegúrese de que el usuario que ha instalado ThingWorx Flow tenga la propiedad completa y los permisos necesarios para la carpeta tw-security-common-nodejs.
Por ejemplo, navegue hasta la carpeta /ThingWorxOrchestration/cryptography y ejecute el siguiente comando:
chown -R flowuser:flowuser tw-security-common-nodejs
Reemplace flowuser por el usuario que ha ejecutado el instalador de ThingWorx Flow.
d. Si se actualiza a 8.4.x, vaya a la carpeta /ThingWorxOrchestration/cryptography/tw-security-common-nodejs y ejecute los siguientes comandos:
En Windows, ejecute npm install.
En Linux, ejecute sudo npm install.
En Linux, ejecute sudo chown -R flowuser:flowuser node_modules.
Reemplace flowuser por el usuario que ha ejecutado el instalador de ThingWorx Flow.
Paso 6: Actualizar Nginx, PM2 y NodeJS, si aún no se ha hecho (8.4.12 y versiones posteriores, 8.5.8 y versiones posteriores)
Omita este paso si ya dispone de las siguientes versiones:
Nginx: 1.18.0
PM2: 4.4.0
NodeJS: 12.19.x
* 
Si se omite este paso, se deben borrar las siguientes carpetas de la carpeta modules:
ptc-flow-pm2/pm2
nginx-1.18.0.zip
node-v12.19.0-win-x64.tar.gz
Nginx
Windows
1. Cambie el nombre de C:\Archivos de programa\nginx-1.13.12 a C:\Archivos de programa\nginx-1.13.12_old.
2. En <Directorio de instalación de Flow>\modules, extraiga nginx-1.18.0.zip en C:\Archivos de programa. Verifique que se ve c:\Archivos de programa\nginx-1.18.0\nginx.exe.
3. Cambie el nombre de C:\Archivos de programa\nginx-1.18.0 a C:\Archivos de programa\nginx-1.13.12.
4. Reemplace el fichero C:\Archivos de programa\nginx-1.13.12\conf\nginx.conf por el fichero C:\Archivos de programa\nginx-1.13.12_old \conf\nginx.conf.
5. Copie el fichero C:\Archivos de programa\nginx-1.13.12_old\conf\conf.d en c:\Archivos de programa\nginx-1.13.12\conf\.
6. En <Directorio de instalación de Flow>\modules, borre nginx-1.18.0.zip.
Linux
1. Cree el fichero /etc/yum.repos.d/nginx.repo con el siguiente contenido:
[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. Ejecute el comando sudo yum upgrade nginx.
PM2
Windows
1. Realice una copia de seguridad de la carpeta <Directorio de instalación de Flow>\packages\ptc-flow-pm2\node_modules\pm2-windows-service-nosetup\src\daemon.
Si se utiliza ThingWorx Flow 8.4.x, la carpeta ptc-flow-pm2 se denomina pm2.
2. Cambie el nombre de la carpeta <Directorio de instalación de Flow>\packages\ptc-flow-pm2 a ptc-flow-pm2_old.
Si se utiliza ThingWorx Flow 8.4.x, cambie el nombre de pm2 a pm2_old.
3. Si se actualiza desde 8.4.x, haga lo siguiente:
a. Mueva la carpeta pm2 de <Directorio de instalación de Flow>\modules a <Directorio de instalación de Flow>\packages y cámbiele el nombre a pm2.
b. Edite el fichero <Directorio de instalación de Flow>\packages\pm2\node_modules\pm2-windows-service-nosetup\src\daemon\thingworxflow.xml para que la siguiente ruta sea válida:
<argument>C:\ThingWorxOrchestration\packages\pm2\node_modules\node-windows\lib\wrapper.js</argument>
c. Añada lo siguiente a la variable de entorno PATH:
C:\ThingWorxOrchestration\packages\pm2\node_modules\.bin
d. Añada la variable de entorno siguiente:
PM2_SERVICE_PM2_DIR = C:\ThingWorxOrchestration\packages\pm2\node_modules\pm2
4. Si se está actualizando desde 8.5.x, reemplace <Directorio de instalación de Flow>\packages\ptc-flow-pm2 por la carpeta ptc-flow-pm2 de <Directorio de instalación de Flow>\modules.
5. Copie el directorio de daemon con copia de seguridad en <Directorio de instalación de Flow>\packages\ptc-flow-pm2\node_module\pm2-windows-service-nosetup\src.
Si se utiliza ThingWorx Flow 8.4.x, la carpeta ptc-flow-pm2 se denomina pm2.
Linux
1. Reemplace <Directorio de instalación de Flow>/packages/ptc-flow-pm2 por la carpeta ptc-flow-pm2 de <Directorio de instalación de Flow>\modules.
Si se utiliza ThingWorx Flow 8.4.x, en packages, la carpeta ptc-flow-pm2 se denomina pm2.
2. Si se actualiza desde 8.4.x, haga lo siguiente:
a. Cambie el nombre de la carpeta <Directorio de instalación de Flow>/packages/pm2 a pm2_old.
b. Mueva la carpeta ptc-flow-pm2 de <Directorio de instalación de Flow>/modules a <Directorio de instalación de Flow>/packages y cámbiele el nombre a pm2.
NodeJS
Windows
1. En <Directorio de instalación de Flow>\modules, extraiga node-v12.19.0-win-x64.tar.gz.
2. Reemplace la carpeta <Directorio de instalación de Flow>\node por la carpeta extraída.
3. En <Directorio de instalación de Flow>\modules, borre node-v12.19.0-win-x64.tar.gz.
Linux
Ejecute los siguientes comandos:
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
Paso 7: Limitar el tamaño de carga en Nginx a 1 GB (solo actualización de 8.4.x a 8.5.x)
1. En el fichero <Directorio de configuración de Nginx>\conf.d\vhost-flow.conf, busque la siguiente línea:
client_max_body_size 18M;
2. Actualice el valor de 18 M a 1000 M.
3. Verifique que el resultado tenga el siguiente aspecto:
client_max_body_size 1000M;
Paso 8: Cifrar la clave privada de Nginx (8.4.14 y versiones posteriores, 8.5.10 y versiones posteriores)
En la siguiente sección se describen los pasos que se deben realizar para cifrar el fichero de claves de fábrica. Si se utiliza otro fichero .key, reemplace todas las referencias a orchestration.key por el nombre de su fichero de claves.
1. En la carpeta <Directorio de instalación de Flow>\SSL, cree el fichero nginx-keyfile que contiene la contraseña de la clave privada cifrada.
2. Use la utilidad openssl para ejecutar el siguiente comando:
<openssl_cmd> rsa -aes256 -passout pass:<Misma contraseña que la definida en nginx-keyfile> -in "<Directorio de instalación de Flow>\SSL\orchestration.key" -out "<Directorio de instalación de Flow>\SSL\orchestration_enc.key"
Donde, en Windows, <openssl_cmd>: ejecute cd C:/opscode/chef/embedded/bin, escriba openssl y ejecute el comando anterior.
En Linux, <openssl_cmd>: escriba openssl y ejecute el comando anterior.
3. Borre orchestration.key y cambie el nombre de orchestration_enc.key a orchestration.key.
4. En el fichero <Directorio de configuración de Nginx>\conf.d\vhost-flow.conf, añada la siguiente línea después del parámetro ssl_certificate_key:
ssl_password_file "<Directorio de instalación de Flow>\SSL\nginx-keyfile";
Donde <Directorio de configuración de Nginx> es C:\Archivos de programa\nginx-1.18.0\conf en Windows y /etc/nginx en Linux
5. (Solo Linux) Ejecute los siguientes comandos:
a. sudo chown flowuser:flowuser <Directorio de instalación de Flow>\SSL\orchestration.key, donde flowuser es el usuario que ha ejecutado el instalador de ThingWorx Flow.
b. sudo chcon -t httpd_sys_content_t <Directorio de instalación de Flow>\SSL\orchestration.key
c. sudo chown flowuser:flowuser <Directorio de instalación de Flow>\SSL\nginx-keyfile, donde flowuser es el usuario que ha ejecutado el instalador de ThingWorx Flow.
d. sudo chcon -t httpd_sys_content_t <Directorio de instalación de Flow>\SSL\nginx-keyfile
Paso 9: Realizar cambios de seguridad en la configuración de Nginx (8.4.14 y versiones posteriores, 8.5.10 y versiones posteriores)
1. Actualice el fichero <Directorio de configuración de Nginx>\nginx.conf para protegerlo del ataque de fuerza bruta y active el mecanismo de límite de velocidad en Nginx. Esto permite limitar el número de solicitudes realizadas desde una dirección IP específica.
a. Busque las siguientes líneas:
# 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. Quite la marca de comentarios de la primera y la última línea.
c. En la primera línea, modifique la velocidad a 500r/s.
* 
Se puede definir la velocidad (solicitudes por segundo) en un número diferente. Sin embargo, 500 r/s es un número razonable de solicitudes por segundo que los clientes ilegítimos no pueden alcanzar.
d. Verifique que el resultado tenga el siguiente aspecto:
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. Actualice el fichero <Directorio de configuración de Nginx>\nginx.conf para definir la cabecera de control de la caché en no-cache:
a. Busque la siguiente línea:
map $sent_http_content_type $expires {
b. Cambie el valor de text/html a -1.
c. Verifique que el resultado tenga el siguiente aspecto:
map $sent_http_content_type $expires {
default off;
text/html -1;
text/css 30d;
application/javascript 7d;
~image/ 30d;
}
3. Actualice el fichero <Directorio de configuración de Nginx>\conf.d\vhost-flow.conf para bloquear el método HTTP de HEAD:
a. Busque las siguientes líneas:
if ($scheme = "https") {
set $secure_var "secure";
}
b. Añada las siguientes líneas antes de las líneas anteriores:
# block 'head' http method for security reasons
if ($request_method = 'HEAD') {
return 405;
}
c. Verifique que el resultado tenga el siguiente aspecto:
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. Actualice el fichero <Directorio de configuración de Nginx>\conf.d\vhost-flow.conf para evitar redirecciones externas a location ~ ^(/config|/js|/locales|/resources):
a. Busque las siguientes líneas:
location /Thingworx/Flow {
rewrite /Thingworx/Flow/(.*) /$1 break;
try_files $uri $uri/ @flow_api;
}
b. Cambie try_files $uri $uri/ @flow_api; a try_files $uri @flow_api;.
c. Añada las siguientes líneas después de las líneas anteriores:
# avoid external redirects for bellow locations
location ~ ^(/config|/js|/locales|/resources) {
internal;
}
d. Verifique que el resultado tenga el siguiente aspecto:
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. Actualice el fichero <Directorio de configuración de Nginx>\conf.d\vhost-flow.conf para bloquear el método HTTP de options y añada el límite de velocidad para la protección contra el ataque de fuerza bruta para las siguientes ubicaciones:
Ubicación
Paso 1: Buscar ubicación
Paso 2: Añadir el contenido especificado después de la ubicación
Paso 3: Quitar la marca de comentario de la línea especificada
Paso 4: Añadir el contenido especificado a la línea sin marca de comentario
Paso 5: Verificar el resultado
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. Actualice el fichero <Directorio de configuración de Nginx>\conf.d\vhost-flow.conf para añadir el límite de velocidad para la protección contra el ataque de fuerza bruta de las siguientes ubicaciones:
Ubicación
Paso 1: Buscar ubicación
Paso 2: Quitar la marca de comentario de la línea especificada
Paso 3: Añadir el contenido especificado a la línea sin marca de comentario
Paso 4: Verificar el resultado
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;
(Opcional) Paso 10: Realizar cambios de configuración en ThingWorx Foundation y ThingWorx Flow
Si fuera necesario, realice cambios en la configuración de ThingWorx Foundation y los servicios de ThingWorx Flow.
Esto puede ser necesario si un parche introduce nuevos valores de configuración. Consulte las notas de la versión para obtener más información sobre los nuevos valores de configuración y los ficheros en los que se pueden utilizar.
Paso 11: Reinicializar la base de datos con las últimas actualizaciones de ThingWorx Flow
La reinicialización de la base de datos de ThingWorx Flow no afecta a las entidades existentes propiedad del usuario, como los flujos de trabajo o activadores.
1. Inicie el símbolo del sistema y navegue hasta /ThingWorxOrchestration/modules/db_seed.
2. Ejecute el siguiente comando:
flow-deploy migrate -u <nombre de usuario de base de datos de Flow> -p <contraseña de base de datos de Flow> -s <directorio de instalación de Flow>
En Linux, ejecute el comando flow-deploy como usuario que no es root.
(Opcional) Paso 12: Implementar conectores personalizados
* 
Complete los pasos de esta sección solo si se han desarrollado conectores personalizados con el SDK de ThingWorx Flow.
1. Asegúrese de que el código fuente esté disponible en el mismo sistema.
2. Navegue al directorio raíz del conector y ejecute el comando flow-deploy connector.
Para obtener más información, consulte Implementación de conectores.
3. Ejecute el siguiente comando para inicializar el conector personalizado en la base de datos:
flow-deploy migrate -u <nombre de usuario de base de datos de Flow> -p <contraseña de base de datos de Flow> -s <directorio de instalación de Flow>
Paso 13: Iniciar los servicios y verificar su estado
1. Inicie los servicios que se han detenido en el paso 1 en el siguiente orden:
a. RabbitMQ/rabbitmq.service
* 
Compruebe los registros de RabbitMQ para verificar que el servicio RabbitMQ se haya iniciado completamente antes de iniciar el siguiente servicio.
Windows: /ThingworxOrchestration/modules/RabbitMQ/log/rabbit@{nombre de host}.log
Linux: /var/log/rabbitmq/rabbit@{nombre de host}.log
b. ThingWorx-Foundation
c. ThingWorx-Flow
d. ThingWorxOrchestrationNginx o nginx
2. Revise los registros de ThingWorx Foundation y verifique que no se hayan producido errores ni avisos inesperados durante el inicio.
3. Para verificar que ThingWorx Flow se ha instalado correctamente, inicie el símbolo del sistema como administrador y ejecute el siguiente comando:
pm2 ls
El estado de los siguientes componentes de ThingWorx Flow debe ser "en línea":
flow-api
flow-engine
flow-exchange
flow-lookup
flow-oauth-server
flow-trigger
Para ver los registros de un servicio individual, ejecute el comando pm2 logs <nombre de servicio>.
Paso 14: Reiniciar el Subsistema de flujo de trabajo
1. Conéctese a ThingWorx Foundation.
2. Navegue hasta Subsistema > Subsistema de flujo de trabajo.
3. Pulse en Reiniciar.
Paso 15: Verificar si la funcionalidad funciona según lo previsto
Pruebe la funcionalidad en ThingWorx Foundation y ThingWorx Flow para verificar que funciona según lo previsto. Verifique que se pueden componer flujos de trabajo en ThingWorx Composer y en el editor de flujos de trabajo. Por ejemplo, se pueden realizar las siguientes tareas:
Conectarse al tablero de ThingWorx Flow. Para saber cómo acceder a ThingWorx Flow y ThingWorx Composer, consulte Acceso a ThingWorx Flow y ThingWorx Composer.
Cree autorizaciones y conexiones para cada conector que desee utilizar.
Paso 16: Borrar la carpeta tw-security-common-nodejs_<anterior-8.x.x>
En la carpeta /ThingWorxOrchestration/cryptography, borre la carpeta tw-security-common-nodejs_<anterior-8.x.x>.
(Opcional) Paso 17: Borrar la carpeta modules-<anterior-8.x.x>
Una vez que se haya validado y verificado que la actualización se ha realizado correctamente y los flujos se están ejecutando correctamente (y la versión anterior ya no es necesaria), borre la carpeta modules-<anterior-8.x.x>.
ThingWorx Flow se ha actualizado correctamente.
* 
Si la ejecución del flujo en el motor se detiene repentinamente, siga los pasos de Resolución de problemas de instalación de ThingWorx Flow.