Installation de Java et d'Apache Tomcat (Ubuntu)
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 :
$ sudo apt-get install ntp
|
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:
|
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. Téléchargez le fichier .tar du JDK Java depuis le site Web d'Oracle ou exécutez la commande suivante :
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. 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 xx.xx-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
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. Installez JSVC s'il n'est pas déjà installé sur votre système. S'il l'est déjà, ignorez cette opération, puis 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
41. 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"
42. 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 la trace de pile) 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>
43. 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" />
44. 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. Si votre application nécessite une suite de chiffrement spécifique, reportez-vous à la documentation suivante pour plus d'informations sur la configuration :
47. (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