Installer Java, Apache Tomcat et ThingWorx
Dans les étapes ci-dessous, remplacez xx ou xxx par le numéro de build que vous utilisez.
* 
Le fait de copier et de coller des commandes dans cette procédure peut entraîner des problèmes de formatage. Si nécessaire, copiez et collez dans un éditeur de texte pour limiter ces problèmes.
1. Pour plus d'informations sur les versions requises, consultez la rubrique Configuration requise pour ThingWorx.
2. Téléchargez et installez le fichier JavaRPM.
9.0 : Java
9.1 et versions ultérieures : OpenJDK ou Java 11.
3. Exécutez le programme d'installation de Java :
* 
Pour certains builds du JDK 8 (non pris en charge dans ThingWorx 9.2 et versions ultérieures), le nom de fichier sera semblable à jdk1.8.0_xxx-amd64. Les exemples ci-dessous utilisent jdk-11.x.x, mais remplacez par la version que vous utilisez, si nécessaire.
sudo rpm -i jdk-11.x.x_linux-x64_bin.rpm
4. Créez le dossier, puis déplacez le JDK :
$ sudo mkdir -p /usr/lib/jvm
$ sudo mv /usr/java/jdk-11.x.x/ /usr/lib/jvm/
5. Définissez les alternatives Java :
$ sudo alternatives --install /usr/bin/java java /usr/lib/jvm/jdk-11.x.x/bin/java 1
$ sudo alternatives --install /usr/bin/keytool keytool /usr/lib/jvm/jdk-11.x.x/bin/keytool 1
6. Modifiez les permissions d'accès :
$ sudo chmod a+x /usr/bin/java
$ sudo chmod a+x /usr/bin/keytool
Si vous recevez une erreur, utilisez la commande suivante :
$ sudo chmod -f a+x /usr/bin/keytool
7. Modifiez le propriétaire :
$ sudo chown -R root:root /usr/lib/jvm/jdk-11.x.x/
8. Configurez les liens maîtres :
$ sudo alternatives --config java
Sélectionnez l'option qui contient /usr/lib/jvm/jdk-11.x.x/bin/java
$ sudo rm /usr/java/latest
$ sudo ln -s /usr/lib/jvm/jdk-11.x.x /usr/java/latest
$ sudo ln -s /usr/lib/jvm/jdk-11.x.x/bin/keytool /usr/bin/keytool
Si vous recevez une File Exists erreur, ignorez et continuez.
$ sudo alternatives --config keytool
9. Vérifiez la version de Java. La version dont vous disposez peut différer de celle utilisée dans l'exemple ci-dessous :
$ java -version
java version "11.0.9" 2020-10-20 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.9+7-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.9+7-LTS, mixed mode)
10. Installez Tomcat. Téléchargez le programme d'installation de Tomcat. Ce processus utilise Tomcat 9.0.xx, où xx correspond à la version que vous utilisez.
$ wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.xx/bin/apache-tomcat-9.0.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.
11. Extrayez le contenu :
$ tar -xf apache-tomcat-9.0.xx.tar.gz
12. Déplacez Tomcat dans /usr/share/tomcat9.0 :
$ sudo mkdir -p /usr/share/tomcat9.0
$ sudo mv apache-tomcat-9.0.xx /usr/share/tomcat9.0/9.0.xx
13. Définissez les variables d'environnement dans le fichier /etc/environment (en tant qu'utilisateur racine) :
export JAVA_HOME=/usr/lib/jvm/jdk-11.x.x_xxx
export CATALINA_HOME=/usr/share/tomcat9.0/9.0.xx
14. Exécutez l'élément suivant (en tant qu'utilisateur racine) :
source /etc/environment
15. Accédez au dossier /usr/share/tomcat9.0/9.0.xx :
$ cd /usr/share/tomcat9.0/9.0.xx
16. Ajoutez les utilisateur et groupe au système :
$ sudo groupadd -r tomcat9.0
$ sudo useradd -r -d /usr/share/tomcat9.0 -g tomcat9.0 -s /bin/false tomcat9.0
$ sudo chown -R tomcat9.0:tomcat9.0 /usr/share/tomcat9.0
17. Modifiez le propriétaire de bin/, lib/ et webapps/, ainsi que les permissions d'accès associées :
$ sudo chown -Rh tomcat9.0:tomcat9.0 bin/ lib/ webapps/
$ sudo chmod 775 bin/ lib/ webapps/
18. Modifiez le propriétaire de usr/share/tomcat9.0/9.0.xx ainsi que les permissions d'accès associées :
$ sudo chown -R tomcat9.0:tomcat9.0 /usr/share/tomcat9.0/9.0.xx
$ sudo chmod -R 775 /usr/share/tomcat9.0/9.0.xx
19. Modifiez le propriétaire de conf/ ainsi que les permissions d'accès associées :
$ sudo chown -Rh root:tomcat9.0 conf/
$ sudo chmod -R 640 conf
$ sudo chown -R tomcat9.0:tomcat9.0 /usr/share/tomcat9.0/9.0.xx
$ sudo chmod -R 777 /usr/share/tomcat9.0/9.0.xx
Pour un système de production, il convient de revoir les permissions et la propriété afin d'augmenter la sécurité au niveau du système d'exploitation.
20. Modifiez les permissions d'accès associées à logs/, temp/ et work/ :
$ sudo chown -R tomcat9.0:adm logs/ temp/ work/
$ sudo chmod 760 logs/ temp/ work/
21. Créez un certificat autosigné :
$ /usr/lib/jvm/jdk-11.x.x_xxx/jre/bin/keytool -genkey -alias tomcat9.0 -keyalg RSA
22. 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 tomcat9.0 à l'identique du mot de passe du KeyStore.
$ sudo cp ~/.keystore /usr/share/tomcat9.0/9.0.xx/conf/
$ sudo chown root:tomcat9.0 /usr/share/tomcat9.0/9.0.xx/conf/.keystore
$ sudo chmod 640 /usr/share/tomcat9.0/9.0.xx/conf/.keystore
23. Décommentez l'élément Manager dans le fichier context.xml pour désactiver la persistance des sessions entre les redémarrages. Ouvrez /usr/share/tomcat9.0/9.0.xx/conf/context.xml dans un éditeur de texte (en root) et supprimez les caractères ‘<!—‘ avant ‘<Manager pathname="" />’ et les caractères ‘-->’ après.
24. Enregistrez le fichier.
25. Définissez un utilisateur Apache Manager dans tomcat-users.xml. Ouvrez /usr/share/tomcat9.0/9.0.xx/conf/tomcat-users.xml dans un éditeur de texte (en root). Juste au-dessus de la dernière ligne (</tomcat-users>), ajoutez la ligne suivante :
<user username="<Tomcat username> " password="<Tomcat password> " roles="manager,manager-gui"/>
26. Enregistrez le fichier.
* 
Les rôles inclus sont destinés à faciliter les tests. Ils peuvent être supprimés en cas de nécessité pour la sécurité.
27. Configurez Tomcat en tant que service à lancer au démarrage. Commencez par installer JSVC s'il n'est pas déjà installé sur votre système (en root) :
$ sudo yum install gcc
$ cd /usr/share/tomcat9.0/9.0.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 ../..
28. Créez le fichier de service Tomcat :
$ sudo touch /usr/lib/systemd/system/tomcat.service
29. Ouvrez /usr/lib/systemd/system/tomcat.service dans un éditeur de texte (en root) et collez ce qui suit dans ce fichier :
* 
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/jdk-11.x.x_xxx
Environment=CATALINA_HOME=/usr/share/tomcat9.0/9.0.xx
Environment=CATALINA_BASE=/usr/share/tomcat9.0/9.0.xx
Environment=CATALINA_OPTS=

