Installation et configuration > Installation de ThingWorx > Installation Ubuntu > H2/Azure SQL > Installation de Java et d'Apache Tomcat (Ubuntu)
Installation de Java et d'Apache Tomcat (Ubuntu)
Dans les étapes ci-dessous, remplacez xx ou xxx par le numéro de build que vous utilisez.
1. Si vous utilisez AzureSQL pour votre base de données, consultez la rubrique Utilisation d'Azure SQL Server en tant que fournisseur de persistance. Suivez les étapes de cette rubrique pour configurer la base de données et revenez à cette rubrique.
2. Si vous utilisez MS SQL pour votre base de données, consultez la rubrique Utilisation de MS SQL en tant que fournisseur de persistance. Suivez les étapes de cette rubrique pour configurer la base de données et revenez à cette rubrique.
3. Mettez à jour les packages Ubuntu :
$ sudo apt-get update
4. Installez et configurez les paramètres NTP (Network Time Protocol) pour la synchronisation de l'heure. La configuration NTP par défaut est suffisante. Pour plus d'informations sur la configuration de NTP (au-delà de la portée de cette documentation), reportez-vous aux ressources suivantes:
$ sudo apt-get install ntp
5. Modifiez les propriétés AUTHBIND pour permettre à Tomcat de joindre les ports de numéro inférieur à 1024 :
$ sudo apt-get install authbind
6. Pour plus d'informations sur les versions requises, consultez la rubrique Configuration requise pour ThingWorx. Téléchargez le fichier tar Java (JDK) approprié à partir du site Web d'Oracle.
7. Extrayez le fichier .tar :
$ tar -xf jdk-8uxxx-linux-x64.tar.gz
8. Créez le répertoire en déplaçant le JDK dans /usr/lib/jvm. Si le répertoire n'est pas vide, un message d'avertissement s'affiche.
$ sudo mkdir -p /usr/lib/jvm
$ sudo mv jdk1.8.0_xxx/ /usr/lib/jvm/
9. Ajoutez des alternatives au système :
$ 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. Modifiez les permissions d'accès :
$ sudo chmod a+x /usr/bin/java
$ sudo chmod a+x /usr/bin/keytool
11. Modifiez le propriétaire :
$ sudo chown -R root:root /usr/lib/jvm/jdk1.8.0_xxx/
12. Configurez les liens maîtres :
$ sudo update-alternatives --config java
$ sudo update-alternatives --config keytool
Nothing to configure est une réponse normale à cette commande et ne reflète pas une erreur. Les étapes précédentes peuvent être renouvelées pour installer des exécutables supplémentaires dans /usr/lib/jvm/jdk1.8.0_xxx/bin/.
13. Vérifiez la version de Java :
$ java -version
Le message qui vous est renvoyé doit être similaire au suivant (les détails de la build peuvent être différents) :
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 24.75-bxx, mixed mode)
14. Téléchargez Apache Tomcat. Ce processus utilise Tomcat 8.5.xx, où xx correspond à la version que vous utilisez.
$ wget http://archive.apache.org/dist/tomcat/tomcat-8/v8.5.xx/bin/apache-tomcat-8.5.xx.tar.gz
* 
Il est recommandé de vérifier l'intégrité du fichier Tomcat en utilisant la signature ou la somme de contrôle de chaque version. Reportez-vous à la documentation d'Apache pour en savoir plus.
15. Extrayez le fichier .tar :
$ tar -xf apache-tomcat-8.5.xx.tar.gz
16. Créez et modifiez le propriétaire de /usr/share/tomcat8.5, puis déplacez Tomcat à l'emplacement ci-après. Ajoutez les utilisateur et groupe au système :
$ 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. Définissez les variables d'environnement dans /etc/environment :
$ export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_xxx
$ export CATALINA_HOME=/usr/share/tomcat8.5/8.5.xx
18. Accédez au répertoire $CATALINA_HOME :
$ cd $CATALINA_HOME
19. Modifiez le propriétaire de bin/, lib/ et webapps/, ainsi que les permissions d'accès associées :
$ sudo chown -Rh tomcat8.5:tomcat8.5 bin/ lib/ webapps/
$ sudo chmod 775 bin/ lib/ webapps/
20. Modifiez le propriétaire de usr/share/tomcat8.5/8.5xx ainsi que les permissions d'accès associées :
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. Modifiez le propriétaire de conf/ ainsi que les permissions d'accès associées :
$ sudo chown -Rh root:tomcat8.5 conf/
$ sudo chmod -R 650 conf/
22. Modifiez les permissions d'accès associées à logs/, temp/ et work/ :
$ sudo chown -R tomcat8.5:adm logs/ temp/ work/
$ sudo chmod 760 logs/ temp/ work/
23. Créez un certificat autosigné :
$ sudo $JAVA_HOME/bin/keytool -genkey -alias tomcat8.5 -keyalg RSA -keystore $CATALINA_HOME/conf/.keystore
24. Suivez les instructions fournies pour mener à bien le processus de création du certificat.
Définissez le mot de passe du KeyStore.
Suivez les instructions fournies pour configurer votre certificat de sécurité.
Définissez le mot de passe de l'utilisateur tomcat8.5 à l'identique du mot de passe du KeyStore :
$ sudo chown root:tomcat8.5 $CATALINA_HOME/conf/.keystore
$ sudo chmod 640 $CATALINA_HOME/conf/.keystore
25. Décommentez l'élément Manager dans le fichier $CATALINA_HOME/conf/context.xml pour désactiver la persistance des sessions entre les redémarrages :
<Manager pathname="" />
* 
Pour des raisons de sécurité, il est essentiel de désactiver le connecteur AJP, s'il ne l'est pas par défaut, en effectuant l'étape suivante.
26. A l'emplacement de l'installation de Tomcat, ouvrez conf/server.xml et recherchez la ligne suivante. Si vous la trouvez, transformez-la en commentaire et enregistrez le fichier :
<Connector port ="8009" protocol="AJP/1.3" redirectPort="8443"/>
* 
Dans les versions Apache Tomcat 9.0 et ultérieures, l'attribut rejectIllegalHeader est défini sur true par défaut. La modification manuelle du fichier conf/Web. xml pour définir cet attribut sur false n'est pas recommandée et n'est pas prise en charge par PTC.
* 
Si vous recevez une erreur indiquant que le répertoire n'existe pas, utilisez les commandes suivantes pour vous assurer que le port 443 fonctionne :
sudo touch /etc/authbind/byport/443
sudo chmod 700 /etc/authbind/byport/443
sudo chown tomcat8.5:tomcat8.5 /etc/authbind/byport/443
27. Définissez un utilisateur dans $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. Déterminez l'uid de l'utilisateur tomcat8.5 :
$ id -u tomcat8.5
29. A l'aide de ce numéro, créez un fichier d'ID dans /etc/authbind/byuid/. Modifiez l'<uid> par le numéro renvoyé à l'étape précédente :
$ sudo touch /etc/authbind/byuid/<uid>
sudo vi /etc/authbind/byuid/<uid>
30. Modifiez le fichier de l'étape précédente et collez ce qui suit dans ce fichier :
0.0.0.0/0:1,1023
31. Modifiez le propriétaire de /etc/authbind/byuid/<uid> ainsi que les permissions d'accès associées :
$ sudo chown tomcat8.5:tomcat8.5 /etc/authbind/byuid/<uid>
$ sudo chmod 700 /etc/authbind/byuid/<uid>
32. Modifiez $CATALINA_HOME/bin/startup.sh pour toujours utiliser authbind :
sudo vi $CATALINA_HOME/bin/startup.sh
Commentez ce qui suit dans le fichier :
#exec "$PRGDIR"/"$EXECUTABLE" start "$@"
33. Ajoutez le contenu ci-après à la fin du fichier :
exec authbind --deep "$PRGDIR"/"$EXECUTABLE" start "$@"
34. Dans /etc/init.d, créez le fichier tomcat8.5 :
$ sudo touch /etc/init.d/tomcat8.5
35. Modifiez le fichier et entrez le contenu suivant :
$ 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. Modifiez les permissions d'accès associées à etc/init.d/tomcat8.5 et créez des liens symboliques :
$ 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. Configurez Tomcat en tant que service à lancer au démarrage. Commencez par installer JSVC. Si JSVC est déjà installé sur votre système, passez à l'étape suivante.
$ sudo apt-get install gcc
38. Configurez le service Tomcat pour qu'il se lance au démarrage :
$ 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. Créez le fichier de service Tomcat :
sudo touch /etc/systemd/system/tomcat8.5.service
40. Ouvrez /etc/systemd/system/tomcat8.5.service dans un éditeur de texte (en root) :
sudo vi /etc/systemd/system/tomcat8.5.service
a. Collez ce qui suit dans le fichier de service Tomcat :
* 
Dans l'exemple ci-dessous, définissez les valeurs de -Xms et -Xmx sur 75 % de la mémoire du système d'exploitation disponible (par ex., 12 Go pour un système doté de 16 Go de RAM). Pour plus d'informations, consultez la rubrique Réglage de la 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 -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 le service Tomcat ne démarre pas automatiquement après le redémarrage et que le message d'erreur suivant s'affiche lors de l'exécution de sudo systemctl enable tomcat8.5.service :
update-rc.d: error: tomcatx.x Default-Start contains no runlevels, aborting.
Vous devez alors procéder comme suit :
Supprimez le fichier tomcat8.5 situé dans /etc/init.d et réexécutez la commande suivante :
sudo systemctl enable tomcat8.5.service
c. Si le message d'erreur suivant s'affiche :
insserv: warning: script 'tomcat8.5' missing LSB tags and override
ajoutez le code suivant à /etc/systemd/system/tomcat8.5.service :
#!/bin/sh
### BEGIN INIT INFO
# Provides: tomcat8.5
# Required-Start: $local_fs $network
# Required-Stop: $local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: tomcat8.5
# Description: tomcat8 service
### END INIT INFO
Exécutez
sudo service tomcat8.5 start
.
41. Si vous installez ThingWorx Platform pour la première fois, il convient d'ajouter l'option Java -Duser.timezone=UTC au bloc ExecStart ci-dessus, immédiatement après la ligne commençant par -Djava.library.path. Le fuseau horaire UTC ne reconnaît pas l'heure d'été/d'hiver. La configuration de cette option empêche l'écrasement des données lors des basculements à l'heure d'été/d'hiver.
* 
Les clients existants ne doivent pas mettre à jour ce paramètre à ce stade.
42. Créez un nouveau fichier setenv.sh dans le répertoire Tomcat /bin :
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"
43. A l'emplacement de l'installation de Tomcat, ouvrez CATALINA_HOME/conf/web.xml. Remplacez la page d'erreur par défaut (le paramètre par défaut est stacktrace) en ajoutant les éléments suivants dans le fichier web.xml. Placez-les éléments dans le tag web-app (après le tag welcome-file-list). Une application Web correctement configurée remplacera cette configuration par défaut dans CATALINA_HOME/webapps/APP_NAME/WEB-INF/web.xml afin de ne générer aucun problème.
<error-page><exception-type>java.lang.Throwable</exception-type><location>/error.jsp</location></error-page>
44. A l'emplacement de l'installation de Tomcat, ouvrez CATALINA_HOME/conf/server.xml. Ajoutez ce qui suit entre les tags <Host> </Host> :
<Valve className="org.apache.catalina.valves.ErrorReportValve" showReport="false" showServerInfo="false" />
45. Supprimez toutes les applications Web Tomcat situées dans /<chemin_de_tomcat>/webapps/. La suppression de ces applications empêche tout accès inutile à Tomcat, notamment dans le contexte autorisant les utilisateurs à afficher les cookies d'autres utilisateurs.
46. PTC recommande vivement l'utilisation de TLS lors de l'exécution de ThingWorx. Pour obtenir des instructions détaillées sur la configuration de TLS, reportez-vous à cet article de support technique.
47. Si votre application nécessite une suite de chiffrement spécifique, reportez-vous à la documentation suivante pour plus d'informations sur la configuration :
48. (ETAPE FACULTATIVE) Pour optimiser les réglages de cache par défaut qui affectent la mise en cache des fichiers statiques, ajoutez la ligne suivante à l'intérieur des tags <context></context> dans fichier $CATALINA_HOME/conf/context.xml :
<Resources cacheMaxSize="501200" cacheObjectMaxSize="2048" cacheTtl="60000"/>
Ces réglages optimisés améliorent les performances et permettent d'éviter l'affichage du message suivant dans 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
49. H2 et Azure SQL : reportez-vous à la rubrique Installation de ThingWorx.
50. PostgreSQL : reportez-vous à la rubrique Installation et configuration de PostgreSQL.