Instalación de Java y Apache Tomcat (RHEL)
En los siguientes pasos, reemplace xx o xxx por el número de compilación que se utilice.
1. Si se utiliza AzureSQL para la base de datos, se debe ir a Utilización de Azure SQL Server como proveedor de persistencia. Realice los pasos que se indican en esa sección para configurar la base de datos y se le volverá a remitir a esta sección.
2. Se utiliza MSSQL para la base de datos, vaya al tema Utilización de Microsoft SQL Server como proveedor de persistencia . Realice los pasos que se indican en esa sección para configurar la base de datos y se le volverá a remitir a esta sección.
3. Consulte Requisitos del sistema ThingWorx para conocer los requisitos de la versión y, a continuación, descargue el fichero Java (JDK) RPM del sitio web de Oracle.
4. Ejecute el instalador de Java:
$ sudo rpm -i jdk-8uxxx-linux-x64.rpm
5. Cree el directorio y mueva el JDK:
$ sudo mkdir -p /usr/lib/jvm
$ sudo mv /usr/java/jdk1.8.0_xxx/ /usr/lib/jvm/
6. Defina las alternativas de Java:
$ sudo alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.8.0_xxx/bin/java 1
$ sudo alternatives --install /usr/bin/keytool keytool /usr/lib/jvm/jdk1.8.0_xxx/bin/keytool 1
7. Cambie los permisos de acceso:
$ sudo chmod a+x /usr/bin/java
$ sudo chmod a+x /usr/bin/keytool
Si se recibe un error, utilice el siguiente comando:
$ sudo chmod -f a+x /usr/bin/keytool
8. Cambie el propietario:
$ sudo chown -R root:root /usr/lib/jvm/jdk1.8.0_xxx/
9. Configure los vínculos maestros:
$ sudo alternatives --config java
Seleccione la opción que contiene /usr/lib/jvm/jdk1.8.0_xxx/bin/java
$ sudo rm /usr/java/latest
$ sudo ln -s /usr/lib/jvm/jdk1.8.0_xxx /usr/java/latest
$ sudo ln -s /usr/lib/jvm/jdk1.8.0_xxx/bin/keytool /usr/bin/keytool
Si se recibe un error de File Exists, desestímelo y continúe.
$ sudo alternatives --config keytool
10. Verifique la versión de Java. Es posible que la versión del usuario no sea la versión del ejemplo que se proporciona a continuación:
$ java -version
java version "1.8.0_xxx"
Java(TM) SE Runtime Environment (build 1.8.0_xxx-bxx)
Java HotSpot(TM) 64-Bit Server VM (build xx.xx-bxx, mixed mode)
11. Instale Tomcat. Descargue el instalador de Tomcat. En estos pasos del proceso se utiliza Tomcat 8.5.xx, donde xx se debe reemplazar por la versión que se utilice.
$ wget https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.xx/bin/apache-tomcat-8.5.xx.tar.gz
* 
Entre las prácticas recomendadas se incluye la verificación de la integridad del fichero de Tomcat mediante el uso de firmas o sumas de control para cada versión. Consulte la documentación de Apache para obtener más información.
12. Extraiga el contenido:
$ tar -xf apache-tomcat-8.5.xx.tar.gz
13. Mueva Tomcat a /usr/share/tomcat8.5:
$ sudo mkdir -p /usr/share/tomcat8.5
$ sudo mv apache-tomcat-8.5.xx /usr/share/tomcat8.5/8.5.xx
14. Defina variables de entorno en /etc/environment:
$ export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_xxx
$ export CATALINA_HOME=/usr/share/tomcat8.5/8.5.xx
15. Cambie el directorio a /usr/share/tomcat8.5/8.5.xx:
$ cd /usr/share/tomcat8.5/8.5.xx
16. Añada el usuario y el grupo al sistema:
$ sudo groupadd -r tomcat8.5
$ sudo useradd -r -d /usr/share/tomcat8.5 -g tomcat8.5 -s /bin/false tomcat8.5
$ sudo chown -R tomcat8.5:tomcat8.5 /usr/share/tomcat8.5
17. Cambie los permisos de acceso y el propietario de bin/, lib/ y webapps/:
$ sudo chown -Rh tomcat8.5:tomcat8.5 bin/ lib/ webapps/
$ sudo chmod 775 bin/ lib/ webapps/
18. Cambie los permisos de acceso y el propietario de usr/share/tomcat8.5/8.5xx:
sudo chown -R tomcat8.5:tomcat8.5 /usr/share/tomcat8.5/8.5.xx
sudo chmod -R 775 /usr/share/tomcat8.5/8.5.xx
19. Cambie los permisos de acceso y el propietario de conf/:
$ sudo chown -Rh root:tomcat8.5 conf/
$ sudo chmod -R 640 conf
sudo chown -R tomcat8.5:tomcat8.5 /usr/share/tomcat8.5/8.5.xx
sudo chmod -R 777 /usr/share/tomcat8.5/8.5.xx
Se deben revisar los permisos y la propiedad para un sistema de producción a fin de aumentar la seguridad en un nivel de sistema operativo.
20. Cambie los permisos de acceso de logs/, temp/ y work/:
$ sudo chown -R tomcat8.5:adm logs/ temp/ work/
$ sudo chmod 760 logs/ temp/ work/
21. Cree el certificado autofirmado:
$ /usr/lib/jvm/jdk1.8.0_xxx/jre/bin/keytool -genkey -alias tomcat8.5 -keyalg RSA
22. Siga las instrucciones para completar el proceso de creación del certificado.
Defina la contraseña de keystore.
Siga las instrucciones para configurar el certificado de seguridad.
Defina la contraseña del usuario tomcat8.5 en la misma contraseña que la de keystore.
$ sudo cp ~/.keystore /usr/share/tomcat8.5/8.5.xx/conf/
$ sudo chown root:tomcat8.5 /usr/share/tomcat8.5/8.5.xx/conf/.keystore
$ sudo chmod 640 /usr/share/tomcat8.5/8.5.xx/conf/.keystore
23. Quite la marca de comentario del elemento Manager en context.xml para evitar que las sesiones persistan después de los reinicios. Abra /usr/share/tomcat8.5/8.5.xx/conf/context.xml en un editor de texto (como usuario raíz) y quite ‘<!—‘ de delante de ‘<Manager pathname="" />’ y ‘-->’ de después.
24. Guarde el fichero.
25. Defina un usuario administrador de Apache en tomcat-users.xml. Abra /usr/share/tomcat8.5/8.5.xx/conf/tomcat-users.xml en un editor de texto (como usuario raíz). Justo encima de la línea final (</tomcat-users>), añada la siguiente línea:
<user username="<Tomcat username> " password="<Tomcat password> " roles="manager,manager-gui"/>
26. Guarde el fichero.
* 
Los roles incluidos sirven para facilitar las pruebas y se pueden quitar por motivos de seguridad.
* 
Por razones de seguridad, es fundamental desactivar el conector de AJP, si no lo está por defecto, realizando el siguiente paso.
27. En la ubicación de la instalación de Tomcat, abra conf/server.xml y busque la siguiente línea. Si se encuentra, coméntelo y guarde el fichero:
<Connector port ="8009" protocol="AJP/1.3" redirectPort="8443"/>
* 
En Apache Tomcat 9.0 y versiones posteriores, el atributo rejectIllegalHeader está definido en verdadero por defecto. PTC no soporta ni recomienda la modificación manual del fichero conf/web.xml para definir este atributo en falso.
28. Configure Tomcat como servicio que se inicia en el arranque. En primer lugar, cree JSVC si aún no está instalado en el sistema:
$ sudo yum install gcc
$ cd /usr/share/tomcat8.5/8.5.xx/bin/
$ sudo tar xvfz commons-daemon-native.tar.gz
$ cd commons-daemon-*-native-src/unix
$ sudo ./configure --with-java=$JAVA_HOME
$ sudo yum install make
$ sudo make
$ sudo cp jsvc ../..
29. Cree el fichero de servicio Tomcat:
$ sudo touch /usr/lib/systemd/system/tomcat.service
30. Abra /usr/lib/systemd/system/tomcat.service en un editor de texto (como usuario raíz) y pegue lo siguiente:
* 
En el siguiente ejemplo, defina los valores -Xms y -Xmx en el 75 % de la memoria del sistema operativo disponible (por ejemplo, 12 GB para un sistema de 16 GB de RAM). Consulte Ajuste de JVM para obtener más información.
[Unit]
Description=Apache Tomcat Web Application Container
After=network.target

