Tomcat Installieren: Unterschied zwischen den Versionen

Aus Hostsharing Wiki
Zur Navigation springen Zur Suche springen
(Updates für Stretch)
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)].


== Spezielle Installation bei Hostsharing ==
== Spezielle Installation bei Hostsharing ==
Zeile 13: Zeile 11:
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.  
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) auf der paketeigenen IP-Adresse gebunden.
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.
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 zwei nicht-privilegierte Ports)
# wieviele IP-Ports reserviert werden sollen (in der folgenden Anleitung verwenden wir zwei nicht-privilegierte Ports, 30001 und 30002)


== Installation ==  
== Installation ==  


Auf den Hostsharing-Servern sind die Debian-Pakete "tomcat7-user" und "tomcat8-user" installiert. Sie ermöglichen den  
Auf den Hostsharing-Servern ist das Debian-Paket "tomcat8-user" installiert. Es stellt den  
Betrieb eines Tomcat-Dienstes (Apache Tomcat Version 7.0.x bzw. Version 8.0.x) mit den Berechtigungen eines normalen Users.
Apache Tomcat Server in der Version 8.5.x für den Betrieb als normaler (nicht privilegierter) User bereit.
Dabei wird die zentral installierte Tomcat-Software benutzt, die über Betriebssystem-Updates mit Sicherhaits-Updates
Dabei wird die zentral installierte Tomcat-Software benutzt, die über Betriebssystem-Updates mit Sicherheits-Updates versorgt wird.
versorgt wird.


Für die Installation der Konfigurations-Dateien in Heimat-Verzeichnis des Benutzers wird folgender Befehl
Für die Installation der Konfigurations-Dateien in Heimat-Verzeichnis des Benutzers wird folgender Befehl
Zeile 33: Zeile 29:
     xyz00-tomcat@h00:~$ tomcat8-instance-create tomcat
     xyz00-tomcat@h00:~$ tomcat8-instance-create tomcat


Dieser Befehl legt ein Verzeichnis "tomcat" mit der üblichen Datestruktur für einen Tomcat-Server an:
Ich bevorzuge das catalina.sh-Startskript zum Testen:
 
    xyz00-tomcat@h00:~$ cp /usr/share/tomcat8/bin/catalina.sh tomcat/bin/
 
Dieser Befehl legt ein Verzeichnis "tomcat" mit der üblichen Dateistruktur für einen Tomcat-Server an:


     tomcat/
     tomcat/
Zeile 48: Zeile 48:
     tomcat/temp/
     tomcat/temp/
     tomcat/bin/
     tomcat/bin/
    tomcat/bin/catalina.sh
     tomcat/bin/setenv.sh
     tomcat/bin/setenv.sh
     tomcat/bin/startup.sh
     tomcat/bin/startup.sh
     tomcat/bin/shutdown.sh
     tomcat/bin/shutdown.sh


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


<pre>
<pre>
<?xml version='1.0' encoding='utf-8'?>
<?xml version="1.0" encoding="UTF-8"?>
 
<Server port="-1" shutdown="SHUTDOWN">
<Server port="-1" 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.core.JreMemoryLeakPreventionListener" />
   <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
   <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
Zeile 67: Zeile 69:


   <GlobalNamingResources>
   <GlobalNamingResources>
     <Resource name="UserDatabase" auth="Container"
     <Resource name="UserDatabase" auth="Container"
               type="org.apache.catalina.UserDatabase"
               type="org.apache.catalina.UserDatabase" description="User database"
              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"
     <Connector address="localhost" port="30001" protocol="AJP/1.3" redirectPort="443" />
          address="xyz00.hostsharing.net" port="31313"
          URIEncoding="UTF-8" redirectPort="443" />


     <Engine name="Catalina" defaultHost="xyz00.hostsharing.net">
     <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"
         <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
              resourceName="UserDatabase"/>
       </Realm>
       </Realm>


       <Host name="xyz00.hostsharing.net" appBase="webapps"  
       <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
              unpackWARs="true" autoDeploy="true">
       </Host>
       </Host>


Zeile 98: Zeile 93:
</pre>
</pre>


Angepasst werden müssen:
Angepasst werden muss:
* der Paketname (im Beispiel xyz00) und
* der IP-Port (im Beispiel 30001 am localhost Interface)
* der IP-Port (im Beispiel 31313)


In der Datei "~/tomcat/bin/setenv.sh" sollte die Umgebungs-Variable "CATALINA_PID"
In der Datei "~/tomcat/bin/setenv.sh" sollte die Umgebungs-Variable "CATALINA_PID"
Zeile 109: Zeile 103:
Also etwa:
Also etwa:
<pre>
<pre>
CATALINA_PID=/home/pacs/xzy00/users/tomcat/tomcat/work/catalina.pid
CATALINA_PID=/home/pacs/xyz00/users/tomcat/tomcat/work/catalina.pid
</pre>
</pre>
am Anfang der Datei (etwa Zeile 4 oder 5) ergänzen.
am Anfang der Datei (etwa Zeile 4 oder 5) ergänzen.
Zeile 181: Zeile 175:


*[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 7.*, Englisch)]
*[http://tomcat.apache.org/tomcat-8.5-doc/index.html Apache Tomcat Dokumentation (Version 8.5, Englisch)]
*[http://wiki.apache.org/tomcat/FrontPage Apache Tomcat Wiki (Englisch)]
*[http://wiki.apache.org/tomcat/FrontPage Apache Tomcat Wiki (Englisch)]



Version vom 28. Februar 2019, 18:29 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).

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) auf der paketeigenen IP-Adresse 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 zwei nicht-privilegierte Ports, 30001 und 30002)

Installation

Auf den Hostsharing-Servern ist das Debian-Paket "tomcat8-user" installiert. Es stellt den Apache Tomcat Server in der Version 8.5.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:~$ tomcat8-instance-create tomcat

Ich bevorzuge das catalina.sh-Startskript zum Testen:

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

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

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

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="-1" 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"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />
  </GlobalNamingResources>

  <Service name="Catalina">

    <Connector address="localhost" port="30001" protocol="AJP/1.3" redirectPort="443" />

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

  • der IP-Port (im Beispiel 30001 am localhost Interface)

In der Datei "~/tomcat/bin/setenv.sh" sollte die Umgebungs-Variable "CATALINA_PID" gesetzt werden. Das sorgt dafür, dass der Tomcat-Dienst über das Shutdown-Skript gestoppt wird, obwohl in der "server.xml"-Konfiguration kein Shutdown-Port definiert ist.

Also etwa:

CATALINA_PID=/home/pacs/xyz00/users/tomcat/tomcat/work/catalina.pid

am Anfang der Datei (etwa Zeile 4 oder 5) ergänzen.

Deployment einer Anwendung

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

   mkdir -p ~/tomcat/webapps/hello/WEB-INF/

Dort legen wir die Datei ~/tomcat/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 ~/tomcat/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>
</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/example.org/htdocs":

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

Paketname und Port müssen wieder angepasst werden!

Dadurch ist die Mini-Anwendung unter der URL "http://examples.org/hello/" erreichbar.

Start des Tomcat Servers

Der Tomcat kann über die Skripte in "~/tomcat7/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. 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.

Links