ExecStart=/usr/share/tomcat9.0/9.0.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 -Dlog4j2.formatMsgNoLookups=true\
-Xms=<75% of available OS memory> \
-Xmx=<75% of available OS memory> \
-Djava.library.path=${CATALINA_BASE}/webapps/Thingworx/WEB-INF/extensions \
-cp ${CATALINA_HOME}/bin/commons-daemon.jar:${CATALINA_HOME}/bin/bootstrap.jar:${CATALINA_HOME}/bin/tomcat-juli.jar \
-user tomcat9.0 \
-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
30. 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.
31. Créez un nouveau fichier setenv.sh dans le fichier Tomcat usr/share/tomcat9.0/9.0.xx/bin et ajoutez le contenu suivant au fichier :
CATALINA_OPTS="$CATALINA_OPTS -Djava.library.path=/usr/share/tomcat9.0/9.0.xx/webapps/Thingworx/WEB-INF/extensions"
32. Configurez Tomcat pour qu'il se lance au démarrage du système :
$ sudo systemctl daemon-reload
$ sudo systemctl enable tomcat.service
* 
Si vous obtenez des erreurs de permission lors de l'exécution des commandes ci-dessus, exécutez la commande suivante (en root) :
ausearch -c '(jsvc)' --raw | audit2allow -M my-jsvc
semodule -i my-jsvc.pp
/sbin/restorecon -v /usr/share/tomcat9.0/9.x.xx/bin/jsvc
Cela permettra à l'utilisateur de contrôler le service Tomcat au moyen des commandes suivantes :
sudo systemctl start tomcat
sudo systemctl stop tomcat
sudo systemctl restart tomcat
sudo systemctl status tomcat
33. A l'emplacement de l'installation de Tomcat, ouvrez CATALINA_HOME/conf/web.xml pour remplacer la page d'erreur par défaut (le paramètre par défaut est la trace de pile). Placez-les éléments dans le tag web-app (après le tag welcome-file-list) :
<error-page><exception-type>java.lang.Throwable</exception-type><location>/error.jsp</location></error-page>
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.
34. 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" />
* 
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.
35. 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.
36. Supprimez tous les exemples d'application Web Tomcat (docs, examples, host-manager, manager, ROOT) situés dans /<chemin_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.
37. 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.
38. Si votre application nécessite une suite de chiffrement spécifique, reportez-vous à la documentation suivante pour plus d'informations sur la configuration :
Configuration des paramètres de limites utilisateur (Ulimit)
L'exécution des processus des serveurs d'applications Tomcat en "root" compromet la sécurité globale du système et va à l'encontre des bonnes pratiques sectorielles. Pour éviter cela, PTC vous recommande de modifier le fichier /etc/security/limits.d/80-nofiles.conf afin d'inclure les paramètres spécifiques à l'utilisateur qui exécutera les serveurs d'applications.
Exemple de fichier de configuration
Voici un exemple de modification de la configuration par défaut du système d'exploitation Redhat stockée dans /etc/security/limits.d/80-nofiles.conf. Dans cet exemple, thingworx est le nom de l'utilisateur pour le serveur d'applications.