[Service]
Type=forking
PIDFile=/var/run/tomcat.pid
Environment=CATALINA_PID=/var/run/tomcat.pid
Environment=JAVA_HOME=/usr/lib/jvm/jdk1.8.0_xxx
Environment=CATALINA_HOME=/usr/share/tomcat8.5/8.5.xx
Environment=CATALINA_BASE=/usr/share/tomcat8.5/8.5.xx
Environment=CATALINA_OPTS=

ExecStart=/usr/share/tomcat8.5/8.5.xx/bin/jsvc \
-Dcatalina.home=${CATALINA_HOME} \
-Dcatalina.base=${CATALINA_BASE} \
-Djava.awt.headless=true -Djava.net.preferIPv4Stack=true -Dserver -XX:+UseNUMA \
-XX:+UseG1GC -Dfile.encoding=UTF-8 \
-Djava.library.path=${CATALINA_BASE}/webapps/Thingworx/WEB-INF/extensions \
-Xms=<75% of available OS memory> \
-Xmx=<75% of available OS memory> \
-cp ${CATALINA_HOME}/bin/commons-daemon.jar:${CATALINA_HOME}/bin/bootstrap.jar:${CATALINA_HOME}/bin/tomcat-juli.jar \
-user tomcat8.5 \
-java-home ${JAVA_HOME} \
-pidfile /var/run/tomcat.pid \
-errfile ${CATALINA_HOME}/logs/catalina.out \
-outfile ${CATALINA_HOME}/logs/catalina.out \
$CATALINA_OPTS \
org.apache.catalina.startup.Bootstrap
[Install]
WantedBy=multi-user.target
31. Si se instala ThingWorx Platform por primera vez, se debe añadir la opción Java -Duser.timezone=UTC al bloque ExecStart block anterior, inmediatamente después de la línea que empieza por -Djava.library.path. La zona horaria UTC no reconoce el horario de verano. La definición de esta opción impide sobrescribir datos cuando se producen cambios en el horario de verano.
* 
Los clientes existentes NO deben actualizar esta configuración en estos momentos.
32. Cree un nuevo fichero en el fichero Tomcat usr/share/tomcat8.5/8.5.xx/bin, setenv.sh:
CATALINA_OPTS="$CATALINA_OPTS -Djava.library.path=/usr/share/tomcat8.5/8.5.xx/webapps/Thingworx/WEB-INF/extensions"
33. Defina Tomcat para que se ejecute en el arranque del sistema:
$ sudo systemctl enable tomcat.service
De este modo, el usuario podrá controlar el servicio Tomcat con los siguientes comandos:
sudo systemctl start tomcat
sudo systemctl stop tomcat
sudo systemctl restart tomcat
sudo systemctl status tomcat
34. En la ubicación de la instalación de Tomcat, abra CATALINA_HOME/conf/web.xml. Reemplace la página de error por defecto (el valor por defecto es el seguimiento de pila) mediante la adición de lo siguiente al fichero web.xml. Coloque lo siguiente dentro de la etiqueta web-app (después de la etiqueta welcome-file-list). Una aplicación Web bien configurada sustituirá este valor por defecto en CATALINA_HOME/webapps/APP_NAME/WEB-INF/web.xml por lo que no producirá problemas.
<error-page><exception-type>java.lang.Throwable</exception-type><location>/error.jsp</location></error-page>
35. En la ubicación de la instalación de Tomcat, abra CATALINA_HOME/conf/server.xml. Añada lo siguiente dentro de las etiquetas <Host> </Host>:
<Valve className="org.apache.catalina.valves.ErrorReportValve" showReport="false" showServerInfo="false" />
36. Quite todas las webapps de Tomcat que se encuentren en /<ruta_de_tomcat>/webapps/. Al quitar estas aplicaciones, se impide el acceso innecesario a Tomcat, específicamente en el contexto que permitiría a los usuarios ver cookies de otros usuarios.
37. PTC recomienda encarecidamente utilizar TLS al ejecutar ThingWorx. Para obtener instrucciones detalladas sobre la configuración de TLS, consulte este artículo de soporte técnico.
38. Si la aplicación requiere un conjunto de cifrado específico, consulte la siguiente documentación para obtener información de configuración:
Configuración de las opciones de Ulimit
La ejecución de los procesos del servidor de aplicaciones Tomcat como usuario "raíz" compromete la seguridad general del sistema e infringe las prácticas recomendadas estándar del sector. Para evitarlo, PTC recomienda modificar el fichero /etc/security/limits.d/80-nofiles.conf para incluir opciones específicas del usuario que está previsto que ejecute los servidores de aplicaciones.
Ejemplo de fichero de configuración
La siguiente configuración es un ejemplo de la configuración por defecto del sistema operativo Redhat 7.1 ubicado en /etc/security/limits.d/80-nofiles.conf con los cambios necesarios. En el siguiente ejemplo, thingworx es el nombre del usuario para el servidor de aplicaciones.

thingworx soft nofile 30720
thingworx hard nofile 30720
Para confirmar este cambio, cierre la sesión y, a continuación, inicie sesión en el sistema.
Instalación de ThingWorx/PostgreSQL