Mehrere Tomcat Instanzen auf einem Server

Aus Laub-Home Wiki

Hier eine kurze Beschreibung wie man mehrere Tomcat Instanzen auf einem Server zum laufen bekommt und dieser dann trotzdem noch von den System Updates aktualisiert wird. Dieses HowTo wurde unter Red Hat Enterprise Linux 5 durchgeführt, sollte aber auch unter jeder anderen Distribution laufen. Eventuell sind die Pfade etwas anders.

Im Grunde genommen wird der Tomcat 1 zu 1 nochmal auf dem System installiert, bzw. kopiert und einfach doppelt gestartet. Man kann anhand dieser Anleitung auch mehr als 2 Tomcat Instanzen zum laufen bekommen.

unter Red Hat Linux 5 (Tomcat5)

mkdir /usr/share/tomcat5-test/
cd /usr/share/tomcat5-test
ln -s ../tomcat5/bin bin
ln -s ../tomcat5/common common
ln -s ../tomcat5/server server
ln -s ../tomcat5/shared shared
cp -rp /etc/tomcat5 /etc/tomcat5-test
ln -s /etc/tomcat5-test conf
mkdir -p /var/cache/tomcat5-test/work
mkdir -p /var/cache/tomcat5-test/temp
ln -s /var/cache/tomcat5-test/temp temp
ln -s /var/cache/tomcat5-test/work work
chown -R root.tomcat /var/cache/tomcat5-test/
chmod 775 -R /var/cache/tomcat5-test/
cp -rp /srv/tomcat5/webapps /srv/tomcat5/webapps-test
mkdir /var/log/tomcat5-test
chown tomcat.tomcat /var/log/tomcat5-test/
ln -s /var/log/tomcat5-test logs
ln -s /srv/tomcat5/webapps-test/ webapps
cp -p /etc/sysconfig/tomcat5 /etc/sysconfig/tomcat5-test
ln -s /etc/init.d/tomcat5 /etc/init.d/tomcat5-test
chkconfig tomcat5-test on

Nachdem nun der 2te Tomcat angelegt wurde, muss dieser noch konfiguriert werden:
Änderungen der /etc/sysconfig/tomcat5-test

CATALINA_HOME="/usr/share/tomcat5-test"
JASPER_HOME="/usr/share/tomcat5-test"
CATALINA_TMPDIR="/usr/share/tomcat5-test/temp"
JAVA_ENDORSED_DIRS="/usr/share/tomcat5-test/common/endorsed"

CATALINA_PID=/var/run/tomcat5-test.pid

CONNECTOR_PORT=8181

So im Anschluss noch Änderungen an der /etc/tomcat5-test/server.xml:


<!-- Define a non-SSL HTTP/1.1 Connector on port 8181 -->
    <Connector port="8181" maxHttpHeaderSize="8192"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="17774" acceptCount="100"
               connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8"/>

<!-- Define an AJP 1.3 Connector on port 11007 -->
    <Connector port="8109"
               enableLookups="false" redirectPort="17774" protocol="AJP/1.3" URIEncoding="UTF-8"/>

Nun kann der Tomcat gestartet werden:

/etc/init.d/tomcat5-test start

und sollte unter Port 8181 erreichbar sein:

  • http://servername:8181

unter Red Hat Linux 6 (Tomcat6)

mkdir /usr/share/tomcat6-test/
cd /usr/share/tomcat6-test
ln -s ../tomcat6/bin bin
ln -s /usr/share/java/tomcat6 lib
cp -rp /etc/tomcat6 /etc/tomcat6-test
ln -s /etc/tomcat6-test conf
mkdir -p /var/cache/tomcat6-test/work
mkdir -p /var/cache/tomcat6-test/temp
ln -s /var/cache/tomcat6-test/temp temp
ln -s /var/cache/tomcat6-test/work work
chown -R root.tomcat /var/cache/tomcat6-test/
chmod 775 -R /var/cache/tomcat6-test/
mkdir -p /srv/tomcat6-test/logs
chown tomcat:tomcat -R /srv/tomcat6-test
cp -rp /srv/tomcat6/webapps /srv/tomcat6-test/webapps
ln -s /srv/tomcat6-test/logs/ /var/log/tomcat6-test
ln -s /var/log/tomcat6-test logs
ln -s /srv/tomcat6-test/webapps/ webapps
cp -p /etc/sysconfig/tomcat6 /etc/sysconfig/tomcat6-test
ln -s /etc/init.d/tomcat6 /etc/init.d/tomcat6-test
chkconfig tomcat6-test on

