Instalación y configuración > Instalación de ThingWorx > Instalación de Ubuntu > PostgreSQL > Instalación de Java y Apache Tomcat (Ubuntu)
Instalación de Java y Apache Tomcat (Ubuntu)
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. Actualice los paquetes Ubuntu:
$ sudo apt-get update
4. Instale y configure las opciones del protocolo de tiempo de redes (NTP) para la sincronización de tiempos:
$ sudo apt-get install ntp
* 
La configuración por defecto para NTP es suficiente. Para obtener información adicional sobre la configuración de NTP (fuera del ámbito de esta documentación), consulte los siguientes recursos:
5. Edite las propiedades AUTHBIND para permitir que Tomcat enlace con puertos por debajo de 1024:
$ sudo apt-get install authbind
6. Descargue el fichero tar de Java JDK desde el sitio Web de Oracle o ejecute lo siguiente:
wget -c --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.tar.gz
7. Extraiga el fichero tar:
$ tar -xf jdk-8uxxx-linux-x64.tar.gz
8. Cree el directorio moviendo el JDK a /usr/lib/jvm:
* 
Si el directorio no está vacío, se mostrará un mensaje de aviso.
$ sudo mkdir -p /usr/lib/jvm
$ sudo mv jdk1.8.0_xxx/ /usr/lib/jvm/
9. Añada alternativas al sistema:
$ sudo update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/jdk1.8.0_xxx/bin/java" 1
$ sudo update-alternatives --install "/usr/bin/keytool" "keytool" "/usr/lib/jvm/jdk1.8.0_xxx/bin/keytool" 1
10. Cambie los permisos de acceso:
$ sudo chmod a+x /usr/bin/java
$ sudo chmod a+x /usr/bin/keytool
11. Cambie el propietario:
$ sudo chown -R root:root /usr/lib/jvm/jdk1.8.0_xxx/
12. Configure los vínculos maestros:
$ sudo update-alternatives --config java
$ sudo update-alternatives --config keytool
* 
Nothing to configure es una respuesta normal a este comando y no es un error. Se pueden instalar ejecutables adicionales en /usr/lib/jvm/jdk1.8.0_xxx/bin/ siguiendo el conjunto de pasos anterior.
13. Verifique la versión de Java:
$ java -version
Debe devolver algo similar a lo siguiente (las especificaciones de compilación pueden ser diferentes):
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)
14. Descargue Apache 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 http://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.
15. Extraiga el fichero tar:
$ tar -xf apache-tomcat-8.5.xx.tar.gz
16. Cree y cambie el propietario de /usr/share/tomcat8.5 y mueva Tomcat a la siguiente ubicación. Añada el usuario y el grupo al sistema:
$ sudo mkdir -p /usr/share/tomcat8.5
$ sudo mv apache-tomcat-8.5.xx /usr/share/tomcat8.5/8.5.xx
$ sudo addgroup --system tomcat8.5 --quiet -force-badname
$ sudo adduser --system --home /usr/share/tomcat8.5/ --no-create-home --ingroup tomcat8.5 --disabled-password --force-badname --shell /bin/false tomcat8.5
$ sudo chown -R tomcat8.5:tomcat8.5 /usr/share/tomcat8.5
17. 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
18. Cambie el directorio a $CATALINA_HOME:
$ cd $CATALINA_HOME
19. 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/
20. 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
21. Cambie los permisos de acceso y el propietario de conf/:
$ sudo chown -Rh root:tomcat8.5 conf/
$ sudo chmod -R 650 conf/
22. 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/
23. Cree el certificado autofirmado:
$ sudo $JAVA_HOME/bin/keytool -genkey -alias tomcat8.5 -keyalg RSA -keystore $CATALINA_HOME/conf/.keystore
24. 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 chown root:tomcat8.5 $CATALINA_HOME/conf/.keystore
$ sudo chmod 640 $CATALINA_HOME/conf/.keystore
25. Quite la marca de comentario del elemento Manager en $CATALINA_HOME/conf/context.xml para evitar que las sesiones persistan después de los reinicios:
<Manager pathname="" />
* 
Por razones de seguridad, es fundamental desactivar el conector de AJP, si no lo está por defecto, realizando el siguiente paso.
26. 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.
Si se recibe un error de que no existe el directorio, utilice los siguientes comandos para asegurarse de que el puerto 443 funcione:
sudo touch /etc/authbind/byport/443
sudo chmod 700 /etc/authbind/byport/443
sudo chown tomcat8.5:tomcat8.5 /etc/authbind/byport/443
27. Defina un usuario en $CATALINA_HOME/conf/tomcat-users.xml:
sudo vi $CATALINA_HOME/conf/tomcat-users.xml
<user username="<Tomcat user name> " password="<Tomcat password> " roles="manager"/>
28. Determine el UID de usuario tomcat8.5:
$ id -u tomcat8.5
29. Con este número, cree un fichero de ID en /etc/authbind/byuid/:
* 
Cambie <uid> por el número que se ha devuelto en el paso anterior.
$ sudo touch /etc/authbind/byuid/<uid>
sudo vi /etc/authbind/byuid/<uid>
30. Edite el fichero del paso anterior y pegue lo siguiente:
0.0.0.0/0:1,1023
31. Cambie los permisos de acceso y el propietario de /etc/authbind/byuid/<uid>:
$ sudo chown tomcat8.5:tomcat8.5 /etc/authbind/byuid/<uid>
$ sudo chmod 700 /etc/authbind/byuid/<uid>
32. Modifique $CATALINA_HOME/bin/startup.sh para que siempre se utilice authbind:
sudo vi $CATALINA_HOME/bin/startup.sh
Comente lo siguiente en el fichero:
#exec "$PRGDIR"/"$EXECUTABLE" start "$@"
33. Al final del fichero, añada lo siguiente:
exec authbind --deep "$PRGDIR"/"$EXECUTABLE" start "$@"
34. En /etc/init.d, cree el fichero tomcat8.5:
$ sudo touch /etc/init.d/tomcat8.5
35. Edite el fichero e introduzca el siguiente contenido:
$ sudo vi /etc/init.d/tomcat8.5

