Tomcat Installieren: Unterschied zwischen den Versionen
Ph (Diskussion | Beiträge) K (unixsocket for monit) |
|||
(13 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 4: | Zeile 4: | ||
[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)]. | [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)]. | ||
+ | |||
+ | 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 13: | ||
Dazu muss für jede Tomcat-Instanz die Option "Betrieb eines eigenen Serverdienstes" gebucht werden. Im Bereich des Shared Hosting ist die Option kostenpflichtig. | 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) | + | 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: | Geben Sie bei der Bestellung der Option "Eigener Serverdienst" an: | ||
# den Service User, mit dessen Rechten der Tomcat-Dienst laufen soll (also zum Beispiel "xyz00-tomcat") | # den Service User, mit dessen Rechten der Tomcat-Dienst laufen soll (also zum Beispiel "xyz00-tomcat") | ||
− | # wieviele IP-Ports reserviert werden sollen (in der folgenden Anleitung verwenden wir | + | # 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 == | ||
− | Auf den Hostsharing-Servern ist das Debian-Paket " | + | Auf den Hostsharing-Servern ist das Debian-Paket "tomcat9-user" installiert. Es stellt den |
− | Apache Tomcat Server in der Version | + | 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. | Dabei wird die zentral installierte Tomcat-Software benutzt, die über Betriebssystem-Updates mit Sicherheits-Updates versorgt wird. | ||
Zeile 27: | Zeile 32: | ||
mit den Rechten des Service-Users aufgerufen: | mit den Rechten des Service-Users aufgerufen: | ||
− | xyz00-tomcat@h00:~$ | + | xyz00-tomcat@h00:~$ tomcat9-instance-create tomcat |
Ich bevorzuge das catalina.sh-Startskript zum Testen: | Ich bevorzuge das catalina.sh-Startskript zum Testen: | ||
− | xyz00-tomcat@h00:~$ cp /usr/share/ | + | 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: | 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. | In der Hauptsache muss die Konfigurationsdatei "server.xml" im Verzeichnis "~/tomcat/conf/" angepasst werden. | ||
Zeile 59: | Zeile 68: | ||
<pre> | <pre> | ||
<?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | ||
− | + | <Server port="38005" shutdown="SHUTDOWN"> | |
− | <Server port=" | ||
− | |||
<Listener className="org.apache.catalina.startup.VersionLoggerListener" /> | <Listener className="org.apache.catalina.startup.VersionLoggerListener" /> | ||
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" /> | <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" /> | ||
Zeile 67: | Zeile 74: | ||
<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" description="User database" | + | type="org.apache.catalina.UserDatabase" |
+ | description="User database that can be updated and saved" | ||
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 address=" | ||
− | |||
<Engine name="Catalina" defaultHost="localhost"> | <Engine name="Catalina" defaultHost="localhost"> | ||
− | |||
<Realm className="org.apache.catalina.realm.LockOutRealm"> | <Realm className="org.apache.catalina.realm.LockOutRealm"> | ||
<Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/> | <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/> | ||
</Realm> | </Realm> | ||
− | + | <Host name="localhost" appBase="../webapps" unpackWARs="true" autoDeploy="true"></Host> | |
− | <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> | ||
− | |||
− | |||
</Engine> | </Engine> | ||
</Service> | </Service> | ||
Zeile 93: | Zeile 93: | ||
</pre> | </pre> | ||
− | Angepasst werden | + | 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: | |
− | |||
− | |||
− | |||
− | |||
<pre> | <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> | </pre> | ||
− | |||
== Deployment einer Anwendung == | == Deployment einer Anwendung == | ||
− | In der Beispiel-Konfiguration wurde das Verzeichnis | + | 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 minimale Anwendung hinein: | ||
− | mkdir -p | + | mkdir -p $HOME/webapps/hello/WEB-INF/ |
− | Dort legen wir die Datei ~ | + | Dort legen wir die Datei ~/webapps/hello/WEB-INF/web.xml mit folgendem Inhalt an: |
<pre> | <pre> | ||
Zeile 124: | Zeile 128: | ||
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 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"> | id="WebApp_ID" version="3.0"> | ||
− | |||
</web-app> | </web-app> | ||
</pre> | </pre> | ||
− | Dazu eine einfache JSP-Datei ~ | + | Dazu eine einfache JSP-Datei ~/webapps/hello/index.jsp: |
<pre> | <pre> | ||
Zeile 136: | Zeile 139: | ||
<body> | <body> | ||
<h1>Hallo Welt</h1> | <h1>Hallo Welt</h1> | ||
+ | <p>Java Version: <%= System.getProperty("java.version") %></p> | ||
</body> | </body> | ||
</html> | </html> | ||
Zeile 141: | Zeile 145: | ||
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 | + | Das funktioniert über eine ''.htaccess''-Datei, zum Beispiel im Verzeichnis ''~/doms/hs-example.de/htdocs-ssl'': |
<pre> | <pre> | ||
Zeile 149: | Zeile 153: | ||
RewriteCond %{REQUEST_FILENAME} !-f | RewriteCond %{REQUEST_FILENAME} !-f | ||
RewriteCond %{REQUEST_FILENAME} !-l | RewriteCond %{REQUEST_FILENAME} !-l | ||
− | RewriteRule ^(.*) ajp:// | + | RewriteRule ^(.*) ajp://127.0.0.1:38006/$1 [proxy,last] |
</pre> | </pre> | ||
− | + | Achtung der IP-Port 38006 muss hier wieder angepasst werden! | |
− | Dadurch ist die Mini-Anwendung unter der URL " | + | 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 "~/ | + | Der Tomcat kann über die Skripte in "~/tomcat/bin/" gestartet und gestoppt werden. |
<pre> | <pre> | ||
Zeile 169: | Zeile 173: | ||
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. | ||
− | + | ||
− | + | 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- | + | *[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:
- den Service User, mit dessen Rechten der Tomcat-Dienst laufen soll (also zum Beispiel "xyz00-tomcat")
- 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
- Apache Tomcat Homepage (Englisch)
- Apache Tomcat Dokumentation (Version 9.0, Englisch)
- Apache Tomcat Wiki (Englisch)
- Monit installieren
- Ansible Playbook für Hostsharing