Im Folgenden ist die Installation des Tomcats für die WiM beschrieben. Primär richtet sich diese Anleitung an Linux-Systeme. Teile hiervon sind aber auch für das Deployment auf Windows-Umgebungen relevant.
Download Tomcat
Download der aktuellen Version von Tomcat 9 (Version muss ggf. im Downloadlink angepasst werden):
wget https://apache.mivzakim.net/tomcat/tomcat-9/v9.0.39/bin/apache-tomcat-9.0.39.tar.gz
Extrahieren und verschieben in /opt-Verzeichnis:
tar xvfz apache-tomcat-9.0.39.tar.gz
mv apache-tomcat-9.0.39/ /opt/tomcat/
Linuxnutzer Anlegen
Bei Verwendung eines Linux-Systems wird empfohlen, einen Nutzer “tomcat” anzulegen und diesem das Verzeichnis des Tomcats freizugeben.
Neuen Nutzer für den Tomcatserver anlegen:
adduser --disabled-login --home /opt/tomcat/ tomcat
chown -R tomcat:tomcat /opt/tomcat
Nutzerverwaltung des Tomcats festlegen
Um sich an der Applikation anzumelden, muss eine Nutzerverwaltung angelegt werden. Hier zu gibt es zwei Alternativen. Wir empfehlen Alternative B, da so einfach und flexibel neue Nutzer in der Oberfläche der B2B hinzugefügt werden können.
Tomcatnutzer in conf/tomcat-users.xml Verwalten (Alternative A)
Hierbei werden die Tomcatnutzer in der tomcat-users.xml verwaltet. Jeder neue Nutzer muss von einem Admin direkt in der Datei angelegt werden.
tomcat/conf/tomcat-users.xml editieren (Beispiel):
<role rolename="b2bbp"/>
<role rolename="fastlane"/>
<user username="admin" password="admin" roles="fastlane,b2bbp"/>
Tomcatnutzer in Datenbank Verwalten (Alternative B)
Um die B2B-Nutzerverwaltung zur Anmeldung zu nutzen und Nutzer bequem in der Oberfläche der B2B hinzufügen zu können, muss folgender Eintrag in der server.xml des WiM-Tomcats hinzugefügt werden:
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.DataSourceRealm" debug="99" dataSourceName="jdbc/b2bbp" localDataSource="true"
userTable="B2BBP_ADM_ACCOUNT" userNameCol="userid" userCredCol="password" userRoleTable="B2BBP_ADM_USER" roleNameCol="roleid">
<CredentialHandler className="org.apache.catalina.realm.NestedCredentialHandler">
<CredentialHandler className="org.apache.catalina.realm.MessageDigestCredentialHandler" algorithm="md5" />
<CredentialHandler className="org.apache.catalina.realm.MessageDigestCredentialHandler" algorithm="sha-512" />
</CredentialHandler>
</Realm>
</Realm>
Tomcat Startup Skript (Linux)
Um den Tomcat bequem hoch und wieder runter fahren zu können, können Sie ein Skript runterladen. Dies müsste noch gegebenenfalls an das System angepasst werden.
Startup Skript installieren
#!/bin/sh
# Startup script for the Tomcat Java Servlets and JSP server
#
# chkconfig: - 85 15
# description: Tomcat Java Servlets and JSP server
# processname: tomcat
# config:
#
### BEGIN INIT INFO
# Provides: tomcat
# Required-Start: $network $syslog $named
# Required-Stop: $network $syslog $named
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start/stop Tomcat Java Servlets and JSP server
### END INIT INFO
CATALINA_HOME=/opt/tomcat
JAVA_OPTS="-Dfile.encoding=ISO-8859-1 \
-Xms4096m -Xmx8288m \
-XX:PermSize=256m \
-XX:MaxPermSize=512m \
-Xss2m"
## Enable debugging
JAVA_OPTS="$JAVA_OPTS -Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"
## Enable Profiler
# JAVA_OPTS="$JAVA_OPTS -agentpath:/opt/tomcat/libyjpagent.so=usedmem=90"
# Enable POP3 timout in B2B (60 sec)
JAVA_OPTS="$JAVA_OPTS -Dmail.pop3.connectiontimeout=60000 -Dmail.pop3.timeout=60000 -Dmail.pop3.writetimeout=60000"
SU=`which su`
TOMCAT_OWNER=tomcat
WAIT_BEFOR_KILL=10
CATALINA_PID="$CATALINA_HOME/temp/tomcat.pid"
CATALINA_SH="$CATALINA_HOME/bin/catalina.sh"
tomcat_pid() {
# echo `ps aux | grep org.apache.catalina.startup.Bootstrap | grep -v grep | awk '{ print $2 }'`
if [ -f "$CATALINA_PID" ]; then
PID=`cat $CATALINA_PID`
if [ -f /proc/$PID/exe ]; then
echo $PID
else
# PID file exists but no corresponding process -> delete PID file
rm -f $CATALINA_PID
fi
fi
}
catalina_sh() {
$SU $TOMCAT_OWNER -c "set -a; \
CATALINA_HOME=\"$CATALINA_HOME\"; \
JAVA_OPTS=\"$JAVA_OPTS\"; \
CATALINA_PID=\"$CATALINA_PID\"; \
cd $CATALINA_HOME; \
$CATALINA_SH $@ >/dev/null"
}
start() {
pid=$(tomcat_pid)
if [ -n "$pid" ]; then
echo "Tomcat already running (pid $pid)"
else
echo -n "Starting Tomcat... "
catalina_sh start
status="$?"
sleep 1
pid=$(tomcat_pid)
if [ -n "$pid" ]; then
echo "OK (pid $pid)"
else
echo "FAILED"
return 1
fi
fi
}
stop() {
pid=$(tomcat_pid)
if [ -n "$pid" ]; then
echo -n "Stopping Tomcat (pid $pid): "
kill $pid
count=0;
until [ `ps -p $pid | grep -c $pid` = '0' ] || [ $count -gt $WAIT_BEFOR_KILL ]
do
echo -n "#"
sleep 1
count=$(($count+1));
done
# killing the pid failed, force termination
if [ $count -gt $WAIT_BEFOR_KILL ]; then
echo -n -e "\nForcing shutdown"
kill -9 $pid
fi
rm -f "$CATALINA_PID"
echo " OK"
else
echo "No pid file found"
fi
}
# See how we were called.
case "$1" in
start)
#if [ -z "$JAVA_HOME" ]; then
# echo "no JDK found - please set JAVA_HOME"
# exit 1
#fi
if [ ! -d "$CATALINA_HOME/conf" ]; then
echo "invalid CATALINA_HOME: $CATALINA_HOME"
exit 1
fi
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo $"Usage: tomcat {start|stop|restart}"
exit
esac
In eine Datei tomcat schreiben und als Startscript hinzufügen
cp tomcat /etc/init.d/tomcat
chmod +x /etc/init.d/tomcat
update-rc.d tomcat defaults
Dieses kann nun abhängig von der Distribution z.B. mit service tomcat start ausgeführt werden.
Dienst Anlegen (Windows)
Konträr zum Startscript müsste unter Windows ein Dienst eingerichtet werden, um den Tomcat zu starten. Eine Anleitung dazu ist in der B2B Installationsdokumentation zu finden.
Encoding: Der Server muss mit dem ISO-8859-1 Encoding gestartet sein. (Sollte immer der Fall sein)
Deployskript (Linux)
Für Linuxsysteme ist es sinnvoll ein Deployskript einzurichten. Je nach Knotenanzahl und installierten Produkten kann dies mehr oder weniger Komplex ausfallen. Hier eine einfache Vorlage:
#!/bin/bash
BASEDIR="/opt/tomcat"
WGET=`which wget`
UNZIP=`which unzip`
ZIP=`which zip`
install_wim() {
RELEASE="WIM"
WIMURL="https://nli-download.next-level-apps.com/PublicDL/FastlaneBackend/FastlaneBackend-V1.10/WIM/fastlane-backend.war"
do_install
}
do_install() {
echo -e "\e[0;32m*** Installing current \e[1m$RELEASE\e[22m version ***\e[0m"
echo -e "\e[0;33m*** Shutting down tomcat ***\e[0m"
/etc/init.d/tomcat stop
echo -e "\e[0;33m*** Deleting old deployment ***\e[0m"
rm -r "$BASEDIR/webapps/fastlane-backend/"
rm "$BASEDIR/webapps/fastlane-backend.war"
echo -e "\e[0;33m*** Loading new deployment files for version $VERSION ***\e[0m"
$WGET "$WIMURL" -O "$BASEDIR/webapps/fastlane-backend.war""
echo -e "\e[0;33m*** Deploying modules ***\e[0m"
echo -e "\e[0;33m*** Starting tomcat ***\e[0m"
/etc/init.d/tomcat start
echo -e "\e[0;32mFERTIG\e[0m";
}
install_wim;