Vous êtes ici : Accueil / Debian GNU/Linux / Applications Web / Administration / Afficher les statuts d'un serveur / Tomcat (pages d'administration)

Tomcat (pages d'administration)

Par Pierre-Yves Landuré Dernière modification 25/10/2017 14:06

Accéder aux pages d'administration d'un serveur Tomcat.

Ce guide est testé sur:

  • Debian 9.0 Stretch

Prérequis

Ce guide nécessite:

Paramètres

Renseignez le domaine d'accès aux statuts du serveur:

domain="status.domain.com"

Installation

Détectez le proxy de commande (command ou sudo):

cmdProxy='command'
command type -f 'sudo' &>'/dev/null' && cmdProxy='sudo'

Détectez le fichier de configuration du site de statut:

statusVhost="$(command grep -rl \
    "STATUS PAGES CONFIGURATION END" \
    '/etc/apache2/sites-available')"

Détectez le chemin d'installation utilisé:

if [ -n "${statusVhost}" ]; then
installPath="$(command grep "DocumentRoot" "${statusVhost}" \
| command sed -e 's/^[ \t]*//;s/[ \t]*$//' -e 's/[ \t]*[ \t]/ /g' \
| command cut --delimiter=" " --field=2)"
fi

Détectez l'éventuel sous-dossier des pages de statut:

if [ -n "${statusVhost}" ]; then
subFolder="$(command grep -E "^[ \t]*Alias[ \t].*[ \t]${installPath}" "${statusVhost}" \
    | command sed -e 's/^[ \t]*Alias[ \t]*\([^ \t]*\)[ \t].*$/\1/')"
fi

Détectez la version de Tomcat disponible sur le système:

tomcatVersion="$(command find '/etc/' -maxdepth 1 -name 'tomcat*' \
    | command cut --char=12- \
    | command sort -g | command tail -n 1)"

Installation

Activez le module proxy_ajp d'Apache 2:

[[ -n "${tomcatVersion}" ]] && ${cmdProxy} a2enmod proxy_ajp

Rechargez la configuration d'Apache 2:

[[ -n "${tomcatVersion}" ]] && ${cmdProxy} service apache2 reload

Ajoutez l'hôte Tomcat dédié au domaine des statuts:

if [[ -n "${tomcatVersion}" ]]; then
  ${cmdProxy} sed -i -e "/<\/Engine>/i\\
<Host name=\"${domain}\" appBase=\"webapps\" unpackWARs=\"true\" autoDeploy=\"true\">\\
        <Valve className=\"org.apache.catalina.valves.AccessLogValve\" directory=\"logs\"\\
               prefix=\"${domain}-access\" suffix=\".log\"\\
               pattern=\"%h %l %u %t &quot;%r&quot; %s %b\" />\\
</Host>" \
"/etc/tomcat${tomcatVersion}/server.xml"
fi

Créez le dossier des configurations dédiées des applications pour l'hôte:

[[ -n "${tomcatVersion}" ]] && ${cmdProxy} mkdir "/etc/tomcat${tomcatVersion}/Catalina/${domain}"

Configurez la racine Web de l'application d'administration de Tomcat:

if [[ -n "${tomcatVersion}" ]]; then
contextFile="/etc/tomcat${tomcatVersion}/Catalina/${domain}/${subFolder//\//#}#tomcat#manager.xml"
 contextFile="${contextFile//\/#/\/}"
${cmdProxy} cp "/etc/tomcat${tomcatVersion}/Catalina/localhost/manager.xml" "${contextFile}"
${cmdProxy} sed -i \
-e "s|path=\"[^\"]*\"|path=\"${subFolder}/tomcat/manager\"|" \
-e "s|/>|>|" \
-e "/privileged.*>/a\\
<Valve className=\"org.apache.catalina.valves.RemoteAddrValve\" allow=\"^.*\$\" />\\

</Context>" \
"${contextFile}"
fi

Configurez la racine Web de l'application d'administration des hôtes Tomcat:

if [[ -n "${tomcatVersion}" ]]; then
 contextFile="/etc/tomcat${tomcatVersion}/Catalina/${domain}/${subFolder//\//#}#tomcat#host-manager.xml"
contextFile="${contextFile//\/#/\/}"
${cmdProxy} cp "/etc/tomcat${tomcatVersion}/Catalina/localhost/host-manager.xml" "${contextFile}"
 ${cmdProxy} sed -i \
-e "s|path=\"[^\"]*\"|path=\"${subFolder}/tomcat/manager\"|" \
-e "s|/>|>|" \
-e "/privileged.*>/a\\
<Valve className=\"org.apache.catalina.valves.RemoteAddrValve\" allow=\"^.*\$\" />\\

</Context>" \
"${contextFile}"
fi

Configurez Apache pour servir les statuts de Tomcat:

if [[ -n "${statusVhost}" && -n "${tomcatVersion}" ]]; then
command sed -i -e "/STATUS PAGES CONFIGURATION END/i\\
<IfModule mod_proxy.c>\\
ProxyRequests Off\\
ProxyPreserveHost On\\
\\
  # Tomcat admin access.\\
  ProxyPassReverse  ${subFolder}/tomcat ajp://localhost:8009${subFolder}/tomcat\\
  ProxyPass ${subFolder}/tomcat ajp://localhost:8009${subFolder}/tomcat\\
\\
  # Tomcat status access.\\
  ProxyPassReverse  ${subFolder}/tomcat ajp://localhost:8009${subFolder}/tomcat/status\\
  ProxyPass ${subFolder}/tomcat ajp://localhost:8009${subFolder}/tomcat/status\\
</IfModule>
" "${statusVhost}"
fi

Rechargez la configuration de Tomcat et Apache:

${cmdProxy} service "tomcat${tomcatVersion}" restart
${cmdProxy} service apache2 force-reload

Ajoutez le lien correspondant à la page d'accueil du domaine.

if [ -n "${tomcatVersion}" ]; then
command sed -i -e '/<\/ul>/i\
<li><a href="./tomcat/manager/status">Tomcat (status)<br/>\
<ol>\
<a href="./tomcat/manager">Manager</a>\
<a href="./tomcat/host-manager">Host Manager</a>\
</ol>\
</li>' \
  "${installPath}/index.html"
fi

Vous pouvez maintenant accéder aux informations sur le système.

Remerciements