Tomcat 5.5

Aus xinux.net
Zur Navigation springen Zur Suche springen

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):

  1. Kopieren Sie das WAR Archiv ins Verzeichnis $CATALINA_HOME/webapps (/usr/share/tomcat5.5/webapps/)
  2. 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).