CATALINA_HOME=/usr/share/tomcat8.5/8.5.xx
case $1 in
start)
/bin/su -p -s /bin/sh tomcat8.5 $CATALINA_HOME/bin/startup.sh
;;
stop)
/bin/su -p -s /bin/sh tomcat8.5 $CATALINA_HOME/bin/shutdown.sh
;;
restart)
/bin/su -p -s /bin/sh tomcat8.5 $CATALINA_HOME/bin/shutdown.sh
/bin/su -p -s /bin/sh tomcat8.5 $CATALINA_HOME/bin/startup.sh
;;
esac
exit 0
36. Cambie los permisos de acceso de etc/init.d/tomcat8.5 y cree vínculos simbólicos:
$ sudo chmod 755 /etc/init.d/tomcat8.5
$ sudo ln -s /etc/init.d/tomcat8.5 /etc/rc1.d/K99tomcat
$ sudo ln -s /etc/init.d/tomcat8.5 /etc/rc2.d/S99tomcat
37. Configure Tomcat como servicio que se inicia en el arranque. Cree JSVC si aún no está instalado en el sistema. Si ya está instalado, vaya al siguiente paso:
$ sudo apt-get install gcc
38. Configure el servicio Tomcat en el arranque:
$ 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 apt-get install make
$ sudo make
$ sudo cp jsvc ../..
39. Cree el fichero de servicio Tomcat:
sudo touch /etc/systemd/system/tomcat8.5.service
40. Abra /etc/systemd/system/tomcat8.5.service en un editor de texto (como raíz):
sudo vi /etc/systemd/system/tomcat8.5.service
a. Pegue lo siguiente en el fichero de servicio Tomcat:
* 
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 -Dd64 -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
b. Si el servicio Tomcat no se inicia automáticamente después del reinicio y se recibe el siguiente error al ejecutar sudo systemctl enable tomcat8.5.service:
update-rc.d: error: tomcatx.x Default-Start contains no runlevels, aborting.
A continuación, se requiere el siguiente paso:
Quite el fichero tomcat8.5 ubicado en /etc/init.d y vuelva a ejecutar el siguiente comando:
sudo systemctl enable tomcat8.5.service
41. Cree un nuevo fichero en el fichero /bin de Tomcat denominado setenv.sh:
cd $CATALINA_HOME/bin
sudo touch setenv.sh
sudo vi setenv.sh
CATALINA_OPTS="$CATALINA_OPTS -Djava.library.path=/usr/share/tomcat8.5/8.5.xx/webapps/Thingworx/WEB-INF/extensions"
42. 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>
43. 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" />
44. 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.
45. 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.
46. Si la aplicación requiere un conjunto de cifrado específico, consulte la siguiente documentación para obtener información de configuración:
47. (PASO OPCIONAL) Para aumentar la configuración de la caché por defecto que afecta al almacenamiento en caché de ficheros estáticos, añada la siguiente línea dentro de las etiquetas <context></context> del fichero $CATALINA_HOME/conf/context.xml:
<Resources cacheMaxSize="501200" cacheObjectMaxSize="2048" cacheTtl="60000"/>
Al aumentar esta configuración se mejora el rendimiento y se evita el siguiente mensaje de Tomcat:
WARNING: Unable to add the resource at [/Common/jquery/jquery-ui.js] to the cache because there was insufficient free space available after evicting expired cache entries - consider increasing the maximum size of the cache
48. H2 y Azure SQL: vaya a Instalación de ThingWorx.