Installare Java e Apache Tomcat (RHEL)
Nella procedura seguente sostituire xx o xxx con il numero di build che si sta utilizzando.
1. Se si utilizza Azure SQL per il database, passare a Utilizzo di Azure SQL Server come provider di persistenza. Attenersi alla procedura descritta in tale sezione per impostare il database. Si verrà quindi reindirizzati alla presente sezione.
2. Se si utilizza MSSQL per il database, passare a Utilizzo di MSSQL come provider di persistenza . Attenersi alla procedura descritta in tale sezione per impostare il database. Si verrà quindi reindirizzati alla presente sezione.
3. Scaricare il file RPM (JDK) Java dal sito Web di Oracle.
4. Eseguire il programma di installazione di Java:
$ sudo rpm -i jdk-8uxxx-linux-x64.rpm
5. Creare la directory e spostarvi il JDK:
$ sudo mkdir -p /usr/lib/jvm
$ sudo mv /usr/java/jdk1.8.0_xxx/ /usr/lib/jvm/
6. Impostare le alternative 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. Modificare i permessi di accesso:
$ sudo chmod a+x /usr/bin/java
$ sudo chmod a+x /usr/bin/keytool
* 
Se viene visualizzato un errore, utilizzare il codice riportato di seguito.
$ sudo chmod -f a+x /usr/bin/keytool
8. Modificare il proprietario:
$ sudo chown -R root:root /usr/lib/jvm/jdk1.8.0_xxx/
9. Configurare i link master:
$ sudo alternatives --config java
* 
Selezionare l'opzione che 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
* 
È possibile che venga visualizzato un errore File Exists. In questo caso, ignorarlo e continuare.
$ sudo alternatives --config keytool
10. Verificare la versione di Java. La versione della build in uso potrebbe essere diversa.
$ 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 25.45-bxx, mixed mode)
11. Installare Tomcat. Scaricare il programma di installazione di Tomcat. I passi di questa procedura utilizzano Tomcat 8.5.xx, in cui xx viene sostituito con la versione in uso.
$ wget https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.xx/bin/apache-tomcat-8.5.xx.tar.gz
* 
Le best practice includono la verifica dell'integrità del file di Tomcat tramite l'utilizzo delle firme o dei checksum per ogni release. Per ulteriori informazioni, fare riferimento alla documentazione di Apache.
12. Estrarre il contenuto:
$ tar -xf apache-tomcat-8.5.xx.tar.gz
13. Spostare Tomcat in /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. Definire le variabili di ambiente in /etc/environment:
$ export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_xxx
$ export CATALINA_HOME=/usr/share/tomcat8.5/8.5.xx
15. Modificare la directory in /usr/share/tomcat8.5/8.5.xx:
$ cd /usr/share/tomcat8.5/8.5.xx
16. Aggiungere utente e gruppo 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. Modificare il proprietario e i permessi di accesso di bin/, lib/ e webapps/:
$ sudo chown -Rh tomcat8.5:tomcat8.5 bin/ lib/ webapps/
$ sudo chmod 775 bin/ lib/ webapps/
18. Modificare il proprietario e i permessi di accesso di usr/share/tomcat8.5/8.5.xx:
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. Modificare il proprietario e i permessi di accesso di conf/. Per un sistema di produzione è consigliabile rivedere i permessi e la proprietà per aumentare la protezione a livello di sistema operativo.
$ 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
20. Modificare i permessi di accesso di logs/, temp/ e work/:
$ sudo chown -R tomcat8.5:adm logs/ temp/ work/
$ sudo chmod 760 logs/ temp/ work/
21. Creare un certificato autofirmato:
$ /usr/lib/jvm/jdk1.8.0_xxx/jre/bin/keytool -genkey -alias tomcat8.5 -keyalg RSA
22. Seguire le istruzioni per completare il processo di creazione del certificato.
Impostare la password del file keystore.
Seguire le istruzioni per configurare il certificato di protezione.
Impostare la password utente di tomcat8.5 sulla stessa password del 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. Eliminare il commento dell'elemento Manager in context.xml per impedire la persistenza delle sessioni tra gli avvii. Aprire il file /usr/share/tomcat8.5/8.5.xx/conf/context.xml in un editor di testo (come radice) e rimuovere il segno ‘<!—‘ prima di ‘<Manager pathname="" />’ e il segno ‘-->’ dopo.
24. Salvare il file.
25. Definire un utente di Apache Manager nel file tomcat-users.xml. Aprire il file /usr/share/tomcat8.5/8.5.xx/conf/tomcat-users.xml in un editor di testo (come radice). Appena sopra la riga finale (</tomcat-users>) aggiungere la riga seguente:
<user username="<Tomcat username> " password="<Tomcat password> " roles="manager,manager-gui"/>
26. Salvare il file.
* 
i ruoli inclusi servono a facilitare i test e possono essere rimossi se la protezione rappresenta un problema.
* 
Per motivi di sicurezza è fondamentale disattivare il connettore AJP, se non è già stato disattivato per default, effettuando l'operazione seguente.
27. Nel percorso di installazione di Tomcat aprire conf/server.xml e cercare la riga riportata di seguito. Se la si trova, commentarla e salvare il file:
<Connector port ="8009" protocol="AJP/1.3" redirectPort="8443"/>
* 
In Apache Tomcat 9.0 e versioni successive, il valore di default dell'attributo rejectIllegalHeader è true. La modifica manuale del file conf/web.xml per impostare questo attributo su false non è consigliata o supportata da PTC.
28. Configurare Tomcat come servizio da inizializzare all'avvio. Compilare innanzitutto JSVC, se non è già installato nel 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. Creare il file del servizio Tomcat:
$ sudo touch /usr/lib/systemd/system/tomcat.service
30. Aprire il file /usr/lib/systemd/system/tomcat.service in un editor di testo (come radice) e incollare il codice riportato di seguito.
* 
Nell'esempio che segue, impostare i valori di -Xms e -Xmx sul 75% della memoria del sistema operativo disponibile (ad esempio, 12 GB per un sistema con 16 GB di RAM). Per ulteriori informazioni, fare riferimento a Ottimizzazione di JVM.
[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. Creare un nuovo file nel percorso di Tomcat usr/share/tomcat8.5/8.5.xx/bin denominato setenv.sh:
CATALINA_OPTS="$CATALINA_OPTS -Djava.library.path=/usr/share/tomcat8.5/8.5.xx/webapps/Thingworx/WEB-INF/extensions"
32. Impostare Tomcat per l'esecuzione all'avvio del sistema e consentire all'utente di controllare il servizio Tomcat:
$ sudo systemctl enable tomcat.service
sudo systemctl start tomcat
sudo systemctl stop tomcat
sudo systemctl restart tomcat
sudo systemctl status tomcat
33. Nel percorso di installazione di Tomcat aprire CATALINA_HOME/conf/web.xml. Sostituire la pagina di errore di default (per default è l'analisi dello stack) aggiungendo quanto segue nel file web.xml. Inserire quanto specificato di seguito all'interno del tag web-app (dopo il tag welcome-file-list). Un'applicazione Web configurata correttamente sovrascrive questa impostazione di default in CATALINA_HOME/webapps/APP_NAME/WEB-INF/web.xml, pertanto non causerà problemi.
<error-page><exception-type>java.lang.Throwable</exception-type><location>/error.jsp</location></error-page>
34. Nel percorso di installazione di Tomcat aprire CATALINA_HOME/conf/server.xml. Aggiungere la stringa seguente all'interno dei tag <Host> </Host>:
<Valve className="org.apache.catalina.valves.ErrorReportValve" showReport="false" showServerInfo="false" />
35. Rimuovere tutte le app Web Tomcat situate in /<parcorso_tomcat>/webapps/. La rimozione di queste app impedisce l'accesso non necessario a Tomcat, in particolare nel contesto che consentirebbe agli utenti di visualizzare i cookie di altri utenti.
36. PTC consiglia vivamente di utilizzare TLS quando si esegue ThingWorx. Per istruzioni dettagliate sull'impostazione di TLS, fare riferimento a questo articolo del supporto tecnico.
37. Se l'applicazione richiede una suite di crittografia specifica, fare riferimento alla documentazione riportata di seguito per le informazioni di configurazione.
Configurazione delle impostazioni di Ulimit
L'esecuzione dei processi del server applicazioni Tomcat come utente "root" compromette la sicurezza del sistema generale e viola le best practice standard del settore. Per ovviare a questi problemi, PTC consiglia di modificare il file /etc/security/limits.d/80-nofiles.conf in modo da includere impostazioni specifiche dell'utente che deve eseguire i server applicazioni.
Esempio di file di configurazione
Di seguito viene riportato un esempio della configurazione di default del sistema operativo Redhat 7.1 disponibile all'indirizzo /etc/security/limits.d/80-nofiles.conf con le dovute modifiche. Nell'esempio seguente, thingworx è il nome dell'utente per il server applicazioni.

thingworx soft nofile 30720
thingworx hard nofile 30720
Per confermare questa modifica, disconnettersi e accedere nuovamente al sistema.
Installare ThingWorx/PostgreSQL
2. Per PostgreSQL, passare a Installare e configurare PostgreSQL.