Tomcat Installieren: Unterschied zwischen den Versionen

Aus Hostsharing Wiki
Zur Navigation springen Zur Suche springen
K (→‎Start des Tomcat Servers: Pfad aktualisiert bzw. ergänzt)
K (unixsocket for monit)
(28 dazwischenliegende Versionen von 4 Benutzern werden nicht angezeigt)
Zeile 3: Zeile 3:
== Allgemein ==
== Allgemein ==


[http://tomcat.apache.org/ Apache Tomcat] ist ein Webserver (HTTP-Server), der in der Programmiersprache Java entwickelt ist.
[http://tomcat.apache.org/ Apache Tomcat] ist ein Webserver (HTTP-Server), der in der Programmiersprache Java entwickelt ist. Er dient in erster Linie dazu, dynamische Web-Anwendungen zu betreiben, die ebenfalls in Java programmiert sind. Basis-Technologien sind [http://de.wikipedia.org/wiki/Servlet Java-Servlets] und [http://de.wikipedia.org/wiki/JSP Java Server Pages (JSP)].
Er dient in erster Linie dazu, dynamische Web-Anwendungen zu betreiben, die ebenfalls in Java programmiert sind.
 
Basis-Technologien sind [http://de.wikipedia.org/wiki/Servlet Java-Servlets] und [http://de.wikipedia.org/wiki/JSP Java Server Pages (JSP)].
Mit Hilfe von Apache Tomcat ist bei Hostsharing das Hosting von komplexen Java Web-Applikationen problemlos möglich.


== Spezielle Installation bei Hostsharing ==
== Spezielle Installation bei Hostsharing ==
Zeile 11: Zeile 11:
In jedem dynamischen Webhosting-Paket der Hostsharing eG können einer (oder mehrere) Tomcat-Webserver betrieben werden.
In jedem dynamischen Webhosting-Paket der Hostsharing eG können einer (oder mehrere) Tomcat-Webserver betrieben werden.


Dazu muss die die kostenpflichtige Option [https://www.hostsharing.net/produkte/web-pakete "Betrieb eines eigenen Serverdienstes"] gebucht werden.
Dazu muss für jede Tomcat-Instanz die Option "Betrieb eines eigenen Serverdienstes" gebucht werden. Im Bereich des Shared Hosting ist die Option kostenpflichtig.
 
Diese Anleitung dokumentiert die Installation des Apache Tomcat Servers als Service-User in einem WEB-Paket bei Hostsharing.  Mit der Einrichtung der Option "eigener Serverdienst" werden für die Paket-IP-Adresse einer oder mehrere IP-Ports reserviert. An diese Ports wird der eigene Serverdienst (also der Tomcat-Server) am Localhost-Interface gebunden.
 
Geben Sie bei der Bestellung der Option "Eigener Serverdienst" an:


Diese Anleitung dokumentiert die Installation des Apache Tomcat Servers als Paket-Admin in einem WEB-Paket bei Hostsharing. (Nicht SW-Paket)
# den Service User, mit dessen Rechten der Tomcat-Dienst laufen soll (also zum Beispiel "xyz00-tomcat")
Mit der Einrichtung der Option "eigener Serverdienst" werden für die Paket-IP-Adresse einer oder mehrere IP-Ports reserviert. An diese Ports wird der eigene Serverdienst (also der Tomcat-Server) auf der paketeigenen IP-Adresse gebunden.
# wieviele IP-Ports reserviert werden sollen (in der folgenden Anleitung verwenden wir drei nicht-privilegierte Ports:
* 38005 als "Shutdown"-Schnittstelle
* 38006 für eine AJP-Listener
* 38008 für den HTTP-Listener des Monit-Prozessmonitors


== Installation ==  
== Installation ==  


Die Tomcat-Distribution kann von den Apache-Servern heruntergeladen werden. Wir empfehlen die Installation des Tomcats im Paket, für die Tomcat-Software wird nur ca. 8 MB Speicherplatz benötigt.
Auf den Hostsharing-Servern ist das Debian-Paket "tomcat9-user" installiert. Es stellt den  
Apache Tomcat Server in der Version 9.0.x für den Betrieb als normaler (nicht privilegierter) User bereit.
Dabei wird die zentral installierte Tomcat-Software benutzt, die über Betriebssystem-Updates mit Sicherheits-Updates versorgt wird.
 
Für die Installation der Konfigurations-Dateien in Heimat-Verzeichnis des Benutzers wird folgender Befehl
mit den Rechten des Service-Users aufgerufen:
 
    xyz00-tomcat@h00:~$ tomcat9-instance-create tomcat
 
Ich bevorzuge das catalina.sh-Startskript zum Testen:


Zur Zeit ist die Version 7.0.41 aktuell (Juni 2013).
    xyz00-tomcat@h00:~$ cp /usr/share/tomcat9/bin/catalina.sh tomcat/bin/


Die Software wird heruntergeladen und entpackt. Das Installationsverzeichnis wird in "tomcat7" umbenannt:
Dieser Befehl legt ein Verzeichnis "tomcat" mit der üblichen Dateistruktur für einen Tomcat-Server an:


<pre>
    bin
cd /home/pacs/xyz00
    bin/catalina.sh
wget http://apache.mirror.iphh.net/tomcat/tomcat-7/v7.0.41/bin/apache-tomcat-7.0.41.tar.gz
    bin/setenv.sh
tar xzf apache-tomcat-7.0.41.tar.gz
    bin/shutdown.sh
mv apache-tomcat-7.0.41 tomcat7
    bin/startup.sh
rm apache-tomcat-7.0.41.tar.gz
    conf
</pre>
    conf/Catalina
    conf/Catalina/localhost
    conf/catalina.properties
    conf/context.xml
    conf/jaspic-providers.xml
    conf/logging.properties
    conf/server.xml
    conf/tomcat-users.xml
    conf/web.xml
    logs
    policy
    policy/catalina.policy
    temp
    webapps
    work


In der Hauptsache muss die Konfigurationsdatei "server.xml" im Verzeichnis "~/tomcat7/conf/" angepasst werden.
In der Hauptsache muss die Konfigurationsdatei "server.xml" im Verzeichnis "~/tomcat/conf/" angepasst werden.


Beispiel für eine minimale "server.xml":
Beispiel für eine minimale "server.xml":


<pre>
<pre>
<?xml version='1.0' encoding='utf-8'?>
<?xml version="1.0" encoding="UTF-8"?>
<Server port="-1" shutdown="SHUTDOWN">
<Server port="38005" shutdown="SHUTDOWN">
 
  <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
   <Listener className="org.apache.catalina.core.JasperListener" />
   <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
   <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
   <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
   <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
   <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
   <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
   <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
   <GlobalNamingResources>
   <GlobalNamingResources>
     <Resource name="UserDatabase" auth="Container"
     <Resource name="UserDatabase" auth="Container"
               type="org.apache.catalina.UserDatabase"
               type="org.apache.catalina.UserDatabase"
Zeile 52: Zeile 80:
               factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
               factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
               pathname="conf/tomcat-users.xml" />
               pathname="conf/tomcat-users.xml" />
   </GlobalNamingResources>
   </GlobalNamingResources>
   <Service name="Catalina">
   <Service name="Catalina">
 
     <Connector protocol="AJP/1.3" address="127.0.0.1" port="38006" redirectPort="443" secretRequired="false" />
     <Connector  
     <Engine name="Catalina" defaultHost="localhost">
          address="xyz00.hostsharing.net" port="31313"  
          protocol="AJP/1.3" redirectPort="443" />
 
     <Engine name="Catalina" defaultHost="xyz00.hostsharing.net">
 
       <Realm className="org.apache.catalina.realm.LockOutRealm">
       <Realm className="org.apache.catalina.realm.LockOutRealm">
         <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
         <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
              resourceName="UserDatabase"/>
       </Realm>
       </Realm>
 
       <Host name="localhost" appBase="../webapps" unpackWARs="true" autoDeploy="true"></Host>
       <Host name="xyz00.hostsharing.net"  
              appBase="../webapps/default"  
              unpackWARs="true" autoDeploy="true">
      </Host>
 
     </Engine>
     </Engine>
   </Service>
   </Service>
Zeile 79: Zeile 94:


Angepasst werden müssen:
Angepasst werden müssen:
* der Paketname (im Beispiel xyz00) und
* die beiden IP-Ports (im Beispiel 38005 und 38006 am Localhost-Interface)
* der IP-Port (im Beispiel 31313)
 
Das Startskript kann durch Anpassung der Datei ''setenv.sh'' angepasst werden. Für den Monit-Prozessmonitor setze ich insbesondere die Variable ''CATALINA_PID''. Mit ''JAVA_HOME'' sorge ich dafür, dass Java 11 zum Einsatz kommt:
 
<pre>
#!/bin/sh
#
HOME=/home/pacs/xyz00/users/tomcat
CATALINA_HOME=/usr/share/tomcat9
CATALINA_PID=$HOME/tomcat/work/catalina.pid
JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
PATH=$JAVA_HOME/bin:$PATH
# Default Java options
if [ -z "$JAVA_OPTS" ]; then
JAVA_OPTS="-Djava.awt.headless=true"
fi
</pre>


== Deployment einer Anwendung ==
== Deployment einer Anwendung ==


In der Beispiel-Konfiguration wurde das Verzeichnis "~/webapps/default" für die Anwendungen konfiguriert.
In der Beispiel-Konfiguration wurde das Verzeichnis ''$HOME/webapps/'' für die Anwendungen konfiguriert. Wir legen dieses Verzeichnis an und kopieren eine minimale Anwendung hinein:
Wir legen dieses Verzeichnis an und kopieren eine Beispielanwendung hinein:
 
    mkdir -p $HOME/webapps/hello/WEB-INF/
 
Dort legen wir die Datei ~/webapps/hello/WEB-INF/web.xml mit folgendem Inhalt an:
 
<pre>
<?xml version="1.0" encoding="UTF-8"?>
<web-app
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
</web-app>
</pre>
 
Dazu eine einfache JSP-Datei ~/webapps/hello/index.jsp:


<pre>
<pre>
cd /home/pacs/xyz00
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
mkdir webapps
<!DOCTYPE html>
mkdir webapps/default
<html lang="de-de">
cp -a tomcat7/webapps/examples webapps/default/
<body>
<h1>Hallo Welt</h1>
<p>Java Version: <%= System.getProperty("java.version")  %></p>
</body>
</html>
</pre>
</pre>


Nun können wir die HTTP-Requests, die an eine Domain im Paket gesendet werden, an den Tomcat weiterleiten.
Nun können wir die HTTP-Requests, die an eine Domain im Paket gesendet werden, an den Tomcat weiterleiten.
Das funktioniert über eine ".htaccess"-Datei, zum Beispiel im Verzeichnis "~/doms/example.org/htdocs":
Das funktioniert über eine ''.htaccess''-Datei, zum Beispiel im Verzeichnis ''~/doms/hs-example.de/htdocs-ssl'':


<pre>
<pre>
DirectoryIndex disabled
RewriteEngine On
RewriteEngine On
RewriteBase /
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.*) ajp://xyz00.hostsharing.net:31313/$1 [proxy,last]
RewriteRule ^(.*) ajp://127.0.0.1:38006/$1 [proxy,last]
</pre>
</pre>


Paketname und Port müssen wieder angepasst werden!
Achtung der IP-Port 38006 muss hier wieder angepasst werden!


Dann können wir unsere Tomcat-Examples unter der URL "http://examples.org/examples/" erreichen.
Dadurch ist die Mini-Anwendung unter der URL "https://hs-example.de/hello/" erreichbar.


== Start des Tomcat Servers ==
== Start des Tomcat Servers ==


Der Tomcat kann über die Skripte in "~/tomcat7/bin/" gestartet und gestoppt werden.
Der Tomcat kann über die Skripte in "~/tomcat/bin/" gestartet und gestoppt werden.


<pre>
<pre>
export JAVA_HOME=/usr/lib/jvm/java-6-openjdk
cd ~/tomcat
cd /home/pacs/xyz00/tomcat7
./bin/startup.sh
./bin/catalina.sh start
</pre>
</pre>


'''Anmerkung:''' Die Export-Zeile lautet bei shared hosting aktuell '''export JAVA_HOME=/usr/lib/jvm/java-6-openjdk-i386/'''
Log-Ausgaben des Servers sind in "~/tomcat/logs/catalina.out" zu finden.
 
Log-Ausgaben des Servers sind in "~/tomcat7/logs/catalina.out" zu finden.


Damit der Tomcat bei einem Reboot der Hostsharing-Server automatisch gestartet wird,
Damit der Tomcat bei einem Reboot der Hostsharing-Server automatisch gestartet wird,
kann "monit" als einfaches Überwachungswerkzeug genutzt werden.
kann "monit" als einfaches Überwachungswerkzeug genutzt werden.
Ein Anleitung dazu gibt es in diesem Wiki: [[Monit_installieren]] Die Anleitung bezieht sich auf einen eigenen
 
Apache-Webserver und muss entsprechend für Tomcat adaptiert werden.
Dazu legt man eine Datei ''.monitrc'' im $HOME-Verzeichnis an. Der Inhalt ist zum Beispiel:
 
<pre>
set daemon 60 with start delay 120
set logfile /home/pacs/xyz00/users/tomcat/monit/var/monit.log
set idfile /home/pacs/xyz00/users/tomcat/monit/var/monit.id
set statefile /home/pacs/xyz00/users/tomcat/monit/var/monit.state
set mailserver localhost
set mail-format { from: monit@xyz00.hostsharing.net }
set alert ich@meine-domain.de
set httpd unixsocket /home/pacs/xyz00/users/tomcat/monit/var/monit.sock
    permission 600
    allow monit:geheim
check process tomcat with pidfile /home/pacs/xyz00/users/tomcat/tomcat/work/catalina.pid
    start program "/home/pacs/xyz00/users/tomcat/tomcat/bin/startup.sh"
    stop program "/home/pacs/xyz00/users/tomcat/tomcat/bin/shutdown.sh"
</pre>
 
Monit lässt sich mit folgendem Kommando starten:
 
    mkdir -p $HOME/monit/var
    monit -c $HOME/.monitrc
 
Die letzte Aufgabe ist das Einrichten der Bereinigung für die Log-Dateien.
 
Dazu lege ich die Konfigurationsdatei ''.logrotate'' im $HOME-Verzeichnis an:
 
<pre>
/home/pacs/xyz00/users/tomcat/tomcat/logs/catalina.out {
  copytruncate
  compress
  rotate 5
  daily
  missingok
}
/home/pacs/xyz00/users/tomcat/monit/var/monit.log {
  copytruncate
  compress
  rotate 2
  weekly
  missingok
}
</pre>
 
Für den automatischen Start von Monit und für die Bereinigung der Log-Dateien noch eine ''crontab'':
 
<pre>
PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
HOME=/home/pacs/xyz00/users/tomcat
MAILTO=ich@meine-domain.de
# m h  dom mon dow  command
@reboot /bin/rm -f $HOME/tomcat/work/catalina.pid && /usr/bin/monit -c $HOME/.monitrc
1 1 * * * /usr/sbin/logrotate -s $HOME/.logrotate.state $HOME/.logrotate
14 3 * * * /usr/bin/find $HOME/tomcat/logs -type f -mmin +10080 -delete
</pre>
 
Dann gehen wir daran unsere Anwendungen im Tomcat zu deployen.


== Links ==
== Links ==


*[http://tomcat.apache.org/ Apache Tomcat Homepage (Englisch)]
*[http://tomcat.apache.org/ Apache Tomcat Homepage (Englisch)]
*[http://tomcat.apache.org/tomcat-7.0-doc/index.html Apache Tomcat Dokumentation (Version 5.*, Englisch)]
*[http://tomcat.apache.org/tomcat-9.0-doc/index.html Apache Tomcat Dokumentation (Version 9.0, Englisch)]
*[http://wiki.apache.org/tomcat/FrontPage Apache Tomcat Wiki (Englisch)]
*[http://wiki.apache.org/tomcat/FrontPage Apache Tomcat Wiki (Englisch)]
*[[Monit installieren]]
*[https://github.com/tpokorra/Hostsharing-Ansible-Tomcat Ansible Playbook für Hostsharing]


----
----
[[Kategorie:HSDoku]]
[[Kategorie:HSDoku]]
[[Kategorie:Installationsanleitungen]]
[[Kategorie:Installationsanleitungen]]
[[Kategorie:Ansible Playbook]]
[[Kategorie:Software]]
[[Kategorie:Software]]
[[Kategorie:Eigene Daemons]]
[[Kategorie:Eigene Daemons]]

Version vom 30. Dezember 2021, 11:48 Uhr

Apache Tomcat installieren

Allgemein

Apache Tomcat ist ein Webserver (HTTP-Server), der in der Programmiersprache Java entwickelt ist. Er dient in erster Linie dazu, dynamische Web-Anwendungen zu betreiben, die ebenfalls in Java programmiert sind. Basis-Technologien sind Java-Servlets und Java Server Pages (JSP).

Mit Hilfe von Apache Tomcat ist bei Hostsharing das Hosting von komplexen Java Web-Applikationen problemlos möglich.

Spezielle Installation bei Hostsharing

In jedem dynamischen Webhosting-Paket der Hostsharing eG können einer (oder mehrere) Tomcat-Webserver betrieben werden.

Dazu muss für jede Tomcat-Instanz die Option "Betrieb eines eigenen Serverdienstes" gebucht werden. Im Bereich des Shared Hosting ist die Option kostenpflichtig.

Diese Anleitung dokumentiert die Installation des Apache Tomcat Servers als Service-User in einem WEB-Paket bei Hostsharing. Mit der Einrichtung der Option "eigener Serverdienst" werden für die Paket-IP-Adresse einer oder mehrere IP-Ports reserviert. An diese Ports wird der eigene Serverdienst (also der Tomcat-Server) am Localhost-Interface gebunden.

Geben Sie bei der Bestellung der Option "Eigener Serverdienst" an:

  1. den Service User, mit dessen Rechten der Tomcat-Dienst laufen soll (also zum Beispiel "xyz00-tomcat")
  2. wieviele IP-Ports reserviert werden sollen (in der folgenden Anleitung verwenden wir drei nicht-privilegierte Ports:
  • 38005 als "Shutdown"-Schnittstelle
  • 38006 für eine AJP-Listener
  • 38008 für den HTTP-Listener des Monit-Prozessmonitors

Installation

Auf den Hostsharing-Servern ist das Debian-Paket "tomcat9-user" installiert. Es stellt den Apache Tomcat Server in der Version 9.0.x für den Betrieb als normaler (nicht privilegierter) User bereit. Dabei wird die zentral installierte Tomcat-Software benutzt, die über Betriebssystem-Updates mit Sicherheits-Updates versorgt wird.

Für die Installation der Konfigurations-Dateien in Heimat-Verzeichnis des Benutzers wird folgender Befehl mit den Rechten des Service-Users aufgerufen:

   xyz00-tomcat@h00:~$ tomcat9-instance-create tomcat

Ich bevorzuge das catalina.sh-Startskript zum Testen:

   xyz00-tomcat@h00:~$ cp /usr/share/tomcat9/bin/catalina.sh tomcat/bin/

Dieser Befehl legt ein Verzeichnis "tomcat" mit der üblichen Dateistruktur für einen Tomcat-Server an:

   bin
   bin/catalina.sh
   bin/setenv.sh
   bin/shutdown.sh
   bin/startup.sh
   conf
   conf/Catalina
   conf/Catalina/localhost
   conf/catalina.properties
   conf/context.xml
   conf/jaspic-providers.xml
   conf/logging.properties
   conf/server.xml
   conf/tomcat-users.xml
   conf/web.xml
   logs
   policy
   policy/catalina.policy
   temp
   webapps
   work

In der Hauptsache muss die Konfigurationsdatei "server.xml" im Verzeichnis "~/tomcat/conf/" angepasst werden.

Beispiel für eine minimale "server.xml":

<?xml version="1.0" encoding="UTF-8"?>
<Server port="38005" shutdown="SHUTDOWN">
  <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
  <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
  <GlobalNamingResources>
    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />
  </GlobalNamingResources>
  <Service name="Catalina">
    <Connector protocol="AJP/1.3" address="127.0.0.1" port="38006" redirectPort="443" secretRequired="false" />
    <Engine name="Catalina" defaultHost="localhost">
      <Realm className="org.apache.catalina.realm.LockOutRealm">
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
      </Realm>
      <Host name="localhost"  appBase="../webapps" unpackWARs="true" autoDeploy="true"></Host>
    </Engine>
  </Service>
</Server>

Angepasst werden müssen:

  • die beiden IP-Ports (im Beispiel 38005 und 38006 am Localhost-Interface)

Das Startskript kann durch Anpassung der Datei setenv.sh angepasst werden. Für den Monit-Prozessmonitor setze ich insbesondere die Variable CATALINA_PID. Mit JAVA_HOME sorge ich dafür, dass Java 11 zum Einsatz kommt:

#!/bin/sh
#
HOME=/home/pacs/xyz00/users/tomcat
CATALINA_HOME=/usr/share/tomcat9
CATALINA_PID=$HOME/tomcat/work/catalina.pid
JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
PATH=$JAVA_HOME/bin:$PATH
# Default Java options
if [ -z "$JAVA_OPTS" ]; then
	JAVA_OPTS="-Djava.awt.headless=true"
fi

Deployment einer Anwendung

In der Beispiel-Konfiguration wurde das Verzeichnis $HOME/webapps/ für die Anwendungen konfiguriert. Wir legen dieses Verzeichnis an und kopieren eine minimale Anwendung hinein:

   mkdir -p $HOME/webapps/hello/WEB-INF/

Dort legen wir die Datei ~/webapps/hello/WEB-INF/web.xml mit folgendem Inhalt an:

<?xml version="1.0" encoding="UTF-8"?>
<web-app 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
	id="WebApp_ID" version="3.0">
</web-app>

Dazu eine einfache JSP-Datei ~/webapps/hello/index.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="de-de">
<body>
<h1>Hallo Welt</h1>
<p>Java Version: <%= System.getProperty("java.version")  %></p>
</body>
</html>

Nun können wir die HTTP-Requests, die an eine Domain im Paket gesendet werden, an den Tomcat weiterleiten. Das funktioniert über eine .htaccess-Datei, zum Beispiel im Verzeichnis ~/doms/hs-example.de/htdocs-ssl:

DirectoryIndex disabled
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.*) ajp://127.0.0.1:38006/$1 [proxy,last]

Achtung der IP-Port 38006 muss hier wieder angepasst werden!

Dadurch ist die Mini-Anwendung unter der URL "https://hs-example.de/hello/" erreichbar.

Start des Tomcat Servers

Der Tomcat kann über die Skripte in "~/tomcat/bin/" gestartet und gestoppt werden.

cd ~/tomcat
./bin/startup.sh

Log-Ausgaben des Servers sind in "~/tomcat/logs/catalina.out" zu finden.

Damit der Tomcat bei einem Reboot der Hostsharing-Server automatisch gestartet wird, kann "monit" als einfaches Überwachungswerkzeug genutzt werden.

Dazu legt man eine Datei .monitrc im $HOME-Verzeichnis an. Der Inhalt ist zum Beispiel:

set daemon 60 with start delay 120
set logfile /home/pacs/xyz00/users/tomcat/monit/var/monit.log
set idfile /home/pacs/xyz00/users/tomcat/monit/var/monit.id
set statefile /home/pacs/xyz00/users/tomcat/monit/var/monit.state
set mailserver localhost
set mail-format { from: monit@xyz00.hostsharing.net }
set alert ich@meine-domain.de
set httpd unixsocket /home/pacs/xyz00/users/tomcat/monit/var/monit.sock
    permission 600
    allow monit:geheim
check process tomcat with pidfile /home/pacs/xyz00/users/tomcat/tomcat/work/catalina.pid
    start program "/home/pacs/xyz00/users/tomcat/tomcat/bin/startup.sh"
    stop program "/home/pacs/xyz00/users/tomcat/tomcat/bin/shutdown.sh"

Monit lässt sich mit folgendem Kommando starten:

   mkdir -p $HOME/monit/var
   monit -c $HOME/.monitrc

Die letzte Aufgabe ist das Einrichten der Bereinigung für die Log-Dateien.

Dazu lege ich die Konfigurationsdatei .logrotate im $HOME-Verzeichnis an:

/home/pacs/xyz00/users/tomcat/tomcat/logs/catalina.out {
   copytruncate
   compress
   rotate 5
   daily
   missingok
}
/home/pacs/xyz00/users/tomcat/monit/var/monit.log {
   copytruncate
   compress
   rotate 2
   weekly
   missingok
}

Für den automatischen Start von Monit und für die Bereinigung der Log-Dateien noch eine crontab:

PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
HOME=/home/pacs/xyz00/users/tomcat
MAILTO=ich@meine-domain.de
# m h  dom mon dow   command
@reboot /bin/rm -f $HOME/tomcat/work/catalina.pid && /usr/bin/monit -c $HOME/.monitrc
1 1 * * * /usr/sbin/logrotate -s $HOME/.logrotate.state $HOME/.logrotate
14 3 * * * /usr/bin/find $HOME/tomcat/logs -type f -mmin +10080 -delete

Dann gehen wir daran unsere Anwendungen im Tomcat zu deployen.

Links