Vous êtes ici : Accueil / Debian GNU/Linux / Serveurs / HTTP / Installer Tomcat sur Debian

Installer Tomcat sur Debian

Par Pierre-Yves Landuré Dernière modification 25/10/2017 16:08

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:

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