Tomcat installation per tarball (Linux)

Aus Tutorials
Version vom 6. Januar 2021, 16:47 Uhr von Martin Kirner (Diskussion | Beiträge) (→‎Links)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Voraussetzungen

Java siehe Java (Ubuntu)

Benutzer anlegen

sudo addgroup --system --no-create-home --disabled-login --group tomcat
sudo adduser --system --no-create-home --disabled-login --ingroup tomcat tomcat

Alternativ mit fixer UID:

sudo addgroup --system --no-create-home --disabled-login --uid 128 --group tomcat
sudo adduser --system --no-create-home --disabled-login --uid 128 --ingroup tomcat tomcat 

Download

Verfügbare Versionen siehe http://www.eu.apache.org/dist/tomcat/

wget http://www.eu.apache.org/dist/tomcat/tomcat-7/v7.0.69/bin/apache-tomcat-7.0.69.tar.gz
tar -xzf apache-tomcat-7.0.69.tar.gz

Installationsverzeichnis anlegen:

sudo mkdir -p /opt/tomcat/tomcat7_0_69/

Entpacktes Tomcat-Verzeichnis verschieben und Besitzer setzen:

sudo mv apache-tomcat-7.0.69 /opt/tomcat/tomcat7_0_69/tomcat7
sudo chown -R tomcat:tomcat /opt/tomcat/tomcat7_0_69/tomcat7

Installation

Einen symbolischen Link auf das Verzeichnis mit der Version für Tomcat 7 anlegen (falls mehrere Versionen installiert sind):

cd /opt/tomcat/
sudo ln -s /opt/tomcat/tomcat7_0_69 tomcat7

Umgebungsvariablen setzen

  • CATALINA_HOME = Verzeichnis, wo die Binärdateien liegen
  • CATALINA_BASE = Verzeichnis, wo die Instanz-spezifischen Dateien (z.B. Konfigurationsdateien) liegen (bei einer Instanz können beide Variablen gleich sein)

Dazu eine Datei /etc/tomcat7.conf erstellen:

sudo vi /etc/tomcat7.conf

Diese Datei mit folgenden Inhalt befüllen:

# Where your java installation lives
JAVA_HOME="/opt/Oracle_Java/jdk1.8.0_92"

# Where your tomcat installation lives
CATALINA_BASE="/opt/tomcat/tomcat7_0_69/tomcat7"
CATALINA_HOME="/opt/tomcat/tomcat7_0_69/tomcat7"
JASPER_HOME="/opt/tomcat/tomcat7_0_69/tomcat7"
CATALINA_TMPDIR="/opt/tomcat/tomcat7_0_69/tomcat7/temp"

# Set the TOMCAT_PID location
CATALINA_PID="$CATALINA_HOME/bin/catalina.pid"

# What user should run tomcat
TOMCAT_USER="tomcat"

In der Datei /opt/tomcat/tomcat7_0_69/tomcat7/bin/catalina.sh die Variablenkonfiguration einfügen:

...
# Ensure that any user defined CLASSPATH variables are not used on startup,
# but allow them to be specified in setenv.sh, in rare case when it is needed.
CLASSPATH=

# Get the tomcat config (use this for environment specific settings)
if [ -z "${TOMCAT_CFG}" ]; then
        TOMCAT_CFG="/etc/tomcat7.conf"
fi

if [ -r "$TOMCAT_CFG" ]; then
        . $TOMCAT_CFG
fi

if [ -r "$CATALINA_BASE/bin/setenv.sh" ]; then
  . "$CATALINA_BASE/bin/setenv.sh"
...

Konfiguration

Tomcat Benutzer anlegen

Dazu in der Datei $CATALINA_HOME/conf/tomcat-users.xml folgende Zeilen zwischen <tomcat-users> und </tomcat-users> einfügen:

<role rolename="admin-gui"/>
<role rolename="manager-gui"/>
<role rolename="tomcat"/>
<user username="tomcat" password="tomcat" roles="tomcat,manager-gui,admin-gui"/>

Zusätzlich bei Tomcat 9

Manager für alle Addressen erlauben

sudo vi /opt/tomcat/tomcat9_0_0/conf/Catalina/localhost/manager.xml
<Context privileged="true" antiResourceLocking="false" docBase="${catalina.home}/webapps/manager">
    <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="^.*$" />
</Context>

Als Service mit SysVinit

Eine Konfigurationsdatei /etc/init.d/tomcat7 anlegen:

sudo nano /etc/init.d/tomcat7

