Tomcat (pages d'administration)
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:
- L'accès aux statuts du serveur, comme décrit par Afficher les statuts d'un serveur.
- un serveur Tomcat local, comme décrit par Installer Tomcat sur Debian.
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 "%r" %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
- Merci aux développeurs de phpSysInfo (en).