Installer Tomcat sur Debian
Ce guide facilite l'installation du serveur d'application Java Tomcat sur Debian.
Ce guide est testé sur:
- Debian 9.0 Stretch
Cet guide est testé avec ces versions de Tomcat:
- 8.5.14
Pré-requis
Ce guide nécessite:
- a2tools, l'outil d'administration simplifiée d'Apache 2, pour assurer la configuration d'Apache 2 en reverse proxy du serveur Tomcat.
Paramètres
Renseignez l'identifiant de l'utilisateur d'administration:
adminUser="admin"
Installation
Détectez le proxy de commande (command ou sudo):
cmdProxy='command'
command type -f 'sudo' &>'/dev/null' && cmdProxy='sudo'
Détectez la version de Tomcat disponible sur le système:
tomcatVersion="$(command apt-cache search '^tomcat[0-9]*$' \
| command cut --delimiter=' ' --fields=1 \
| command cut --char=7- \
| command sort -g | command tail -n 1)"
Déterminez le mot de passe de l'utilisateur d'administration:
adminPassword="$(command apg -q -a 0 -n 1 -M NCL)"
Mise en place de l'application
Installez l'application:
${cmdProxy} apt-get install "tomcat${tomcatVersion}" "tomcat${tomcatVersion}-admin" \
'default-jdk' "libservlet*-java"
Détectez l'emplacement du "JAVA_HOME" du Java Development Kit installé:
javaHome="$(command dirname "$(command dirname "$(command readlink -f "$(command which 'javac')")")")"
Configurez le logiciel pour utiliser le JDK détecté:
${cmdProxy} sed -i \
-e "s|^[# ]*JAVA_HOME=.*\$|JAVA_HOME=${javaHome}|" \
"/etc/default/tomcat${tomcatVersion}"
Configuration
Ajoutez les rôles 'manager-gui' et 'admin-gui' à la configuration du logiciel:
while read roleName; do
configFile="/etc/tomcat${tomcatVersion}/tomcat-users.xml"
if [[ -e "${configFile}" && -n "${roleName}" ]]; then
[[ -z "$(command grep "rolename=\"${roleName}\"" "${configFile}")" ]] && ${cmdProxy} sed -i \
-e "/<\\/tomcat-users>/i\\
<role rolename=\"${roleName}\" />" \
"${configFile}"
fi
done <<< "manager-gui
admin-gui"
Ajoutez l'utilisateur d'administration à la configuration du logiciel:
while read userInfos; do
configFile="/etc/tomcat${tomcatVersion}/tomcat-users.xml"
if [[ -e "${configFile}" && -n "${userInfos}" ]]; then
userName="$(command cut --delimiter='|' --fields=1 <<< "${userInfos}")"
userPassword="$(command cut --delimiter='|' --fields=2 <<< "${userInfos}")"
userRoles="$(command cut --delimiter='|' --fields=3 <<< "${userInfos}")"
# Remove existing user infos.
[[ -n "$(command grep "username=\"${userName}\"" "${configFile}")" ]] && ${cmdProxy} sed -i \
-e "/username=\"${userName}\"/d" \
"${configFile}"
# Add user new infos.
[[ -z "$(command grep "username=\"${userName}\"" "${configFile}")" ]] && ${cmdProxy} sed -i \
-e "/<\\/tomcat-users>/i\\
<user username=\"${userName}\" password=\"${userPassword}\" roles=\"${userRoles}\" />" \
"${configFile}"
fi
done <<< "${adminUser}|${adminPassword}|manager-gui,admin-gui"
Désactivez l'écoute du port 8080 par le serveur (il sera accessible par un reverse-proxy Apache):
configFile="/etc/tomcat${tomcatVersion}/server.xml"
[[ -e "${configFile}" ]] && ${cmdProxy} sed --i -e '/<Connector port="8080"/i\
<!-- Disable default 8080 connector. Use Apache AJP reverse proxy instead.' \
-e '/<Connector port="8080"/,/\/>/{/\/>/a\
-->
;}' "${configFile}"
Créez un connecteur AJP pour Apache:
configFile="/etc/tomcat${tomcatVersion}/server.xml"
[[ -e "${configFile}" ]] && ${cmdProxy} sed --i -e '/Define an AJP/a\
<Connector port="8009" address="127.0.0.1" protocol="AJP/1.3" redirectPort="8443" />' \
"${configFile}"
Démarrez le serveur:
${cmdProxy} service "tomcat${tomcatVersion}" 'start'
Ajoutez le service au démarrage de l'hôte:
${cmdProxy} systemctl enable "tomcat${tomcatVersion}"
Interface d'administration
Configurez l'accès à l'interface d'administration à l'aide du guide Tomcat (pages d'administration) qui les intègre dans un ensemble de pages d'informations sur le statut du serveur.
Remerciements
- Merci aux développeurs de Tomcat (en).