Tomcat

Tomcat überwachen

das Script (tomcatwaechter.sh) per cronjob alle 10 Minuten von 7-22 Uhr ausführen :

*/10 7-22 * * * /pfad/zu/tomcatwaechter.sh >/dev/null

wenn tomcat nicht mehr sauber antwortet dann neustart des Tomcat veranlassen:

tomcatwaechter.sh
#!/bin/sh
wget -qO- http://meinTomcatServer:8080/anwendung/ >/dev/null 
f=$?
if [ ! $f -eq 0 ]; then
  echo https://meinTomcatServer/ | mail -s Tomcatfehler admin@domain.de 
  /etc/init.d/tomcat6 stop
  #/etc/init.d/mysql restart
  /etc/init.d/tomcat6 start
  # echo $f returnwert
fi

Tomcat Kompression einschalten:

in der Datei conf/server.xml folgender Parameter ergänzen:

<Connector port="8080" compression="on"


Tomcat Caching einschalten

in Datei …tomcat/conf/web.xml am Ende vor </web-app> eintragen:

<filter>
  <filter-name>ExpiresFilter</filter-name>
  <filter-class>org.apache.catalina.filters.ExpiresFilter</filter-class>
  <init-param>
      <param-name>ExpiresByType image</param-name>
      <param-value>access plus 2 weeks</param-value>
  </init-param>
  <init-param>
      <param-name>ExpiresByType text/css</param-name>
      <param-value>access plus 2 weeks</param-value>
  </init-param>
  <init-param>
      <param-name>ExpiresByType text/html</param-name>
      <param-value>access plus 2 weeks</param-value>
  </init-param>
  <init-param>
      <param-name>ExpiresByType application/javascript</param-name>
      <param-value>access plus 2 weeks</param-value>
  </init-param>
  <init-param>
      <param-name>ExpiresByType text/javascript</param-name>
      <param-value>access plus 2 weeks</param-value>
  </init-param>
</filter>
<filter-mapping>
  <filter-name>ExpiresFilter</filter-name>
  <url-pattern>/*</url-pattern>
  <dispatcher>REQUEST</dispatcher>
</filter-mapping>

dann tomcat neustart erforderlich

einfache Portumleitung auf Port 80

Eintrag in /etc/rc.local (debian wheezy):

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

auf SLES 11 vorhandenes Tomcatprogramm (Bsp.alfresco) umleiten auf Port 443 mit Apache

apache2 und apache2-mod_jk installieren

zypper in apache2 apache2-mod_jk

Rechner erstmal für SSL konfigurieren:
siehe apache ... erst danach:
Konfigurationsverzeichnis erstellen:

mkdir /etc/apache2/mod_jk/

Konfigurationsdateien erstellen:

touch /etc/apache2/mod_jk/mod_jk.conf
touch /etc/apache2/mod_jk/alfresco.properties

Konfigurationsdatei /etc/apache2/mod_jk/mod_jk.conf bearbeiten:

JkLogFile     /var/log/apache2/mod_jk.log
JkShmFile     /var/run/jk-runtime-status
JkWorkersFile /etc/apache2/mod_jk/alfresco.properties
JkLogLevel    info

Konfigurationsdatei /etc/apache2/mod_jk/alfresco.properties bearbeiten:

workers.tomcat_home=/usr/share/tomcat6
workers.java_home=$JAVA_HOME
ps=/
worker.list=default
worker.default.type=ajp13
worker.default.host=localhost
worker.default.port=8009
worker.default.lbfactor=1

Konfigurationsdatei /etc/apache2/httpd.conf bearbeiten:

...
ServerName alfrescoSrv
Include /etc/apache2/mod_jk/mod_jk.conf

Konfigurationsdatei /etc/apache2/vhosts.d/alfrescosrv.conf bearbeiten:

<VirtualHost alfrescosrv:443>
   ServerAdmin admin@my.dom.ain
   ServerName alfrescoserver.my.dom.ain
   ServerAlias alfrescoserver
   HostNameLookups Off
   UseCanonicalName Off
   Header always set Strict-Transport-Security "max-age=31536000,includeSub
   JkMount /alfresco/*  default
   JkMount /* default                                                      
   ...

anschließend apache2 neustarten und testen.

Verzeichnis über Webbrowser einsehen

z.B. /var/log/tomcat8/
Datei conf/server.xml editieren:

<Host name="localhost" appBase="webapps"
  ...
  <Context path="/" allowLinking="true"/>
  ...
#dann

Datei conf/web.xml editieren:

 ...
<init-param>
    <param-name>listings</param-name>
    <param-value>true</param-value>
 </init-param>
 ...
#dann 
mkdir webapps/logs
chown tomcat8 webapps/logs
mount --bind /var/log/tomcat8/ webapps/logs/
mount -o bind,remount,ro webapps/logs/
/etc/init.d/tomcat8 restart

danach sollten die Logdateien üner http://meinServer:8080/logs/ sichtbar sein.

Tomcatcontexte neu starten

Beispiel allegro:
Datei editieren: '/etc/tomcat8/tomcat-users.xml'

<role rolename="manager-gui"/>
<role rolename="manager-status"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<user username="admin" password="geheim" roles="manager-gui,manager-status,manager-script,manager-jmx"/>
...

dann tomcat neustarten und anmelden mit admin/geheim
http://myserver:8080/manager/
http://myserver:8080/manager/html/
oder:
http://myserver:8080/manager/text/reload?path=/allegro
oder:
http://myserver:8080/manager/text/stop?path=/allegro
http://myserver:8080/manager/text/start?path=/allegro

aktive Sessions anzeigen / nützliches

Client-IP-Adresse ermitteln

/usr/share/tomcat/webapps/share/getip.jsp

getip.jsp
  <%@ page import="java.net.*" %>
  <%
    String addr = "error";
    try {
        InetAddress inetAddress = InetAddress.getLocalHost();
        addr = request.getRemoteAddr();
        } catch (UnknownHostException e) {
                e.printStackTrace();
        }
  %>
  <h2>
  Ermittlung der Client-IP-Adresse:<br><hr><br>
  Client-IP:   <%=addr %>
  </h2>

(Dateieigentümer noch auf tomcat ändern.)
dann https://mytomcat/share/getip.jsp

siehe auch Track Plus