Tomcat 5.5
Einleitung
Apache Tomcat ist eine OpenSource Implementierung der Java Servlet und der Java Server Pages Technologien. Zudem ist ein kompletter HTTP Server enthalten. In Produktivumgebungen läuft Tomcat meist in Kombination mit Apache, so dass Anfragen an Java Servlets bzw. JavaServer Pages vom Apache über einen Connector- Plugin an Tomcat weitergeleitet werden.
Installation und Dateien
root@zero:~# apt-get install sun-java6-jdk
Tomcat installieren
root@zero:~# apt-get install tomcat5.5
Admin und Manager Web Interfaces:
root@zero:~# apt-get install tomcat5.5-admin
Dokumentation und Beispiel Webanwendungen:
root@zero:~# apt-get install tomcat5.5-webapps
In der Datei /etc/default/tomcat5.5 eventuelle folgende Zeilen anpassen:
JAVA_HOME=/usr/lib/jvm/<zu_benutzende_java_version>
- Konfigurationsdateien: /etc/tomcat5.5/
- Logdateien: /var/log/tomcat5.5/
- Programmdateien: /usr/share/tomcat5.5/bin/
- Admin und Manager Anwendung: /var/lib/tomcat5.5/webapps/server/webapps
- Beispielanwendungen: /usr/share/tomcat5.5-webapps/
Startscript
root@zero:~# /etc/init.d/tomcat5.5 stop root@zero:~# /etc/init.d/tomcat5.5 start
Mit:
root@zero:~# netstat -lntp | grep 8180 tcp 0 0 0.0.0.0:8180 0.0.0.0:* LISTEN 8763/jsvc
kann verifiziert werden, ob der Server läuft.
Die "manager"- und die "admin"-Anwendungen
Tomcat liefert von Haus aus einige Web-Anwendungen mit. Die Anwendungen "jsp-examples" und "servlets-examples" dienen Einsteigern als mögliche Startpunkte und Beispiele für erste Schritte mit den jeweiligen Technologien. Wichtig ist natürlich auch die Anwendung "tomcat-docs", die die vollständige Doku enthält. Vor allem aber zwei Anwendungen verdienen Beachtung: Die "manager"- und die "admin"-Anwendungen. Die "manager"-Anwendung ermöglicht es, gezielt einzelne Anwendungen zu löschen, neu zu starten, zu stoppen oder auch neue WAR-Dateien aufzuspielen. Zum Hochladen einer neuen Anwendung wird einfach die war-Datei einer Anwendung mittels "Browse" aus dem Dateisystem ausgewählt und dann durch Absenden des Formulars installiert.
Die obige Auflistung der Möglichkeiten der "manager"-Anwendung macht deutlich, dass der Zugriff auf die "manager"-Anwendung gut geschützt werden muss. Ansonsten kann man von "remote" aus den Container komplett lahm legen oder einfach neue Apps aufspielen. Wenn die "manager"-Anwendung überhaupt (außerhalb des eigenen Netzwerkes) sichtbar sein soll, sollte unbedingt sicher gestellt sein, dass die Anwendung nur über eine gesicherte HTTPS-Verbindung genutzt werden kann und dass bei Produktiv-Umgebungen gescheite Passwörter verwendet werden. Die "admin"-Anwendung erleichtert einem ebenfalls das Leben. So sind einige Konfigurationen hier bequemer vorzunehmen als über die Konfigurationsdateien.
Bevor man beide Anwendungen benutzen kann, muss man einen Benutzer mit den entsprechenden Rechten erstellen:
cat /etc/tomcat5.5/tomcat-users.xml <tomcat-users> ... <user username="admin" password="geheim" roles="admin", manager/> ... </tomcat-users>
Danach muss tomcat neu gestartet werden.
Konfiguration des Tomcat Servers (Admin-Anwendung)
Hauptkonfigurationsdatei:
/etc/tomcate5.5/server.xml
Die Konfigurationsdateien der einzelnen Anwendungen auf dem System befinden sich als .xml Dateien im jeweiligen DocumentRoot.
Es empfiehlt sich, die Konfiguration soweit möglich über die graphische Oberfläche vorzunehmen.
Nach dem Anmelden an der Admin Anwendung sieht amn 3 Hauptbereiche:
Tomcat Server
Hier erfolgt die Konfiguration des eigentlichen Servers und der auf dem Server vorhandenen Webanwendungen.
Resources
Definition von Resourcen, die den Webanwendungen zur Verfügung stehen. Dies können zum Beispiel Datenbankanbindungen, Maildienste, etc. sein.
User Definition
Hier können Benutzer, Gruppen und Rollen verwaltet werden.
Tomcat Server
- Service
Unter einem Service werden alle Connectoren zusammengefaßt, die auf dem gleichen Container arbeiten. So ermöglicht ein Service, dass ein Container über mehrere verschiedene Connectoren erreichbar ist.
- Connector
Ein Connector verbindet Tomcat mit der Außenwelt. Er ist dafür verantwortlich, daß Requests von Clients empfangen und Responses an diese zurückgeschickt werden. Dazu ist er an einen bestimmten Port gebunden.
- Host
Damit mehrere Websites auf dem gleichen Webserver betrieben werden können, wurde das Konzept der " Hosts" entwickelt. In Tomcat werden virtuelle Hosts durch die Schnittstelle Host abgebildet. Sie muß anhand des Requests entscheiden, an welchen Context das Request-Response-Objektpaar weiterzuleiten ist. Jeder Host hat einen Namen und eine (möglicherweise leere) Menge von Aliasnamen. Unterhalb von Host kann man die einzelnen Webanwendungen konfigurieren.
Optionen zur Server-Konfiguration:
Name | Bedeutung |
EnableDNSLookups | Durchführen von Nameserverabfragen |
URI Encoding | Encoding, das für den URI String benutzt wird. ISO-8859-1, wenn nicht angegeben. |
IP Address | Für Server mit mehr als einer IP Adresse. |
Secure | SSL Support einschalten. |
Accept Count | Max. Warteschlangenlänge für Anfragen, wenn alle Prozess Threads ausgelastet sind. |
Compression | Schaltet Kompression ein / aus. |
Connection Timeout | Timeout |
Max KeepAlive Requests | Maximale Anfragen während einer Verbindung; 1 -> Ausschalten von KeepAlive, -1 -> unlimitierte Anzahl an Anfragen |
Max Spare Threads | Maximale Anzahl unbenutzter Prozesse. |
Max Threads | Maximale Anzahl der Prozesse. |
Min Spare Threads | Anzahl Prozesse, die beim Starten gestartet werden. |
Port Number | Port, auf dem der Server erreichbar ist. |
Redirect Port Number | Bei SSL Anfragen wird an diesen Port weitergeleitet. |
Verwalten der Anwendungen - Manager Anwendung
Deployen eines bestehenden Web Archives
Als erstes wollen wir ein bestehendes Web Archiv installieren. Das WAR-File enthält alle nötigen Dateien wie Servlets, sonstige Java-Klassen, JSP und HTML-Seiten, JAR-Archive. Dies geschieht in zwei Schritten (ein Beispiel für ein WAR-Archiv kann man unter der folgenden URL finden: http://www.hccfl.edu/pollock/AJava/WAR/myServletWAR.war):
- Kopieren Sie das WAR Archiv ins Verzeichnis $CATALINA_HOME/webapps (/usr/share/tomcat5.5/webapps/)
- Starten Sie Tomcat neu:
Tomcat entpackt das Web Archiv Anschliessend können Sie die Datei *.war löschen, da die darin enthaltenen Dateien sich nun in den Subverzeichnissen befinden.
Testen mit der URL „http://localhost:8180/<Name des WAR-Archivs ohne Suffix>“
Deployen von nicht archivierten Dateien
Falls Sie kein Web Archiv haben, können Sie die Dateien auch direkt ins WebApps Verzeichnis kopieren.Diese Methode ist sehr einfach und Tomcat generiert aufgrund Ihrer Verzeichnisstruktur beim Neustart den passenden Kontexteintrag in server.xml.
Deployen mithilfe der Tomcat Administration
Sie können auch Applikationen mithilfe der Tomcat Manager Befehle deployen oder auflisten oder entfernen.
Tomcat SSL
Zertifikat erstellen:
/usr/lib/jvm/java-6-sun/bin/keytool -genkey -alias tomcat -keyalg RSA
Nach Eingabe eines keystore-Passwortes und der gewünschten Daten, wird eine Datei ".keystore" im Homeverzeichnis des aufrufenden Benutzers erstellt.
Verschieben der Datei ins tomcat Konfigurations Verzeichnis :
mv .keystore /etc/tomcat5.5/
Anpassung der server.xml: Bei folgendem Eintrag Kommentarzeichen enfernen und um die Einträge keystoreFile="/pfad/zur/keystoredatei/dateiname" keystorePass="<gewähltes Passwort>" ergänzen.
<Connector port="8443" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" disableUploadTimeout="true" acceptCount="100" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreType="JKS" truststoreType="JKS" algorithm="SunX509" keystoreFile="/etc/tomcate5.5/.keystore" keystorePass="geheim" />
Anschließend Tomcat neu starten und mit „netstat -lntp“ überprüfen ob Port 8443 freigeschaltet ist. Danach sollte ein Zugriff auf den Tomcat mit der URL „https://localhost:8443“ möglich sein.
Apache und Tomcat verbinden
mod_jk ist ein Tomcat-Apache Plug-In, das für die Kommunikation zwischen Apache und Tomcat zuständig ist. Die erste Voraussetzung, damit dieser Connector eingesetzt werden kann, ist die DSO Unterstützung von Apache. Diese muss dem Web-Server einkompiliert worden sein. Wenn das folgende Kommando unter anderem "mod_so.c" zurück gibt, ist alles okay - ansonsten muss Apache mit DSO-Unterstützung neu kompiliert werden...
$apache2 -l Compiled in modules: core.c prefork.c http_core.c mod_so.c
Apache JK Connector installieren:
root@zero:~# apt-get install libapache2-mod-jk
Datei jk.conf in /etc/apache2/mods_available/ anlegen:
JkWorkersFile /etc/libapache2-mod-jk/workers.properties JkLogFile /var/log/apache2/mod_jk.log JkLogLevel info JkMount /*.jsp ajp13_worker JkMount /*/servlet/ ajp13_worker JkMount /manager ajp13_worker JkMount /manager/* ajp13_worker JkMount /jsp-examples ajp13_worker JkMount /jsp-examples/* ajp13_worker
Nach mods_enabled verlinken:
root@zero:/etc/apache2/mods-enabled# ln -s ../mods-available/jk.conf
Datei workers.properties wird automatisch unter /etc/libapache2-mod-jk/ angelegt.
In der Datei workers.properties darauf achten, dass folgende Zeilen korrekt sind (Tomcat Homeverzeichnis und Java Homeverzeichnis):
... workers.tomcat_home=/var/lib/tomcat5.5 workers.java_home=/usr/lib/jvm/java-6-sun
Danach müssen apache Webserver und Tomcat neu gestartet werden (zuerst Tomcat, dann apache neu starten).