thingworx soft nofile 30720
thingworx hard nofile 30720
Pour valider cette modification, déconnectez-vous, puis reconnectez-vous à votre système.
Installation de ThingWorx
1. Créez les répertoires /ThingworxStorage, /ThingworxBackupStorage et /ThingworxPlatform.
$ sudo mkdir /ThingworxStorage /ThingworxBackupStorage /ThingworxPlatform
2. Modifiez le propriétaire de /ThingworxPlatform, /ThingworxStorage et /ThingworxBackupStorage ainsi que les permissions d'accès associées. Sans ces permissions, le serveur ne pourra pas démarrer.
$ sudo chown tomcat9.0:tomcat9.0 /ThingworxStorage /ThingworxBackupStorage /ThingworxPlatform
$ sudo chmod 775 /ThingworxStorage /ThingworxBackupStorage /ThingworxPlatform
3. Obtenez le fichier Thingworx.war approprié pour la base de données que vous utilisez. Les derniers fichiers ThingWorx sont disponibles sur le site support.ptc.com, sous Télécharger des logiciels > Commander et télécharger des mises à jour > ThingWorx Foundation > Release X.X > ThingWorx PostgreSQL, ThingWorx Mssql, ThingWorx H2 ou ThingWorx AzureSql > Code de date le plus récent > ThingWorx-Platform-<type base de données>-<version>.
4. Déplacez le fichier Thingworx.war dans $CATALINA_HOME/webapps.
$ sudo mv Thingworx.war $CATALINA_HOME/webapps
$ sudo chown tomcat9.0:tomcat9.0 $CATALINA_HOME/webapps/Thingworx.war
$ sudo chmod 775 $CATALINA_HOME/webapps/Thingworx.war
5. Placez le fichier platform-settings.json dans le dossier ThingworxPlatform.
* 
Si vous utilisez H2, vous devez créer le fichier platform-settings.json, qui n'est pas inclus dans le téléchargement.
6. Si vous utilisez H2 comme base de données, effectuez cette étape. Si vous n'utilisez pas H2 comme base de données, passez à l'étape suivante. Ajoutez un nom d'utilisateur et un mot de passe pour H2 dans le fichier platform-settings.json. Pour plus d'informations; consultez la rubrique Détails de la configuration du fichier platform-settings.json
* 
Les connexions de ThingWorx à la base de données H2 nécessitent un nom d'utilisateur et un mot de passe définis par l'utilisateur, faute de quoi le serveur ne démarrera pas. Cette conception atténue toute vulnérabilité potentielle représentée par CVE-2018-10054.
},
"PersistenceProviderPackageConfigs":{
"H2PersistenceProviderPackage":{
"ConnectionInformation":
{
"password": "<addsecurepassword>",
"username": "twadmin"
}
},
7. Configurez le mot de passe administrateur.
Ajoutez la section AdministratorUserSettings suivante (dans PlatformSettingsConfig) à votre fichier platform-settings.json ainsi qu'un mot de passe d'au moins 14 caractères. Pour plus d'informations sur l'endroit exact, consultez la rubrique Détails de la configuration du fichier platform-settings.json. Pour plus d'informations sur la définition des mots de passe, consultez la rubrique Mots de passe.
* 
Evitez d'effectuer un copier-coller de l'échantillon ci-dessous car cela pourrait entraîner des problèmes de formatage dans votre fichier platform-settings.json. A la place, cliquez ici et copiez à partir du fichier.

{
"PlatformSettingsConfig": {
"AdministratorUserSettings": {
"InitialPassword": "changeme"
}
}
}
* 
Si Tomcat ne démarre pas et signale le message d'erreur Check the InitialPassword setting in the AdministratorUserPassword section in platform-settings.json..., vérifiez les informations suivantes :
Le paramètre de mot de passe existe dans platform-settings.json.
Le mot de passe est valide (au moins 14 caractères, par défaut).
Le format du fichier platform-settings.json est correct. Un problème de formatage peut entraîner des erreurs.
8. Autorisez l'importation d'extensions. Par défaut, l'importation d'extensions est désactivée pour tous les utilisateurs.
Ajoutez ce qui suit dans le fichier platform-settings.json, sous PlatformSettingsConfig. Mettez à jour les paramètres ExtensionPackageImportPolicy suivants en les définissant sur true pour autoriser l'importation d'extensions. Consultez la rubrique Importation d'extensions pour connaître les bonnes pratiques en matière de configuration.
"ExtensionPackageImportPolicy": {
"importEnabled": <true or false>,
"allowJarResources": <true or false>,
"allowJavascriptResources": <true or false>,
"allowCSSResources": <true or false>,
"allowJSONResources": <true or false>,
"allowWebAppResources": <true or false>,
"allowEntities": <true or false>,
"allowExtensibleEntities": <true or false>
},
9. Si vous n'utilisez pas H2 comme base de données, accédez à la rubrique Installation et configuration d'une base de données pour configurer votre base de données. Reprenez ensuite à l'étape suivante après la configuration de votre base de données. Si vous utilisez H2, passez à l'étape suivante.
10. Configurez la gestion des licences :
Ouvrez le fichier platform-settings.json et ajoutez les éléments suivants à la section PlatformSettingsConfig. Pour plus d'informations sur l'endroit exact, consultez la rubrique Détails de la configuration du fichier platform-settings.json.
* 
Si vous effectuez une installation déconnectée (pas d'accès à Internet), aucune modification n'est nécessaire dans le fichier platform-settings.json. Reportez-vous à la section sur les sites déconnectés de la rubrique Licences pour ThingWorx Platform et ignorez cette étape.
{
"PersistenceProviderPackageConfigs": {
"PostgresPersistenceProviderPackage": {
"ConnectionInformation": {
"jdbcUrl": "jdbc:postgresql://localhost:5432/thingworx",
"password": "<password>",
"username": "<username>"
}
}
},
"PlatformSettingsConfig": {
"LicensingConnectionSettings": {
"username":"<PTC_support_portal_username>",
"password":"<PTC_support_portal_password>"
}
}
}
* 
Si les paramètres ne sont pas renseignés correctement ou si le serveur ne peut pas se connecter, un fichier texte de demande de licence (licenseRequestFile.txt) est créé dans le dossier ThingworxPlatform. Dans ce scénario, une licence doit être créée manuellement. A défaut, ThingWorx démarrera en mode limité. Le mode limité ne vous permet pas de rendre les entités sous licence persistances dans la base de données. Les entités sous licence sont les objets, les applications composites, les modèles de base, les gadgets, les utilisateurs et les fournisseurs de persistance.
Pour plus d'informations sur l'obtention d'une licence ThingWorx pour site déconnecté via notre site de gestion des licences, reportez-vous à la section sur les sites déconnectés (pas de connexion au portail de support PTC) de la rubrique Licences pour ThingWorx Platform. Dans ce cas, si le fichier de licence est généré manuellement, il doit être renommé license_capability_response.bin et placé dans le dossier ThingworxPlatform.
* 
Pour résoudre les problèmes de licence, consultez cet article de support.
11. Chiffrez le mot de passe du serveur de licences en suivant la procédure de la rubrique Chiffrement de mots de passe.
12. Si vous utilisez Azure SQL pour votre base de données, procédez comme suit pour télécharger le pilote JDBC. Ignorez cette étape si vous n'utilisez pas Azure SQL.
a. Rendez-vous sur le portail Azure et accédez à votre base de données ThingWorx.
b. Sélectionnez Chaînes de connexion.
c. Sélectionnez l'onglet JDBC.
d. Sélectionnez Télécharger le pilote JDBC pour SQL Server.
e. Sélectionnez Microsoft JDBC Driver 6.0 pour SQL Server.
f. Extrayez et copiez le binaire téléchargé sur votre VM ThingWorx vers votre répertoire Tomcat lib.
13. Démarrez Tomcat.

$ sudo systemctl start tomcat
Vérifiez qu'un fichier de licence (successful_license_capability_response.bin) est créé dans le dossier ThingworxPlatform.
14. Pour lancer ThingWorx, accédez à http://<nom_de_serveur>:<port>/Thingworx dans un navigateur Web.
15. Modifiez le mot de passe par défaut :
a. Dans Composer, sélectionnez Administrateur > Changer le mot de passe.
b. Dans la fenêtre Changer le mot de passe, entrez votre Mot de passe actuel, votre Nouveau mot de passe et confirmez votre nouveau mot de passe dans le champ Confirmer le mot de passe.
* 
Veillez à ce que ce mot de passe soit difficile à deviner et comprenne au moins 14 caractères, avec une combinaison de caractères majuscules et minuscules, de chiffres et de caractères spéciaux.
c. Supprimez le mot de passe initial du fichier platform-settings.json.
16. Cliquez sur Terminé.
17. (ETAPE FACULTATIVE) Pour déterminer le statut de votre licence, choisissez Surveillance > Sous-système > Paramètres du sous-système de licence dans Composer pour confirmer la liste des fonctionnalités (entités sous licence) incluses avec la licence. Si aucune entité sous licence n'est affichée, vous êtes en mode limité.
Est-ce que cela a été utile ?