Die Datei /etc/init.d/tomcat7 mit folgenden Inhalt befüllen (die Basis für dieses Skript stammt von https://gist.github.com/miglen/5590986):

Datei:Tomcat7.sh

Service beim Systemstart automatisch starten:

sudo update-rc.d tomcat7 defaults 80 10

Realm (Security Authentication)

https://tomcat.apache.org/tomcat-7.0-doc/realm-howto.html#JDBCRealm

http://www.avajava.com/tutorials/lessons/how-do-i-use-a-jdbc-realm-with-tomcat-and-mysql.html?page=1

Mehrere Tomcat-Instanzen parallel

Für jede weitere Instanz ein weiteres Verzeichnis (CATALINA_BASE) anlegen. Die Unterverzeichnise conf und webapps werden kopiert. Anstelle des Unterverzeichnisses bin wird ein symbolischer Link zu CATALINA_HOME/bin gesetzt.

cd /opt/tomcat/tomcat7_0_69/
sudo mkdir tomcat7_1
sudo cp -r tomcat7/conf/ tomcat7_1/conf/
sudo cp -r tomcat7/webapps/ tomcat7_1/webapps/
sudo mkdir tomcat7_1/logs/
sudo mkdir tomcat7_1/temp/
sudo mkdir tomcat7_1/work/
cd tomcat7_1
sudo ln -s ../tomcat7/bin bin
sudo ln -s ../tomcat7/lib lib
sudo chown -R tomcat:tomcat /opt/tomcat/tomcat7_0_69/tomcat7_1/
sudo chmod -R 755 /opt/tomcat/tomcat7_0_69/tomcat7_1/
sudo -u tomcat cp /opt/tomcat/tomcat7_0_69/tomcat7/bin/catalina.sh /opt/tomcat/tomcat7_0_69/tomcat7/bin/catalina7_1.sh
sudo cp /etc/tomcat7.conf /etc/tomcat7_1.conf

Dieser Vorgang wird für jede weitere Instanz wiederholt:

cd /opt/tomcat/tomcat7_0_69/
sudo mkdir tomcat7_<instance>
sudo cp -r tomcat7/conf/ tomcat7_<instance>/conf/
sudo cp -r tomcat7/webapps/ tomcat7_<instance>/webapps/
sudo mkdir tomcat7_<instance>/logs/
sudo mkdir tomcat7_<instance>/temp/
sudo mkdir tomcat7_<instance>/work/
cd tomcat7_<instance>
sudo ln -s ../tomcat7/bin bin
sudo ln -s ../tomcat7/lib lib
sudo chown -R tomcat:tomcat /opt/tomcat/tomcat7_0_69/tomcat7_<instance>/
sudo chmod -R 755 /opt/tomcat/tomcat7_0_69/tomcat7_<instance>/
sudo -u tomcat cp /opt/tomcat/tomcat7_0_69/tomcat7/bin/catalina.sh /opt/tomcat/tomcat7_0_69/tomcat7/bin/catalina7_<instance>.sh
sudo cp /etc/tomcat7.conf /etc/tomcat7_<instance>.conf

$CATALINA_BASE/bin/catalina7_X.sh

Danach in /opt/tomcat/tomcat7_0_69/tomcat7/bin/catalina7_<instance>.sh den Namen der Tomcat-Konfigurationsdatei anpassen:

...
# Get the tomcat config (use this for environment specific settings)
if [ -z "${TOMCAT_CFG}" ]; then
        TOMCAT_CFG="/etc/tomcat7_<instance>.conf"
fi
...

$CATALINA_BASE/conf/server.xml

Alle Instanzen müssen unterschiedliche Ports verwenden. Die verwendeten Ports werden in der Datei $CATALINA_BASE/conf/server.xml geändert:

cd /opt/tomcat/tomcat7_0_69/tomcat7_1/conf/
sudo nano server.xml

Die Standard-Ports sind in der folgenden Tabelle aufgelistet:

Port Beschreibung
8005 Shutdown Port
8080 Connector Port
8443 Redirect Port
8009 AJP Connector Port

Ein Möglichkeit ist, die führende 8 bei allen Ports jeweils erhöhen oder erniedrigen. Aus 8005 wird dann z.B. 9005.

/etc/tomcat7_<instance>

In den Konfigurations-Dateien tomcat7 durch tomcat7_<instance> (ausgenommen CATALINA_HOME) ersetzen

# Where your java installation lives
JAVA_HOME="/opt/Oracle_Java/jdk1.8.0_92"

# Where your tomcat installation lives
CATALINA_BASE="/opt/tomcat/tomcat7_0_69/tomcat7_<instance>"
CATALINA_HOME="/opt/tomcat/tomcat7_0_69/tomcat7"
JASPER_HOME="/opt/tomcat/tomcat7_0_69/tomcat7_<instance>"
CATALINA_TMPDIR="/opt/tomcat/tomcat7_0_69/tomcat7_<instance>/temp"

# Set the TOMCAT_PID location
CATALINA_PID="$CATALINA_HOME/bin/catalina7_<instance>.pid"

# What user should run tomcat
TOMCAT_USER="tomcat"

Als Service mit SysVinit

Zuerst die Service-Konfigurationsdateien für alle weiteren Instanzen kopieren:

sudo cp /etc/init.d/tomcat7 /etc/init.d/tomcat7_1
sudo cp /etc/init.d/tomcat7 /etc/init.d/tomcat7_2

Danach in den eben kopierten Dateien

.../tomcat7_0_69/tomcat7"

durch die jeweilige Instanz (z.B. tomcat7_1) ersetzen:

.../tomcat7_0_69/tomcat7_<instance>"

Da jede Instanz eine eigene PID-Datei verwendet, muss auch diese Variable angepaßt werden:

CATALINA_PID="$CATALINA_BASE/bin/catalina7_<instance>.pid"

Zum Abschluß das Script zu den Run-Levels hinzufügen:

sudo update-rc.d tomcat7_1 defaults 80 10
sudo update-rc.d tomcat7_2 defaults 80 10

Load Balancer

Load Balancer mit mod_jk (Linux)

Eclipse

Tomcat und Eclipse

Links

http://perfect-knowhow.de/autostart-von-tomcat-6-beim-booten-eines-ubuntu-systems

https://www.digitalocean.com/community/tutorials/how-to-install-apache-tomcat-8-on-ubuntu-14-04

http://www.patrick-gotthard.de/manuelle-tomcat-installation-unter-linux

http://www.laub-home.de/wiki/Mehrere_Tomcat_Instanzen_auf_einem_Server

https://www.tech-island.com/tutorials/mehrere-tomcat-instanzen-auf-demselben-server


Zurück zu Tomcat (tarball)