Tomcat / Java config snippets

Die hier gemachten Angaben basieren alle auf dem Tomcat6 der bei Ubuntu Linux 10.04 LTS mitgeliefert wird.

Tomcat auf Port 80 laufen lassen

Um den Tomcat auf Port 80 laufen zu lassen in der /etc/tomcat6/server.xml den Connector port=“8080″ auf port=“80″ abaendern und in der /etc/default/tomcat6 den Wert AUTHBIND=yes setzen.

Tomcat Manager installieren

Der Tomcat Manager versteckt sich hinter dem Paket

aptitude install tomcat6-admin

Anschliessend in der /etc/tomcat6/tomcat-users.xml im Block <tomcat-users> die folgenden Zeilen einfuegen

<role rolename="manager"/>
<user username="MYUSERNAME" password="MYPASSWORD" roles="manager"/>

Danach kann man den Tomcat Manager unter der gewohnten Adresse http://MYHOSTNAME.TLD/manager/html aufrufen.

Zugriff bei Tomcat Manager auf IP beschraenken

Um den Tomcat Manager nicht fuer alle frei offen im Netz zu haben empfiehlt es sich den Zugriff darauf zu beschraenken. Dafuer in der /etc/tomcat6/Catalina/localhost/manager.xml den Context Eintrag wie folgt abaendern:

<Context path="/manager" docBase="/usr/share/tomcat6-admin/manager"
antiResourceLocking="false" privileged="true">
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="1\.2\.3\.4"/>
</Context>

Password Hashes statt Plain text in der tomcat-users.xml

Um Password Hashes statt Plain text Passwoerter zu verwenden muss der folgende Absatz in die Host section in der /etc/tomcat6/server.xml eingefuegt werden:

<Realm className="org.apache.catalina.realm.MemoryRealm" digest="SHA" />

anschliessend den Hash erzeugen mit:

cd /usr/share/tomcat6/bin/
export JAVA_HOME=/usr/lib/jvm/java-6-sun
./digest.sh -a SHA MYPASSWORD

und dann den Hash anstatt des Plain text Passwortes in der /etc/tomcat6/tomcat-users.xml im Passwortattribut speichern.

Komprimierung im Tomcat aktivieren

Um die Komprimierung der ausgelieferten Daten zu aktivieren in der /etc/tomcat6/server.xml dem Connector Eintrag um die folgenden Attribute erweitern:

compression="on"
compressionMinSize="2048"
noCompressionUserAgents="gozilla, traviata"
compressableMimeType="text/html,text/xml,text/plain,text/css,text/javascript"

Default root auf alternatives webapps Verzeichnis

Um den default root des Tomcat auf ein eigenes webapps Verzeichnis zu legen in der /etc/tomcat6/server.xml innerhalb des <Host> Blocks den folgenden Absatz einfuegen:

<Context path="" docBase="MYWEBAPPSDIR" debug="0" reloadable="true">
</Context>

Access log schreiben

Um eine access.log wie vom Apache gewohnt zu bekommen, muss in der /etc/tomcat6/server.xml den per default auskommentierten AccessLogValve einkommentieren:

<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs"
prefix="MYHOSTNAME_access_log." suffix=".txt" pattern="common"
resolveHosts="false"/>

Die Datei ist anschliessend unter /var/logs/tomcat6/MYHOSTNAME_access.log zu finden.

JMXREMOTE Connector aktivieren

Dafuer in der /etc/default/tomcat6 in den JAVA_OPTS=““ die folgenden Zeilen hinzufuegen:

-Dcom.sun.management.jmxremote='tomcat'
-Dcom.sun.management.jmxremote.port='8086'
-Dcom.sun.management.jmxremote.authenticate='true'
-Dcom.sun.management.jmxremote.password.file='/etc/java-6-sun/management/jmxremote.password'
-Dcom.sun.management.jmxremote.ssl='false'

und in der angegebenen Passwortdatei die Passwoerter definieren, z.B.:

monitorRole MYPASSWORD1
controlRole MYPASSWORD2

Notiz an mich: Diesen Beitrag NUR im HTML Fenster bearbeiten, nicht in der WYSIWIG, sonst werden die Code snippets rausgeschnitten.

libstdc++.so.5 unter Ubuntu 10.04 LTS 64bit

Fuer den Tivoli Storage Manager Client (tsm) 5.5.3 benoetigt man libstdc++.so.5 damit er funktioniert. Unter Ubuntu 10.04 LTS 64bit wird aber nur noch libstdc++.so.6 mitgeliefert. Um an die richtige Datei zu kommen muss man deswegen:

wget http://security.ubuntu.com/ubuntu/pool/universe/i/ia32-libs/ia32-libs_2.7ubuntu6.1_amd64.deb
dpkg-deb -x ia32-libs_2.7ubuntu6.1_amd64.deb ia32-libs
sudo cp ia32-libs/usr/lib32/libstdc++.so.5.0.7 /usr/lib32/
cd /usr/lib32
sudo ln -s libstdc++.so.5.0.7 libstdc++.so.5

(via)

ext2/3: fuer root reservierte Bloecke freigeben

Bei ueblichen Distributionen wie Debian oder Ubuntu wird bei dem formatieren einer Festplatte mit ext2 oder ext3 immer ein Bereich von ~5% fuer root reserviert. Dieses fuehrt dazu, dass die Festplatten einen kleineren Bereich zur Verfuegung haben, als sie eigentlich Besitzen. Gerade bei grossen Festplatten oder entsprechenden RAIDs koennen die 5% ganz schoen viel werden.

Wieviel Speicher reserviert ist kann man mit dem Tool tune2fs herausfinden. Der Befehl:

tune2fs -l /dev/mydevice

gibt mir u.a. die Werte „Reserved block count“ und „Block size“ aus. Multipliziert man nun diese beiden Zahlen bekommt man heraus, wieviele Bytes benutzt sind.

Den Speicher freigeben kann man ebenfalls mit dem Programm tune2fs:

tune2fs -m 0 /dev/mydevice

Den Unterschied kann man z.B mit dem Tool df angucken, wenn man es vorher und nachher aufruft. Interessant ist nicht der „Size“ sondern der „Avail“ Wert.