Änderung an der Datei: tomcat-users.xml
/etc/tomcat6-test/tomcat-users.xml

<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
  <role rolename="manager"/>
  <role rolename="tomcat"/>
  <role rolename="admin"/>
  <role rolename="role1"/>
  <user username="admin" password="d9f006324538690c7bb64474d23acc799297e822" roles="admin,manager"/>
</tomcat-users>

Nun noch die Ports umlegen und SHA Verschlüsselung aktivieren aktivieren:
/etc/tomcat6-test/server.xml

<Server port="8105" shutdown="SHUTDOWN">

    <Connector port="8181" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="81443" URIEncoding="UTF-8" />

<Connector port="8109" protocol="AJP/1.3" redirectPort="81443" URIEncoding="UTF-8" />

      <!-- This Realm uses the UserDatabase configured in the global JNDI
           resources under the key "UserDatabase".  Any edits
           that are performed against this UserDatabase are immediately
           available for use by the Realm.  -->
      <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
             resourceName="UserDatabase" digest="sha"/>

      <!-- Define the default virtual host

/etc/sysconfig/tomcat6-test

CATALINA_BASE="/usr/share/tomcat6-test"
CATALINA_HOME="/usr/share/tomcat6-test"
JASPER_HOME="/usr/share/tomcat6-test"
CATALINA_TMPDIR="/usr/share/tomcat6-test/temp"

CATALINA_PID=/var/run/tomcat6-test.pid

CONNECTOR_PORT=8181

Nun den Dienst starten:

/etc/init.d/tomcat6-test start

Zum Schluss noch das Rotieren der catalina.out einrichten, dafür folgende Dateien anlegen:
/etc/logrotate.d/tomcat6-test

/var/log/tomcat6-test/catalina.out {
    copytruncate
    daily
    dateext
    rotate 93
    compress
    missingok
    create 0644 tomcat tomcat
}

unter Ubuntu Linux

mkdir /usr/share/tomcat6-test/
cd /usr/share/tomcat6-test
ln –s ../tomcat6/bin bin
ln -s ../tomcat6/lib/ lib
ln -s ../tomcat6/webapps/ webapps
mkdir /var/lib/tomcat6-test
cd /var/lib/tomcat6-test
ln -s ../tomcat6/common/ common
ln -s ../tomcat6/server/ server
ln -s ../tomcat6/shared/ shared
cp -rp /etc/tomcat6 /etc/tomcat6-test
ln -s /etc/tomcat6-test conf
mkdir -p /var/cache/tomcat6-test
ln -s ../../cache/tomcat6-test/ work
chown -R root.tomcat6 /var/cache/tomcat6-test/
chmod 775 -R /var/cache/tomcat6-test/
cp -rp /srv/tomcat6/webapps /srv/tomcat6/webapps-test
mkdir /var/log/tomcat6-test
chown tomcat6.tomcat6 /var/log/tomcat6-test/
ln -s /var/log/tomcat6-test logs
ln -s /srv/tomcat6/webapps-test/ webapps
cp /etc/default/tomcat6 /etc/default/tomcat6-test
cp -rp /etc/init.d/tomcat6 /etc/init.d/tomcat6-test
update-rc.d tomcat6-test defaults 92

folgende Änderungen an folgenden Dateien vornehmen
/etc/init.d/tomcat6-test

NAME=tomcat6-test

/etc/tomcat6-test/server.xml

<Server port="8105" shutdown="SHUTDOWN">
<Connector port="8181" protocol="HTTP/1.1"
               connectionTimeout="20000"
               URIEncoding="UTF-8"
               redirectPort="17774" />
<!-- Define an AJP 1.3 Connector on port 8009 -->
    <Connector port="8109" protocol="AJP/1.3" redirectPort="17774" />

Nun kann der Tomcat gestartet werden:

/etc/init.d/tomcat6-test start

und sollte unter Port 8181 erreichbar sein:

  • http://servername:8181

Achtung!!! Bei einem Tomcat Update muss das init Skript neu kopiert und editiert werden.