Kernmodul Installation Upgrade

Vorbereitung der Installation

Die SuperX-Datenbank läuft auf Windows- und Linux-Rechnern. Der SuperX-Client läuft im Browser. Für den Applikationsserver empfehlen wir einen UNIX- bzw. Linux-Server, da die serverseitigen Scripte als Shellscripte konfiguriert sind. Aktuelle Linux-Distributionen enthalten die benötigten Pakete für Java, Tomcat und PostgreSQL.

SuperX ab Kernmodul 5.0 wird mit UTF-8 betrieben. Datenbank, Betriebssystem-Locale, Java-Prozess, Connectoren und Dateien müssen UTF-8 verwenden. Weitere Hinweise finden Sie im Kapitel Zeichencodierung.

Für die Installation der Softwarevoraussetzungen liefern wir i.d.R. Beispiel für Ubuntu Linux, die, mit Einschänkungen, auch auf Debian übertragbar sind. Einzelne Kapitel beinhalten aber auch spezielle Hinwiese für andere Distributionen (SuSE, AlmaLinux, Redhat)

Das Kernmodul

Das SuperX-Kernmodul beinhaltet alle zum Betrieb von SuperX unbedingt notwendigen Tabellen, Prozeduren und Abfragen; die wichtigsten Tabellen werden unten näher beschrieben.

Ab Kernmodul 6.0 liegt die Datenbankseite des Kernmoduls innerhalb der SuperX-Webanwendung. In dieser Dokumentation werden dafür folgende Umgebungsvariablen verwendet:

BezeichnungVariableTypischer PfadBeschreibung

Tomcat-Installation

$TOMCAT_HOME

/home/superx/webserver/tomcat oder /var/lib/tomcat10

Basisverzeichnis des installierten Tomcat

SuperX-Webanwendung

$WEBAPP

$TOMCAT_HOME/webapps/superx

Wurzelverzeichnis der SuperX-Webanwendung

SuperX-Datenbank- und Modulbereich

$SUPERX_DIR

$WEBAPP/WEB-INF/conf/edustore

Verzeichnis der Datenbank-, Installations- und Modulscripte

Unterhalb von $SUPERX_DIR befinden sich insbesondere folgende Verzeichnisse:

PfadBeschreibung

$SUPERX_DIR/db/bin

Shellscripte und die Umgebungssteuerung SQL_ENV

$SUPERX_DIR/db/install

Installations- und Upgrade-Scripte des Kernmoduls

$SUPERX_DIR/db/module

Installierte SuperX-Module

$SUPERX_DIR/db/conf

Konfigurations- und Hilfsdateien der Datenbankseite

Unterhalb von $WEBAPP/WEB-INF befinden sich außerdem die Webanwendungsdateien, beispielsweise die Verzeichnisse classes, lib, lib_ext und reports sowie die Dateien db.properties, dbforms-config.xml und web.xml. Der Datenbankserver kann auf einem anderen Rechner liegen als der Applikationsserver. Unter Linux kann für den Betrieb ein Benutzer superx mit dem Homeverzeichnis /home/superx eingerichtet werden. Das Homeverzeichnis ist jedoch nicht automatisch mit $SUPERX_DIR identisch.

Ausbaustufen einer SuperX-Installation

SuperX liefert eine datenbankbasierten Website zur Präsentation von Inhalten der Hochschule für die öffentliche Nutzung im Internet sowie für die interne Nutzung im Intranet. Nach einer Datenübernahme aus den operativen Systemen gilt es, eine effiziente Berichterstellung zu ermöglichen und Export- und Importschnittstellen zu bieten. Das System wird in mehreren Aufbaustufen realisiert, wichtig ist daher die Skalierbarkeit des Systems vom Prototypen bis zum Echtbetrieb.

Der Prototyp der Erstinstallation ist auf einem einzelnen System möglich:

417x313px

Das zu realisierende System besteht aus drei Komponenten: der Datenbank, der Webanwendung und des Clients (3-tier-Application).

Falls die Last ansteigt, ist das System wie folgt skalierbar:

Die SuperX-Datenbank wird angebunden an ein oder mehrere operative Vorsysteme. Gleichzeitig, um die Webanwendung zu entlasten, ist es möglich, die Last auf einen zweiten Webserver auszulagern ("Load balancing").

417x313px

Installation

Die Installationsschritte beziehen sich auf die Neuinstallation und das Upgrade. Für die Neuinstallation für Testzwecke gibt es eine Kurzanleitung unter Linux.

Neuinstallation

Bei der Neuinstallation können Sie einfach alle Komponenten in einen Pfad $SUPERX_DIR kopieren und von dort die unten genannten Installationsschritte durchführen. Beim Update können Sie die Patchdatei in $SUPERX_DIR entpacken; die "alten" Dateien werden ersetzt. Wenn Sie die Datenbank und den Applikationsserver auf getrennten Systemen betreiben, dann entpacken Sie am besten die Update-Datei in einem temporären Verzeichnis und kopieren dann die Ordner /db und /webserver auf die entsprechenden Rechner.

Wichtig:Ändern Sie bitte keinesfalls die Ordnerstruktur unterhalb von /db und /webserver; Sie können u.U. keine Updates ohne umfangreiche Anpassungen einspielen. Besonders bei der Inbetriebnahme des Systems ist es für die Fehlersuche unerläßlich, die Ordnerstruktur einzuhalten.

SuperX ist zwar ein sehr offenes System, aber gewisse Konventionen werden sich in Zukunft als nützlich erweisen, wenn verschiedene Hochschulen Daten und Scripte austauschen wollen. In jedem Fall empfehlen wir Ihnen immer erst dann manuelle Anpassungen, wenn die Anwendung oder das Script funktioniert – eine äußerst sinnvolle Heuristik für die Arbeit mit SuperX.

Übersicht über Installationsschritte

Das Kernmodul wird in drei Arbeitsschritten installiert:

Die folgende Übersicht zeigt das Vorgehen bei der SuperX-Installation, darauf folgt eine Kurzanleitung für die Installationsmaßnahmen:

Schritt

Erläuterung

Kopieren und Vorbereiten des Kernmoduls nach $SUPERX_DIR

Bringen Sie das SuperX-Kernmodul in ein Verzeichnis auf dem Rechner, am besten auf den Applikationsserver.

Kopieren Sie die Datei $SUPERX_DIR/db/bin/SQL_ENV.sam nach $SUPERX_DIR/db/bin/SQL_ENV und passen Sie die Umgebungsvariablen an.

Installation der erforderlichen Software

Start des Datenbankservers

Starten Sie den Datenbankserver und spielen Sie danach die SuperX-Datenbank des Kernmoduls ein; die Zugangsparameter müssen Sie dem SuperX-Servlet bekannt geben.

Start des SuperX-Servlets

Gehen Sie in das Verzeichnis /webserver/tomcat/bin und starten Sie Tomcat, ggf. als Dienst

Test des Applikationsservers

Öffnen Sie die Datei http://-Rechnername-:8080/superx/ im Browser und testen Sie zuerst die Anmeldung

Freigabe des Webservers im Netz

Nun ist die Basisinstallation vom Kernmodul abgeschlossen, und Sie können mit der Anpassung für Ihre Einrichtung beginnen. Richten Sie User ein, und geben Sie die WWW-Adresse Ihres Webservers im Intra- oder Internet (in diesem Fall benötigen Sie auch die die Verschlüsselung) frei.

Einspielen der Module

Füllen Sie SuperX mit den einzelnen Modulen; bisherige SuperX-Anwender können ihr bisheriges System übernehmen.

Besonderheiten für verschiedene Betriebssysteme

Wir empfehlen den Einsatz von SuperX unter Linux. Für andere Betriebssysteme gelten hier und da Besonderheiten.

Ubuntu / Debian

Wenn Sie Ubuntu nutzen, können Sie auch den Tomcat und Postgres von Ubuntu nutzen. Dabei ist aber auf einiges zu achten. Bitte schauen Sie dafür bitte unter den Kapiteln für Übertragung der Webapplikation auf einen vorhandenen Tomcat unter Ubuntu und Postgres unter Ubuntu/Debian nach.

Für Kernmodul 6.0 werden OpenJDK 17 und Tomcat 10 verwendet. Die Installation aus den Paketquellen der Distribution stellt sicher, dass Aktualisierungen über die Paketverwaltung eingespielt werden können.

Pakete Ubuntu generell

Hier zum Kopieren eine Liste von Paketen für Ubuntu 24.04 Server, die für DB- und Applikationsserver benötigt werden:

apt-get  update
apt-get  upgrade  -y
apt-get  install  -y  openssh-server
apt-get  install  -y  git
apt-get  install  -y  recode
apt-get  install  -y  zip
apt-get  install  -y  openjdk-17-jdk
Noch ein Tipp:
Ubuntu deaktiviert standardmäßig die Suche in der Bash-History mit der PAGE-UP/PAGE-DOWN Taste. Sie können das systemweit einschalten in der Datei /etc/inputrc, indem Sie die Kommentarzeichen entfernen:

Wenn Sie sich dann erneut einloggen sind Sie produktiver!

Pakete Ubuntu DB-Server

Aufbauend auf den allgemeinen Ubuntu-Paketen hier eine Liste von Paketen bzw. Konfigurationen für den DB-Server:

apt-get  install  -y  postgresql
apt-get  install  -y  postgresql-contrib
apt-get  install  -y  gettext
apt-get  install  -y  gettext  libreadline8
apt-get  install  -y  gettext  ibreadline-dev
apt-get  install  -y  gettext  zlib1g
apt-get  install  -y  gettext  zlib1g-dev
apt-get  install  -y  gettext  libxml2
apt-get  install  -y  gettext  libxml2-dev
apt-get  install  -y  gettext  libxslt1.1
apt-get  install  -y  gettext  libxslt1-dev
locale-gen  de_DE.UTF-8
update-locale  LANG=de_DE.UTF-8

Pakete Ubuntu Appserver

Aufbauend auf den allgemeinen Ubuntu-Paketen hier eine Liste von Paketen für den Applikationsserver:

apt-get  install  -y  tomcat10
apt-get  install  -y  sendmail
apt-get  install  -y  s-nail
apt-get  install  -y  curl
apt-get  install  -y  mail
apt-get  install  -y  dos2unix
apt-get  install  -y  postgresql-client

Pakete Ubuntu Webserver

Wenn Sie einen separaten Webserver mit Apache betreiben wollen hier die Pakete:

apt-get  install  -y  apache2
apt-get  install  -y  libapache2-mod-jk
apt-get  install  -y  socat

RedHat / CentOS

Bei Red Hat Enterprise Linux, AlmaLinux und vergleichbaren Distributionen unterscheiden sich Paketnamen und Dienstverwaltung von Ubuntu und Debian. Das Apache-Paket trägt dort üblicherweise den Namen httpd.

Kurzanleitung Installation SuperX unter Linux

Die folgende Kurzanleitung gilt für den häufigsten Fall des Betriebs von SuperX unter Ubuntu oder Debian mit PostgreSQL als DBMS und dem Betriebssystembenutzer superx.

Voraussetzungen

PostgreSQL ist gestartet. Der Datenbankbenutzer existiert und darf Datenbanken erzeugen. OpenJDK 17 und Tomcat 10 sind installiert. Die für HTTP und AJP konfigurierten Ports dürfen nicht durch andere Dienste belegt sein.

Entpacken

Entpacken Sie das Kernmodul in dem zukünftigen $WEBAPP Verzeichnis (z.B. /home/superx/webapps/superx)

tar -xzvf kern<>_webapps_superx.tar.gz

Umgebungsvariablen

Gehen Sie in das Verzeichnis $SUPERX_DIR/db/bin (z.B. /home/superx/webapps/superx/WEB-INF/conf/edustore/db/bin)

cd $SUPERX_DIR/db/bin

Kopieren Sie SQL_ENV.sam nach SQL_ENV

cp SQL_ENV.sam SQL_ENV

Passen Sie $SUPERX_DIR, $WEBAPP, $JAVA_HOME, $DATABASE, $SX_CLIENT, $LANG und $MAILPROG an.

Starten Sie das Script mit

. SQL_ENV

und fügen Sie den Aufruf am Ende der Datei ~/.bashrc ein:

. $SUPERX_DIR/db/bin/SQL_ENV

Einspielen der Datenbank

Gehen Sie in das Install-Verzeichnis

cd $SUPERX_DIR/db/install

Starten Sie das Script

kernmodul_erzeugen.x

Bei Fehlern kommt eine Meldung, Protokolle stehen in

create.log

Damit ist die db-Seite eingerichtet.

Steuerungsdatei für das Servlet:

db.properties

Nun gehen Sie in das Verzeichnis

cd $WEBAPP/WEB-INF

Kopieren Sie db-postgres.properties nach db.properties:

cp db-postgres.properties db.properties

Starten Sie den PropAdmin mit

propadmin.x

Passen Sie hier den Servernamen, Datenbanknamen, Usernamen und Passwort an, und drücken Sie "Verbindung testen". Danach speichern Sie die Datei.

Start von Tomcat

Nun wechseln Sie in das Verzeichnis

cd $TOMCAT_HOME/bin

Und starten tomcat mit

startup.sh

(Stop übrigens mit "shutdown.sh".)

Und los geht’s...

Nach erfolgreichem Start rufen Sie im Browser auf: http://localhost:8080/superx/

Dort können Sie die Anwendung aufrufen und die Anmeldung testen. Ändern Sie ein gegebenenfalls noch vorhandenes Initialpasswort unmittelbar nach der Installation.

Feineinstellung

Melden Sie sich in der Anwendung an und gehen Sie im Menü auf "Tabelle suchen", klicken einfach "Abschicken" und öffnen Sie die Tabelle hochschulinfo; dort sollten Sie Ihre Hochschule auswählen und "Speichern" anklicken, damit Ihre Hochschulnummer gespeichert wird.

Installation und Pflege der SuperX-Datenbank

Zunächst muss aber der Datenbankserver eingerichtet werden. Derzeit laufen die Installationsscripte und auch alle Modulscripte nur unter UNIX /Linux.

Einrichten des Datenbankservers unter UNIX / LINUX

Unterstütztes Datenbanksystem ist PostgreSQL. Technische Mindestversion ist PostgreSQL 12. Für Neuinstallationen wird PostgreSQL 16 oder neuer empfohlen.

Zeichencodierung

SuperX wird mit UTF-8 betrieben. Prüfen Sie vor der Installation, ob die Betriebssystem-Locale auf UTF-8 eingestellt ist.

Die auf Ihrem System installierte Codierung erfahren Sie mit dem Befehl

echo  $LANG

Je nach UNIX-System lautet die UTF-8-Locale beispielsweise de_DE.utf8 oder de_DE.UTF-8. Die verfügbaren deutschen Locales können Sie anzeigen mit:

locale  -a  |  grep  de

Mit dem SuperX-Kernmodul werden außerdem Scripte ausgeliefert, mit denen Dateien bei der Migration eines Altsystems von ISO nach UTF-8 konvertiert werden können. Weitere Hinweise finden Sie unter Codierung in ISO und UTF-8.

UTF-8-Locale unter Linux einrichten

Unter Ubuntu und Debian können Sie die deutsche UTF-8-Locale mit folgenden Befehlen bereitstellen:

Tragen Sie dieselbe Locale in der SQL_ENV ein. Falls zusätzlich LC_ALL gesetzt ist, muss auch diese Variable auf eine UTF-8-Locale zeigen. Für die einmalige Migration älterer ISO-Dateien kann das Programm recode benötigt werden. Die zugehörigen Konvertierungsscripte sind unter Codierung in ISO und UTF-8 beschrieben.

User superx - Kernmodul entpacken

Legen Sie einen User superx am einfachsten mit dem home-Verzeichnis /home/superx an.

Das Homeverzeichnis /home/superx dient als mögliches Basisverzeichnis der Installation. $SUPERX_DIR bezeichnet ab Kernmodul 6.0 dagegen den Bereich $WEBAPP/WEB-INF/conf/edustore innerhalb der SuperX-Webanwendung.

Es muss auf Betriebssystemebene sichergestellt werden, dass das Dateisystem Textdateien in der passenden Locale anlegt sind. Bei modernen UNIXen ist die Umgebungsvariable $LANG standardmäßig auf "UTF-8" gesetzt.

Setzen Sie die richtige Locale z.B. mit

LANG=de_DE.utf8;  export  LANG

Entpacken Sie das Kernmodul entsprechend der ausgelieferten Verzeichnisstruktur. Die Datenbankseite befindet sich anschließend unter $WEBAPP/WEB-INF/conf/edustore/db.

Machen Sie eine Kopie der Datei Date $SUPERX_DIR/db/bin/SQL_ENV.sam und nennen Sie sie einfach SQL_ENV. In dieser Datei werden viele allgemeine Konfigurationen der Umgebung vorgenommen. Prüfen Sie, ob die in der SQL_ENV angegebene Locale (LANG=de_DE...) existiert.

Geben Sie der Datei ggf. Ausführungsrechte mit chmod +x SQL_ENV.

PostgreSQL installieren

Installieren Sie PostgreSQL über die Paketverwaltung der verwendeten Linux-Distribution. Dadurch können Sicherheits- und Wartungsaktualisierungen regulär eingespielt werden. Technische Mindestversion für SuperX ist PostgreSQL 12; für Neuinstallationen wird PostgreSQL 16 oder neuer empfohlen.

Unter Ubuntu oder Debian installieren Sie Server, Zusatzmodule und Client beispielsweise mit:

Eine manuelle Kompilierung von PostgreSQL aus dem Quellcode wird in dieser Dokumentation nicht mehr beschrieben.

PostgreSQL-Zusätze installieren: pgcrypto

Das PostgreSQL-Modul pgcrypto wird für kryptografische Funktionen verwendet und ist im Paket postgresql-contrib enthalten. Aktivieren Sie die Erweiterung in der SuperX-Datenbank:

PostgreSQL mit SSL

SSL wird in postgresql.conf aktiviert und der Zugriff in pg_hba.conf gesteuert. Zertifikat und privater Schlüssel müssen für den PostgreSQL-Dienst lesbar sein; der private Schlüssel darf nur für den Eigentümer zugänglich sein. Verwenden Sie für ausschließlich verschlüsselte Verbindungen in pg_hba.conf die Direktive hostssl.

Für psql kann der SSL-Zugriff mit der Umgebungsvariable PGSSLMODE getestet werden:

Die JDBC-Verbindung wird in db.properties entsprechend für SSL konfiguriert. Mit DOQUERY "select * from xdummy" kann der Zugriff anschließend getestet werden.

PostgreSQL unter Ubuntu oder Debian

Wenn der Datenbankserver auf einem anderen Rechner betrieben wird, genügt auf dem Applikationsserver das Clientpaket:

Für einen Datenbankserver installieren Sie zusätzlich Server und Zusatzmodule:

Die versionsbezogene Konfiguration liegt beispielsweise für PostgreSQL 16 unter /etc/postgresql/16/main. Starten, stoppen und laden Sie den Dienst mit systemctl:

Vorhandene Cluster und deren Ports zeigt folgender Befehl:

Installation testen

Prüfen Sie, ob der PostgreSQL-Dienst läuft und die Datenbanken UTF-8 verwenden:

Legen Sie den Datenbankbenutzer für SuperX mit den tatsächlich benötigten Rechten an. Der Benutzer der Webanwendung sollte aus Sicherheitsgründen kein PostgreSQL-Superuser sein.

PostgreSQL unter weiteren Linux-Distributionen

Installieren Sie PostgreSQL unter Red Hat Enterprise Linux, AlmaLinux, SUSE Linux Enterprise Server und vergleichbaren Distributionen aus den jeweiligen Paketquellen. Paketnamen, Konfigurationspfade und Dienstnamen können abweichen. Verwenden Sie eine unterstützte PostgreSQL-Version, eine UTF-8-Locale und die Dienstverwaltung der jeweiligen Distribution.

PostgreSQL-Performance

Wichtige Parameter wie shared_buffers, effective_cache_size, work_mem und max_connections werden in postgresql.conf an die verfügbare Hardware und die Zahl paralleler Verbindungen angepasst. Verwenden Sie als Ausgangspunkt die Vorgaben der installierten PostgreSQL-Version und kontrollieren Sie die tatsächliche Auslastung. Führen Sie VACUUM und ANALYZE nicht über veraltete eigene Wartungsroutinen aus, wenn Autovacuum ordnungsgemäß konfiguriert ist.

Postgres-Nutzerkennungen mit Leserecht

Falls Sie für Testzwecke z.B. einen User "alex" anlegen wollen, der alle Tabellen einer DB lesen kann, geht dies mit Postgres so:

Zunächst müssen Sie in der pg_hba.conf sicherstellen, dass Passwort-Anmeldung über IP4 möglich ist:

#  TYPE  DATABASE              USER                      ADDRESS                                METHOD
host      all                        all                        -IP-Nummernkreis-        md5

Dann starten Sie Postgres neu oder führen einen RELOAD aus, z.B. unter Linux:

/etc/init.d/postgresql  reload

Dann gehen Sie als Superuser auf den DB-Server, und führen Sie in der Ziel-Datenbank folgende SQLs aus:

CREATE  USER  alex  WITH  NOSUPERUSER  PASSWORD  'password';
GRANT  USAGE  ON  SCHEMA  public  TO  alex;
GRANT  SELECT  ON  ALL  TABLES  IN  SCHEMA  public  TO  alex;
ALTER  DEFAULT  PRIVILEGES  IN  SCHEMA  public  GRANT  SELECT  ON  TABLES  TO  alex;

Der letzte Befehl sorgt dafür, dass auch neue Tabellen Berechtigung erhalten.

Wenn Sie das Passwort später ändern wollen schreiben Sie

alter  USER  alex  WITH  PASSWORD  'anfang12';

Einspielen des Kernmoduls der SuperX-Datenbank

Für die Installation haben wir unten eine Kurzanleitung vorbereitet. Das Kernmodul der Datenbank liegt exportiert vor und kann in das DBMS übernommen werden. Die nachfolgenden Installationschritte gehen davon aus, daß Sie keinen speziellen DBSpace für SuperX vorgesehen haben.

Das Installationsscript für die Datenbank befindet sich im Verzeichnis

$SUPERX_DIR/db/install/kernmodul_erzeugen.x  -ggf.  mit  Name  des  DBSpace-

Das Script läuft nur, wenn die Parameter in der Datei $SUPERX_DIR/db/bin/SQL_ENV stimmen. Bei erfolgreichem Ablauf kommt eine Erfolgmeldung, im Falle eines Fehlers wird die Fehler-Logdatei create.log angezeigt. Wenn ein Fehler auftritt, müssen sie die Datenbank vor einem erneuten Ablauf des Scriptes droppen.

Danach können Sie mit psql superx (unter Postgres) testen, ob die Datenbank verfügbar ist.

Schließlich sollten Sie die Tabelle hochschulinfo anpassen und die Daten Ihrer Hochschule dort eingeben, insbesondere die Hochschulnummer (apnr-Wert in cifx mit key=36).

Update und Sichern der Datenbank

Vor dem Start der Update-Scripte sollte immer eine Sicherung der Datenbank erfolgen. Für Backups ist es notwendig, die Datenbank regelmäßig zu exportieren. Beide Datenbanken bieten entsprechende Werkzeuge.Es bietet sich an, einen cronjob einzurichten, der zuerst das Backup vornimmt, und dann die einzelnen Module nacheinander aktualisiert.

Ein Beispiel-Eintrag der crontab des users superx liegt in $SUPERX_DIR/db/module/crontab.sam. Ein Beispiel-Update-Script liegt in $SUPERX_DIR/db/module/update.x.sam . Der Eintrag in der crontab, der das Script werktags um 18:00 Uhr startet, sähe dann wie folgt aus:

#  Täglicher  SuperX-Update  um  18  Uhr
#
00  18  *  *  1-5  /home/superx/webserver/tomcat/webapps/superx/WEB-INF/conf/edustore/db/module/update.x  >/home/superx/webserver/tomcat/webapps/superx/WEB-INF/conf/edustore/db/module/update.log  2>&1

Ein Beispielinhalt für das Script update.x ist Teil des Kernmoduls: update.x

Ein Beispielscript, das die Datenbank sichert, liegt in $SUPERX_DIR/db/install/dump_it.x. Es erzeugt den Dump im Verzeichnis $SUPERX_DIR/db/install, prüft die erfolgreiche Sicherung und verschickt ggf. eine Fehler-Mail. Wenn Sie das Script in einem Cronjob betreiben wollen, müssen Sie als ersten Parameter $SUPERX_DIR übergeben.

Die Rücksicherung einer Datenbank ist mit dem Script $SUPERX_DIR/db/install/restore_it.x möglich.

Ein Dump unter Postgres

Postgres lässt sich auch im laufenden Betrieb sichern.

pg_dump  -f  superx.sql  superx

Noch kompakter ist der Dump als Binärfile mit dem Parameter --format=c:

pg_dump  -f  $DBNAME.sql  --format=c  $DBNAME

Sie können den Dump mit dem Parameter "--inserts" versehen, dies vergrößert den Dump beträchtlich. Dies ist eine sehr vorsichtige Einstellung, aber der Dump ist dadurch maximal kompatibel zu verschiedenen Postgres-Versionen, außerdem tauchen keine Probleme mit Umbrüchen in langen Textfeldern auf.

Wenn Ihnen die resultierenden Dumps zu groß sind, können Sie in einem eigenen Dump auf die Inserts verzichten (s.o.).

Anpassen der Datenbankparameter db.properties

Wenn Sie die Verfügbarkeit des Datenbankservers getestet haben, dann müssen die Datenbankparameter in die Datei

$WEBAPP/WEB-INF/db.properties

übertragen werden, damit das Servlet eine Verbindung zur Datenbank herstellen kann. Die Musterdatei db-postgres.properties ist im Kernmodul enthalten und wird nach db.properties kopiert. Verwenden Sie für den Datenbankzugriff ein individuelles Passwort.

Zur Erstellung und ggfs. Änderung dieser Datei gibt es ein Tool:

propadmin.x

Das Shellscript liest aus der Umgebungsvariable $DB_PROPERTIES (oder über den ersten Parameter) den Speicherort der db.properties ein; in der Regel muss das die obige Position sein, damit das Servlet die Datei findet. Ausnahmen gibt es nur, wenn SuperX über den jdbc-Client auf eine andere Datenbank zugreifen soll.

Füllen Sie die Felder entsprechend des folgenden Beispiels (Postgres):

655x453px

Hinweis für Postgres: Wenn Sie Postgres auf einem anderen Port als dem voreingestellten 5432 betreiben, müssen Sie im jdbc-Treiber als Connection-URL den Port wie folgt angeben:

connectionURL=jdbc:postgresql://localhost:-Portnumer-/superx

Durch Anklicken von OK wird die Datei db.properties (bzw. der Pfad zum Inhalt der Umgebungsvariable DB_PROPERTIES) erstellt, wobei das Passwort verschlüsselt wird. Vorher sollten Sie mit "Verbindung Testen" prüfen, ob eine Datenbankverbindung hergestellt werden kann. Wenn dies nicht klappt, sollten die Fehlermeldungen weiterhelfen.

Wenn Sie einen UNIX / LINUX-Server für Tomcat betreiben wollen, dann ist es möglich, daß Sie unter Linux keine graphische Java-Umgebung starten können. In diesem Fall müssen Sie das Kernmodul auf einem Rechner mit installiertem Java und graphischer Umgebung kopieren, das Programm dort aus der Konsole starten und die Parameter ändern (wichtig: der Rechner muss die gleiche Zeichenkodierung haben, also UTF-8). Danach kopieren sie die Datei db.properties mit scp / WinSCP auf den UNIX-Rechner. Alternativ können Sie die Parameter mit dem vi bearbeiten. Wenn der Propadmin ohne graphische Umgebung gestartet wird, kann lediglich das Passwort eingegeben werden.

Wenn Sie Tomcat auf einem anderen Rechner als dem Datenbankserver betreiben, müssen Sie die Startdateien propadmin.bat bzw. propadmin.x im Verzeichnis

$WEBAPP/WEB-INF

benutzen (in diesem Falle ist das Verzeichnis $SUPERX_DIR/db nicht notwendig.)

Installation und Pflege des Applikationsserver

Die folgenden Anleitungen gehen davon aus, dass Sie als Installationspfade für den Applikationsserver C:\superx\webserver (unter win32) und /home/superx/webserver (unter UNIX / LINUX) gewählt haben. Sie können natürlich auch andere Pfade wählen, müssen dann aber die Pfade in dieser Dokumentation entsprechend umsetzen. Fehlende oder falsche Pfade bzw. Umgebungsvariablen sind in Java- und Datenbankprojekten eine wichtige Fehlerquelle (z.B. unter LINUX die Groß- / Kleinschreibung).

Installation von Java

Für Kernmodul 6.0 wird OpenJDK 17 als Referenzversion verwendet. Unter Ubuntu 24.04 und Debian installieren Sie das JDK aus der Paketverwaltung:

Die für SuperX benötigten Java-Optionen werden zentral unter Die Umgebungssteuerung SQL_ENV dokumentiert.

Einrichtung der Servlet-Engine

Die Servlet-Engine ermöglicht dem Applikationsserver das SuperX-Servlet auszuführen. Anders als andere Scriptsprachen (z.B. asp, PHP, Perl) für Webserver ist der Java-Code als Bytecode kompiliert; die Servlets werden normalerweise also nicht auf dem Webserver entwickelt und getestet, sondern auf einem eigenen Entwicklungsrechner.

Unsere Referenz für Servlet-Engines ist Tomcat. Kernmodul 6.0 benötigt Tomcat 10. Tomcat 8 und Tomcat 9 werden dafür nicht mehr unterstützt.

Installieren Sie Tomcat möglichst aus der jeweiligen Linux-Distribution, damit Sicherheitsaktualisierungen über die Paketverwaltung eingespielt werden können. Alternativ kann eine aktuelle Tomcat-10-Distribution direkt vom Hersteller verwendet werden.

Sie können Tomcat auch direkt vom Hersteller herunterladen.

Die Installation von Tomcat für SuperX wird auf einer eigenen Website beschrieben. Die weitere Konfiguration ist im Folgenden beschrieben.

Steuerung des Servers: Die server.xml

Editieren Sie zunächst die Konfigurationsdatei:

$TOMCAT_HOME/conf/server.xml

Hier werden die Ports und Anbindungen der Tomcat-Installation angepasst. Häufig wird der HTTP-Connector auf Port 8080 und die Apache-Anbindung über AJP auf Port 8009 betrieben. Der Shutdown-Port ergibt sich aus dem port-Attribut des Server-Elements und kann bei aktuellen Installationen mit port="-1" deaktiviert sein.

Wichtig beim Betrieb des Tomcat mit UTF-8-Codierung: Der jew. Connector muss das weitere Attribut URIEncoding="UTF-8" aufführen. Wenn z.B. der Connector 8080 genutzt wird, sieht das so aus:

Dies ist wichtig für den Ajax-Client.

Nach einer Änderung müssen Sie Tomcat neu starten.

Wenn Sie mod_jk nutzen, müssen der AJP-Connector in server.xml und der zugehörige Worker in workers.properties zusammenpassen. Bei Apache und Tomcat auf demselben Server sollte der Connector nur an eine Loopback-Adresse gebunden werden. Das folgende Beispiel verwendet IPv4:

In workers.properties müssen worker.host, worker.port und das Secret dieselben Werte verwenden. Bei einer Änderung an server.xml ist Tomcat neu zu starten. Nach einer Änderung an workers.properties muss zunächst die Apache-Konfiguration geprüft und anschließend Apache neu geladen oder neu gestartet werden.

Weitere Details siehe Tomcat-Leitfaden.

Datenbankverbindung für DBFORMS

Die Datenbankverbindung für DBFORMS wird in der Datei $WEBAPP/WEB-INF/dbforms-config.xml definiert. Für Kernmodul 6.0 muss die Datei folgende Definition enthalten:

Nach einer Änderung muss Tomcat neu gestartet werden.

Die Datei conf/web.xml

In der Datei $TOMCAT_HOME/conf/web.xml sie u.a. die serverweite "Welcome-Page" bzw. deren Reihenfolge., welche wiederum Dateien anzeigen, wenn der Anwender ein Verzeichnis ohne Dateinamen aufruft, z.B. http://servername/superx/:

Wenn Sie z.B. die Reihenfolge so ändern, dass zuerst die Datei index.jsp angezeigt wird (sofern sie existiert), dann können Sie eigene "Homepages" definieren, die nicht von der SuperX-Distribution (z.B. bei Updates) überschrieben würden. Außerdem ist dies eine sinnvolle Sicherheitsmassnahme, weil so keine Directory Listings angezeigt werden.

Änderungen in der Datei web.xml in der Webanwendung ( -Webanwendung-/WEB-INF/web.xml) überschreiben die Einträge in der serverweiten web.xml.

Weitere Konfigurationsmöglichkeiten (Server Side Includes etc). sind in dieser Datei dokumentiert.

Vergleiche auch den unten folgenden Abschnitt zur Einrichtung der SuperX-Servlets unter Tomcat.

Administrator und Manager

In der Tomcat Auslieferung gibt es Beispiel-Webanwendungen, bitte löschen Sie diese.

Einrichten der SuperX-Servlets unter Tomcat
Allgemeines zur web.xml

Die Datei $WEBAPP/WEB-INF/web.xml enthält die Konfiguration der Webanwendung, z.B. maximale Zeilenanzahl bei Berichten. Diese Datei wird initial ausgeliefert, bei Upgrades des Kernmoduls aber nicht automatisch überschrieben. Im Zweifelsfall stellen Sie die Auslieferungsdatei wieder her, es Muster dafür befindet sich in der Datei $WEBAPP/WEB-INF/web.xml.superxonly.

Eine Änderung in der web.xml macht einen Tomcat-Neustart erforderlich. Achten Sie auf eine wohlgeformte XML-Notation. Wenn die Datei nicht wohlgeformt ist, kann die Webanwendung nicht gestartet werden. Verwenden Sie im Zweifelsfall die mit Kernmodul 6.0 ausgelieferte Datei web.xml.superxonly als Grundlage und übernehmen Sie anschließend nur die benötigten lokalen Anpassungen.

Für SuperX-Standalone-Betrieb (also unabhängig von HisInOne) ist ab Kernmodul 5.0 der context-Parameter zentral

Anpassen der Datei db.properties mit den Datenbank-Zugangsdaten (siehe oben Anpassen der Datenbankparameter für das SuperX-Servlet) ist Voraussetzungen dafür, dass der Applikationsserver auf die Datenbank zugreifen kann.

SuperXManager Servlet

In der web.xml werden im SuperXManager Servlet einige wichtige Konfigurationen vorgenommen. Zentrales Servlet ist der SuperXManager, für den ein Eintrag benötigt wird.

Im folgenden werden einige Parameter beschrieben:

ResponseCompression

Default für Response Compression ist true, dann braucht der init-param auch nicht angegeben zu werden. Die RTWH Aachen nutzt allerdings einen ReverseProxy der mit der gzip-Kompression nicht klar kam, in diesem Fall kann man durch setzen des ResponseCompression-Initparams mit param-value=false die Kompression ausschalten.

field1Cache

Der field1Cache kann Inhalte von Auswahllisten der Feldart 1 zwischenspeichern.

Wenn ein entsprechender init-param beim SuperXManager definiert ist, lädt sich der webserver beim Start Inhalte für die angegeben Felder der Feldart 1 (aus felderinfo), in denen es keine dynamischen Tags gibt (wie z.B. <

Als Param-value muss eine where-Bedingung für einen select auf die Tabelle felderinfo angegeben werden. Sie können das Beispiel tid>10000 belassen oder bei Bedarf bestimmte Felder auslassen, z.B.

tid  >  10000  and  name  not  in  ('Haushaltsjahr','Semester').

Der Cache wird aktualisiert, wenn im SuperXManager-Servlet auf den Button “Server-Cache aktualisieren” geklickt wird oder der Webserver neu gestartet wird. Außerdem wird er jeden Morgen einmal automatisch aktualisiert. Felder die sich zusätzlich zu den nächtlichen Updates dynamisch ändern, sollten ausgeschlossen werden, damit sie immer aktuell aus der Datenbank geholt werden.

Session-Timeout

Ein weiterer Parameter für die gesamte Webapplikation, der aber nur im XML-Frontend ausgewertet wird, lautet (siehe Beispiel-web.xml in unserem Kernmodul, ganz am Ende der webapp-Deklaration). Dieser Wert beschreibt die "Lebenszeit" einer Anmeldung bei Inaktivität des Benutzers (in Minuten). Ein negativer Wert bedeutet, dass die Session nie beendet wird. Ein sinnvoller Wert ist z.B. 180 (3 Stunden). Je länger die Zeit, desto höher die Belastung des Servers.

CSV-Encoding beim Export

Der CSV-Export von Masken verwendet standardmäßig UTF-8. Eine abweichende Codierung sollte nur für ausdrücklich benötigte Altschnittstellen konfiguriert werden. Nach einer Änderung an der web.xml müssen Sie Tomcat neu starten.

Fehlerseiten

Sie können auch durch spezielle Fehlerseiten die normale Fehlerausgabe des SuperX-Servlets sperren.

Fügen Sie an das Ende der web.xml vor dem End-Tag "" z.B. folgende Elemente ein

...

500 /error.htm

Die ist die Voreinstellung bei Neuinstallation von SuperX, ältere Installationen müssen dies ggf. nachholen.

Sie können auf verschiedene Fehler-Codes sowie Exception-Types eigene Fehlerseiten definieren. Details dazu finden Sie in der Dokumentation Ihres Applikationsservers.

Start des Tomcat

Vor dem Start müssen die Umgebungsvariablen der Datei $SUPERX_DIR/db/bin/SQL_ENV geladen werden.

Die Umgebungsvariable JAVA_HOME muss korrekt gesetzt sein

Das Terminal-Fenster zeigt den Port an, auf dem Tomcat läuft, z.B. 8080; um die Engine zu testen, kann man einen Webbrowser (zur Not auch lynx) starten und die Seite http://localhost:8080/... aufrufen.

Beendet wird Tomcat mit dem Befehl: shutdown.bat für MS-DOS bzw. shutdown.sh für UNIX.

Die Übertragung der Web Application

Wenn Sie die SuperX-Webapplikation auf einem vorhandenen Tomcat installieren wollen, folgen Sie dem Leitfaden auf der Seite

http://www.superx-projekt.de/doku/kern_modul/tomcat/f_TomcatausLinuxDistributionen.htm

LDAP Anbindung

Es ist möglich, die Authentifizierung von Usern über eine LDAP-Datenbank laufen zu lassen.

Die User müssen aber auf jeden Fall in SuperX auch existieren und entsprechende Gruppenzugehörigkeiten und Rechteeinstellungen haben (Tabellen userinfo, groupinfo, user_group_bez, user_masken_bez,group_masken_bez,user_sachgeb_bez,group_sachgeb_bez, user_sichten etc).

Zertifikat einspielen

Falls Sie ein eigenes Zertifikat für die Verschlüsselung Ihres LDAP-Servers einsetzen, muss dies importiert werden in die Java Runtime.

Danach müssen Sie das Zertifikat auch der JVM bekannt machen, die Tomcat startet. Ergänzen Sie die zentral unter Die Umgebungssteuerung SQL_ENV dokumentierten Java-Optionen um folgenden installationsspezifischen Parameter:

-Djavax.net.ssl.trustStore=<

also z.B.

-Djavax.net.ssl.trustStore=/usr/local/tomcat/conf/cacerts

Anpassen der superx_ldap.properties

Kopieren Sie die Datei superx/WEB-INF/superx_standalone_ldap.properties.sam nach superx_standalone_ldap.properties und bearbeiten Sie diese – wenn SuperX beim Serverstart diese Datei findet, wird eine neue SuperX-interne LDAP-Passwortkontrolle aktiviert.

Sie finden auch in der catalina.out einen Hinweis „Passwortkontrolle via LDAP wird aktiviert“. Die Passwortkontrolle erfolgt über die SuperX-interne LDAP-Anbindung.

In der sam-Datei ist eine Verbindung zu einem öffentlichen LDAP-Testserver vorkonfiguriert. Dort gibt es einen User „einstein“ mit Passwort „password. Wenn Sie in SuperX einen User „einstein“ anlegen und ein anderes Passwort wie „albert“, können Sie sich nach einer Aktivierung von LDAP mit „einstein“ und „password“ anmelden.

#  SuperX  LDAP  Konfiguration  für  Passwortkontrolle
#Falls  SuperX  standalone  betrieben  wird,  können  hier  LDAP  Parameter  hinterlegt  werden
#  Beispielparameter  verwenden
#      https://www.forumsys.com/tutorials/integration-how-to/ldap/online-ldap-test-server/
#  Beispieluser  auf  diesem  System  einstein  Passwort=password
#  Wenn  Sie  in  Superx  einen  User  mit  Kennung  einstein  anlegen,  können  Sie  die  Anmeldung  via  LDAP  #  testen
LdapUrl=ldap://ldap.forumsys.com:389
#
#Base  Definition  für  die  LDAP  Suche,  kann  ggfs.  um  Gruppen  erweitert  werden,  wie
#  ou=superx_user,dc=example,dc=com
LdapBase=dc=example,dc=com
#
#Falls  für  den  LDAP  Zugriff  ein  ServiceUser  (mit  eigenem  Passwort)  benötigt  wird,  kann  dies  hier  angegeben  werden
#LdapServiceUserDN=cn=read-only-admin,dc=example,dc=com
#LdapServiceUserPassword=password
#
#  Identifiying  Attribute  mit  dem  ein  User  mittels  seiner  Kennung  gefunden  wird  (z.B.  uid)
#  z.B.  bei  Suchstring  uid={0}  einfach  nur  uid
LdapIdentifyingAttribute=uid

Optional können Sie bei Bedarf zusätzlich einen komplexeren Searchfilter definieren,z.B.

LdapSearchFilter=(&(uid=${0})(status=aktiv))

Passwortänderung: Falls ein Benutzer in SuperX dazu aufgefordert wird sein Passwort zu ändern, muss die Konstante „Passwortgültigkeit (Tage)“ angepasst werden. Diese Konstante dazu einfach auf einen möglichst hohen Wert setzen wie z.B. „1000000“. Danach noch die Tabelle user_pw leeren (alle Datensätze löschen).

Trotz LDAP lokalen Login aktivieren

Wenn für einen Testbenutzer oder durch andere Gegebenheiten für einen Benutzer keine LDAP Kennzung zur Verfügung steht, kann ab Kernmodul 5.2 für die index.jsp der Parameter login=superx angegeben werden. Als Beispiel:

.../superx/index.jsp?login=superx

Damit wird dann für die verwendete Kennung das Passwort aus der userinfo von SuperX geprüft.

Shibboleth Anbindung

Es ist möglich, die Authentifizierung der Benutzer über ein Shibboleth Single Sign-On (SSO) durchzuführen. In diesem Fall erfolgt der eigentliche Login über das Shibboleth-System, während SuperX weiterhin für die Verwaltung der Benutzerrechte zuständig ist.

Voraussetzungen

Auch bei Verwendung von Shibboleth müssen die Benutzer in SuperX vorhanden sein. Die Rechteverwaltung erfolgt weiterhin innerhalb von SuperX.

Benutzerkennung

Nach erfolgreicher Anmeldung über Shibboleth wird die Benutzerkennung an SuperX übergeben.

SuperX verwendet diese Kennung, um den entsprechenden Benutzer zu identifizieren und automatisch anzumelden.

Wichtig dabei ist:

Die Benutzerkennung muss in SuperX exakt so benannt sein wie die vom Shibboleth-System übergebene Kennung.

Nur wenn die Kennung übereinstimmt, kann SuperX den Benutzer korrekt zuordnen.

Logout

Beim Einsatz von Shibboleth reicht der normale Logout innerhalb von SuperX nicht aus, da zusätzlich die Session des Shibboleth Service Providers beendet werden muss.

Dazu wird ein spezieller Logout-Link verwendet:

https://</Shibboleth.sso/Logout?return=https%3A%2F%2F<>%2Flogged-out

Dieser Link beendet die Shibboleth-Session und leitet anschließend auf eine definierte Seite weiter.

Einbindung in das SuperX-Template

Damit der Logout korrekt funktioniert, muss das entsprechende Template in die Datei

pageComponents_html_final.xs

kopiert werden.

Beim Logout-Link (href) wird dort die oben genannte Shibboleth-Logout-URL eingetragen.

Integration von Tomcat mit dem Apache

Die Servlet-Engine Tomcat verfügt zwar über einen kleinen "eingebauten" Webserver, doch für den Echtbetrieb sollte man aus Performance-Gründen einen der marktgängigen Webserver nutzen (z.B. Apache, IIS), der auch Verschlüsselung bietet. Für den Echtbetrieb empfehlen wird die Installation eines Apache, meist ist dieser in der Linux-Distribution bereits integriert. Der Apache läßt sich sehr gut mit dem Tomcat verbinden . Weitere Details siehe unser Tomcat-Leitfaden.

Umgang mit SSL Verschlüsselung

An mehreren Stellen können Sie mit SSL Verschlüsselung in Berührung kommen:

  • Beim Datenbankzugriff mit SSL
  • Beim Verschlüsseln im Webserver
  • Beim Zugang zu einem SSL-verschlüsselnden LDAP Server

Im folgenden eine Anleitung zum Erzeugen und Bereitstellen von Zertifikaten.

Erzeugen eines SSL Zertifikats

Auf dem Rechner, der verschlüsseln soll, muss das Paket Openssl installiert sein. Ist dies der Fall, kann man als User root ein Zertifikat erzeugen.

Wir führen alle Schritte als user root durch, und gehen z.B. davon aus, dass wir uns im Verzeichnis /root befinden.

Zunächst muss ein Zertifikat erzeugt werden:

openssl  req  -new  -nodes  -newkey  rsa:2048  -keyout  mydomain.key  -out  mydomain.csr

Sie die jeweiligen Angaben (Land, Organisation etc.). Beim "Common Name" muss der DNS-Servername des Servers angegeben werden. Ein Challenge Passwort ist erst einmal nicht notwendig. Der private Schlüssel ist nicht geschützt, sonst müßten Sie den bei der Nutzung (z.B. Apache Start) manuell eintippen.

Der private Schlüssel liegt in /root/mydomain.key

Der öffentliche Schlüssel hat das RSA Format. In Java Runtimes und im Browser wird ggf. nur ein X.509 Zeirtifikat erlaubt. Dazu müssen Sie das öffentliche Zertifikat zuerst in das entsprechende DER-Format konvertieren:

openssl  x509  -in  mydomain.key  -out  capub.crt  -outform  DER

Es wird die Datei /root/capub.crt erzeugt.

Alternatives Vorgehen unter Ubuntu mit Ziel Zertifikat für Postgres:

openssl  req  -x509  -newkey  rsa:4096  -keyout  key.pem  -out  cert.pem  -days  365

Eine passphrase ist nicht hilfreich, wenn Server automatisch neu gebootet werden können soll.

So kann man eine Entfernen:

openssl  rsa  -in  [file1.key]  -out  [file2.key]

https://knowledge.digicert.com/solution/SO5292.html

Erzeugen eines Zertifikat-Request für eine Zertifizierungsstelle

Sie können ein neues Zertifikat erstellen und direkt einen Request für eine Zertifizierungsstelle erzeugen. Der Schlüssel sollte mind. 2048 bit haben. Das geht mit dem Befehl:

openssl  req  -new  -nodes  -newkey  rsa:2048  -keyout  mydomain.key  -out  mein_request.csr

Es wird ein Request in die Datei ./mein_request.csr geschrieben.

Letzteren übergeben Sie an die Zertifizierungsstelle. Achten Sie dabei darauf, dass die Angabe bei "Common Name" exakt dem Domainnamen entspricht. Wie uopenssl req -new -nodes -newkey rsa:2048 -keyout mydomain.key -out mein_request.csrnd in welchem Format Sie die Anfrage an die von Ihnen ausgewählte Zertifizierungsstelle senden müssen, erfahren Sie von der entsprechenden Zertifizierungsstelle.

Importieren des Zertifikats in Java

Wenn Client Programme wie z.B. Java auf einen SSL verschlüsselten Server zugreifen, der über ein selbst signiertes Zertifikat verfügt, dann muss man das Zertifikat in den TrustStore von Java bzw. Tomcat importieren.

Es gibt einen systemweiten Truststore , wenn Sie das systemweiten TrustStore von Java verwenden, liegt dies in $JAVA_HOME/jre/lib/security/cacerts. Dann würde der Befehl lauten:

sudo  keytool  -import  -alias  myssl  -file  /root/capub.crt  -keystore  $JAVA_HOME/jre/lib/security/cacerts

Ggf. müssen Sie hier das Passwort des keystore eingeben (Standard wenn nicht verändert: changeit) . Danach kommt die Sicherheitsabfrage

Diesem  Zertifikat  vertrauen?  [Nein]:  Ja
Zertifikat  wurde  zu  Keystore  hinzugefügt.

Wenn Sie für Tomcat einen speziellen Truststore definieren, z.B. durch den Tomcat Start Parameter

-Djavax.net.ssl.trustStore=/usr/local/tomcat/conf/cacerts

dann müssen Sie den Zielpfad für den Import entsprechend anpassen:

sudo  keytool  -import  -alias  myssl  -file  /root/capub.crt  -keystore  /usr/local/tomcat/conf/cacerts

In der HISinOne-BI kann der TrustStore in der globalen Konfiguration im Parameter KEYSTORE=... gesetzt werden. Das Vorgehen wäre hier analog.

Achtung: Wenn Sie eine eigene Datei als keystore nutzen wollen, gibt es in manchen Tomcat/Java Konstellationen Probleme, z.B. bei Tomcat 7.0.22 und jdk1.7.0_51. Verwenden Sie in diesem Falle besser den Default ($JAVA_HOME/jre/lib/security/cacerts ).

Falls Sie das Zertifikat des Ziel-Servers nicht zur Hand haben, können Sie es auch direkt herunterladen. Gehen Sie im Browser auf die entsprechende URL und klicken Sie vor der URL auf das Schlüsselsymbol. Dort gehen Sie auf "Zertifikat anzeigen" -> Details. Je nach Browser/Version heißen die Menüpunkte unterscheidlich. Bei der Detailansicht des Zertifikats gibt es einen "Exportieren" Button. Hier ein Beispiel für Firefox:

680x314px

Die Zieldatei bekommt eine Endung "*.crt". Alternativ geht auch die Linux Kommandozeile:

openssl  s_client  -connect  meinserver.de:443  -servername  meinserver.de:443  <  /dev/null  |  sed  -ne  '/-BEGIN  CERTIFICATE-/,/-END  CERTIFICATE-/p'  <  /dev/null  |  sed  -ne  '/-BEGIN  CERTIFICATE-/,/-END  CERTIFICATE-/p'  >

Falls Das Zertifikat in x509 format benötigt wird, bitte folgenden Befehl verwenden:

openssl  x509  -in  <(openssl  s_client  -connect  ads.hs-karlsruhe.de:636  -prexit  2<(openssl  s_client  -connect  ads.hs-karlsruhe.de:636  -prexit  2>

Danach können Sie das Zertifikat importieren mit

$JAVA_HOME/bin/keytool  -importcert  -alias  myssl  -keystore  $JAVA_HOME/jre/lib/security/cacerts  -trustcacerts  -file  ./my-ca.crt

Der Befehl keytool ist recht flexibel, man kann damit auch Zertifikate anschauen (-list) oder löschen (-delete). Details liefert die Ausgabe von keytool -help.

Mailversand

Zum Mailversand von Logmails installieren Sie ein UNIX Mailprogramm. Unter Ubuntu Linux ist dies z.B. s-nail, das ein Binary namens "s-nail" bereitstellt:

apt-get  install  -y  s-nail

Standardmäßig sucht s-nail den SMTP Server auf localhost, typischerweise muss ein externer Mailserver angebunden werden. Dazu legen sie im Homeverzeichnis des Benutzers eine Datei ".mailrc" an. Der Inhalt z.B.

set  smtp="smtp://smtp.meinmailserver.de:587"
set  from="superx@localhost"
set  smtp-auth=login
set  smtp-auth-user="meinemailkennung"
set  smtp-auth-password=meinpasswort

Hinweis: es gibt auch andere Mailclients wie mutt oder mailx, wir haben s-nail gewählt weil die Syntax der obigen .mailrc-Datei und z.B. bzgl. den Anfügens von Attachments (z.B. für Logdateien) nach dem klassischen "mailx" orientiert ist. Letzteres wird nicht mehr weiterentwickelt.

Sie können den Mailversand dann testen z.B. mit

echo  test  |  s-nail  -s  Testbetreff  supervisor@meinmailserver.de

Sie können auch Mailverteiler einrichten, mit dem Befehl alias:

alias  sxadmin  supervisor1@meinmailserver.de  supervisor2@meinmailserver.de

Sie können den Alias als Adressaten verwenden, z.B. mit

echo  test  |  s-nail  -s  Testbetreff  sxadmin

Test- und Produktivsystem synchronisieren

An einigen Hochschulen gibt es ein Testsystem in dem Entwicklungen getestet werden und ein Produktivsystem in dem die stabilen Entwicklungen dann übertragen werden. Die Schwierigkeit bestand bisher, beide Systeme auf einen vergleichbaren Stand zu halten, damit das Testsystem auch einem reellen Test widerspiegelt. Außerdem gab es keine einfache Möglichkeit größere Änderungen vom Testsystem ins Produktivsystem zu übertragen. Um diese Möglichkeit zu erhalten gibt nun wie in allen anderen Modulen auch im Kernmodul eine Hauptladeroutine mit unload- und update-Funktion.

Über die Bordmittel der Laderoutinen (Unload / Copy / Upload) können also Konfigurationen übertragen werden.

Details zu den Laderoutinen jeweils für

Im Kontext der Säulenübertragung in HISinOne kann neben der Copy-Funktion auch SVN / Git genutzt werden, Sie müssen dazu nur die Dateien

webapps/superx/WEB-INF/conf/edustore/db/install/rohdaten/unl/*.unl

aus dem SVN-Ignore /GIT-Ignore entfernen, auf dem Entwicklungssystem committen und auf der Zielsäule updaten.

Entladeparameter

Über die Entladeparameter können Sie steuern, welche Daten übertragen werden sollen. Hier gibt es default-Werte, die Sie in der KERN_ENV selber anpassen können. Falls Sie keine angaben dazu in der KERN_ENV machen, werden die default-Werte verwendet.

UNLOAD_USERRIGHTS

Hier handelt es sich um die Benutzerrechte aus dem Kernmodul. Es werden also die Benutzer, Gruppen, Sichtenrechte... übertragen. Spezielle Rechte wie die Kameralen Rechte des FIN Moduls sind hier nicht mit inbegriffen.

UNLOAD_FIN_USER_KAM

Hierbei handelt es sich nur im die Kamerale Rechte des FIN Moduls.

UNLOAD_KONSTANTEN

Hierbei handelt es sich um die Konstanten.

UNLOAD_UNLOAD_PARAMS

Hierbei handelt es sich um die Entladeparameter.

UNLOAD_REPOSITORY

Hierbei handelt es sich um die Repository Variablen

UNLOAD_HOCHSCHULINFO

Hierbei handelt es sich um die Tabelle Hochschulinfo mit Informationen wie Name, Anschrift... der Hochschule.

UNLOAD_THEMENBAUM

Hierbei handelt es sich um die Menüstruktur des Informationssystems.

UNLOAD_MASKEN

Hierbei handelt es sich um alle Berichte.

UNLOAD_STYLESHEETS

Hierbei handelt es sich um die Styles der Breichte. Achtung: Es werden nur die Datenbankeinträge übertragen keine Dateien aus dem Dateisystem. Die Stylesheets müssen daher extra kopiert werden.

UNLOAD_MAKROS

Hier werdne die Makros übertragen.

UNLOAD_CAPTIONS

Hierbei handelt es sich um die Beschreibungen von Feldern, Erläuterungstexten ...

UNLOAD_SICHTEN

Heirbei handelt es sich um die Sichten

UNLOAD_MAN_CATALOGUE

Hierbei handelt es sich um den Zahlenkatalog des MAN Moduls.

UNLOAD_MAN_ZAHL_WERT

Hierbei handelt es sich um eigene Werte der Hochschule für das MAN Modul.

UNLOAD_KENN_ZAHL_WERT

Hierbei handelt es sich um eigene Werte der Hochschule für das KENN Modul.

Ausführung

Wie üblich muss in der SQL_ENV die DB Verbindung eingerichtet werden und auch die Entladeparameter. Über die Scripte kern_unload.x werden dann die Tabellen aus dem jeweils anderen SuperX entladen und per kern_update.x in das verwendete SuperX eingespielt.

Upgrade einer bestehenden SuperX-Installation

Ein Upgrade einer bestehenden SuperX-Installation muss vorbereitet werden, da lokale Konfigurationen und hochschulspezifische Anpassungen nicht durch ein Komplettpaket überschrieben werden dürfen. Sichern Sie vor dem Upgrade die PostgreSQL-Datenbank, die Rollen und das Dateisystem der bestehenden Installation.

Patch einspielen

Laden Sie das zur vorhandenen Installation passende Upgrade- bzw. Patch-Paket von download.superx-projekt.de herunter. Informationen zu den Änderungen befinden sich auf der Downloadseite und in der mitgelieferten Readme-Datei. Kernmodul 6.0 verwendet PostgreSQL, UTF-8 und die Webapp-Verzeichnisstruktur.

Patches werden mit dem Script $SUPERX_DIR/db/bin/patch_apply.x direkt aus dem Patchverzeichnis eingespielt:

Je nach Patch kann anschließend ein Tomcat-Neustart erforderlich sein. Beachten Sie dazu die Hinweise der jeweiligen Patch-Dokumentation. Weitere Hinweise finden Sie unter Patch einspielen.

Upgraden des Kernmoduls

Standardvorgehen beim Upgrade

Beenden Sie Tomcat und erstellen Sie eine Sicherung der Datenbank:

Erstellen Sie zusätzlich eine vollständige Sicherung der bestehenden SuperX-Verzeichnisse, bevor Sie mit dem Upgrade beginnen.

Entpacken Sie das passende Upgrade-Paket und führen Sie anschließend die Upgrade-Scripte aus:

Das erneute Laden der SQL_ENV nach kern_env_upgrade.x ist erforderlich, damit die aktualisierte Umgebung für kern_upgrade.x verwendet wird. Starten Sie Tomcat nach Abschluss des Upgrades neu.

Upgrade auf Kernmodul 6.0 und Tomcat 10

Kernmodul 6.0 benötigt Tomcat 10 und wird mit OpenJDK 17 betrieben. Die folgenden Schritte ergänzen das Standardvorgehen insbesondere für Ubuntu und Debian.

Dienste beenden und Installation sichern

Beenden Sie vor dem Umbau Tomcat und gegebenenfalls Apache. Sichern Sie die PostgreSQL-Datenbanken und Rollen sowie die bestehende SuperX-Installation. Prüfen Sie vor dem späteren Entfernen einer alten PostgreSQL-Version, ob die Datenbanken vollständig in den neuen PostgreSQL-Cluster übernommen wurden.

Java 17 und Tomcat 10 installieren

Unter Ubuntu 24.04 und Debian können Java 17 und Tomcat 10 aus der Paketverwaltung installiert werden:

Legen Sie bei Bedarf das Tomcat-Homeverzeichnis und die von Kettle verwendeten Dateien an und vergeben Sie die erforderlichen Rechte für den Tomcat-Benutzer.

Die vollständigen JAVA_OPTS und CATALINA_OPTS werden ausschließlich unter Die Umgebungssteuerung SQL_ENV gepflegt. Übernehmen Sie die dort dokumentierte Konfiguration je nach Installation in die SQL_ENV, nach /etc/default/tomcat10 oder in die Startkonfiguration des eigenen Tomcat.

Datenbankseite in die Webapp-Struktur migrieren

Ab Kernmodul 6.0 befindet sich die Datenbankseite unter $WEBAPP/WEB-INF/conf/edustore. Für die Migration einer bestehenden Installation wird empfohlen, das im Projekt BI Maintenance bereitgestellte Migrationsskript zu verwenden. Das Script übernimmt die Umstellung auf die Webapp-Struktur kontrolliert und sollte bevorzugt eingesetzt werden, wenn BI Maintenance vorhanden ist.

Alternativ kann das bisherige db-Verzeichnis bei beendetem Tomcat manuell verschoben werden. Die Variablen müssen zuvor auf die vorhandene Installation gesetzt werden:

Führen Sie den mv-Befehl nur nach einer vollständigen Sicherung aus. Das Zielverzeichnis db darf vorher nicht existieren, da sonst eine unerwünschte Verschachtelung db/db entstehen kann.

Setzen Sie anschließend die zentralen Variablen:

Prüfen Sie danach Cronjobs, Modul-Update-Scripte, systemd-Dienste, .bashrc, .profile und eigene Shellscripte auf alte Pfade wie /home/superx/db oder Verweise auf Tomcat 9. Die SQL_ENV liegt in der neuen Struktur unter $SUPERX_DIR/db/bin/SQL_ENV.

PostgreSQL 16 prüfen

Bei einem Distributionsupgrade kann PostgreSQL 16 zusätzlich zu einem älteren PostgreSQL-Cluster installiert werden. Prüfen Sie die vorhandenen Cluster und Ports:

Ein parallel angelegter Cluster kann zunächst Port 5433 verwenden. Passen Sie entweder den Port des neuen Clusters kontrolliert an oder übernehmen Sie den tatsächlichen Port in db.properties und den JDBC-Verbindungsangaben. Entfernen Sie die alte PostgreSQL-Version erst nach erfolgreicher Migration und vollständigem Anwendungstest.

Jakarta-Classpath anpassen

Tomcat 10 verwendet die Jakarta-Servlet-API. Der JDBC_CLASSPATH muss deshalb die Jakarta-Bibliothek enthalten:

Ein veralteter Classpath mit servlet-api.jar kann bei Kernmodul-Scripten zu folgender Fehlermeldung führen:

Laden Sie nach einer Änderung die SQL_ENV erneut.

Webanwendung anpassen

Verwenden Sie die zu Kernmodul 6.0 gehörende web.xml.superxonly als Grundlage und übernehmen Sie anschließend die erforderlichen lokalen Anpassungen. Die Datei $WEBAPP/WEB-INF/dbforms-config.xml muss den Spring Connection Provider verwenden:

Nach Änderungen an web.xml oder dbforms-config.xml ist ein Tomcat-Neustart erforderlich.

Dateirechte für den Tomcat prüfen

Der Tomcat-Prozess benötigt Leserechte auf die SuperX-Webanwendung und Ausführungsrechte auf allen übergeordneten Verzeichnissen. Prüfen Sie die vollständige Verzeichniskette beispielsweise mit:

Dateien müssen für den Tomcat-Benutzer oder die Tomcat-Gruppe lesbar sein. Verzeichnisse, in die Tomcat schreibt, benötigen zusätzlich Schreibrechte. Vergeben Sie keine pauschalen Rechte mit chmod -R 777.

Apache, AJP und workers.properties prüfen

Wenn Apache über mod_jk mit Tomcat verbunden ist, müssen server.xml und workers.properties aufeinander abgestimmt sein:

  • worker.host muss zur address des AJP-Connectors passen.
  • worker.port muss dem port des AJP-Connectors entsprechen.
  • Bei secretRequired="true" muss dasselbe Secret in server.xml und workers.properties eingetragen sein.
  • Alte Pfade in workers.tomcat_home und workers.java_home müssen auf Tomcat 10 und Java 17 umgestellt werden.

Bei Apache und Tomcat auf demselben Server sollte der AJP-Connector nur an 127.0.0.1 oder ::1 gebunden werden. Eine Bindung an 0.0.0.0 ist nur erforderlich, wenn ein externer Apache zugreifen muss und der Zugriff entsprechend abgesichert ist.

Bei Load-Balancer-Installationen muss das Attribut jvmRoute im Engine-Element zur Route beziehungsweise zum Namen des zugehörigen Workers passen:

Nach Änderungen an server.xml starten Sie Tomcat neu. Nach Änderungen an workers.properties prüfen Sie zunächst die Apache-Konfiguration und laden Apache anschließend neu:

Falls Apache deaktiviert wurde, muss der Dienst vor dem Anwendungstest wieder aktiviert und gestartet werden.

Eigene Login-Seiten und Portlets prüfen

Prüfen Sie eigene Login-Seiten, Portlets und angepasste Anmeldeformulare darauf, ob noch der veraltete Parameter alt_redirect_url verwendet wird. Entfernen Sie einen vorhandenen Eintrag beim Upgrade auf Kernmodul 6.0:

Dienste starten und Protokolle kontrollieren

Aktivieren und starten Sie Tomcat 10 nach Abschluss der Anpassungen:

Prüfen Sie anschließend die direkte Tomcat-Verbindung und, sofern vorhanden, den Zugriff über Apache beziehungsweise den Load Balancer.

Migrationsprojekte

Es gibt verschiedene Szenarien zur Migration von SuperX, hierzu werden Empfehlungen gegeben.

Postgres: Wechsel auf der Zeichencodierung auf UTF-8

Unter Postgres bietet es sich an, von Postgres ISO-Codierung zu Postgres-UTF-8 Codierung zu wechseln. Für die Umsetzung der Zeichencodierung von Dateien gibt es in Postgres eingebaute Unterstützung: Wenn ein Text-Dump einer ISO-Datenbank erzeugt wird, dann steht im Kopf der Datei die Encodierung. Wenn man diese Datei mit psql in eine UTF-8-DB füttert, wird automatisch von ISO nach UTF-8 konvertiert. Für die Umcodierung der Datenbank hat sich also folgendes Vorgehen bewährt:

Exportieren Sie die ISO-Datenbank mit pg_dump im Format "plain text". Es wird eine sql-Datei erzeugt, im folgenden Beispiel für die Datenbank mit dem Namen "$DBNAME":

pg_dump  -f  $DBNAME.sql  $DBNAME

Falls Sie direkt beim Dump eine zip-Datei erzeugen wollen, nutzen Sie folgendes Script:

vpg_dump $DBNAME | gzip >$DBNAME.sql.gz 2>dump.err

Wechseln Sie dann in eine Postgres-Installation, die UTF-8 unterstützt, und erzeugen Sie die Datenbank neu:

createdb  --encoding=UTF-8  $DBNAME

Dann importieren die Datenbank mit:

psql  $DBNAME  <  $DBNAME.sql

Danach müssen Sie alle Dateien unterhalb von $SUPERX_DIR von ISO nach UTF-8 konvertieren. Bitte fertigen Sie zunächst eine Sicherung des Dateisystems unterhalb von $SUPERX_DIR an.

Zum Konvertieren stehen die Shellscripte des SuperX-Kernmoduls zur Verfügung:

cd  $SUPERX_DIR
sx_list_isofiles.x  .  >iso.txt
sx_recode_isofiles.x  iso.txt

Am Ende müssen Sie noch in der Datei $SUPERX_DIR/db/bin/SQL_ENV die Variable LANG auf die UTF-8-Codierung setzen. Führen Sie dazu

locale  -a  |  grep  de

aus, um die verfügbaren Codierungen zu ermitteln, und setzen Sie dann den entsprechenden Wert, z.B.:

LANG=de_DE.utf8
export  LANG

Übernehmen Sie anschließend die zentral dokumentierten Java-Optionen aus Die Umgebungssteuerung SQL_ENV. Darin muss -Dfile.encoding=UTF-8 enthalten sein.

Danach laden Sie einmal die Datei SQL_ENV neu:

.  $SUPERX_DIR/db/bin/SQL_ENV

Danach müssen Sie in der Datei $TOMCAT_HOME/conf/server.xml den Parameter URIEncoding="UTF-8" ergänzen, z.B.

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

Starten Sie dann noch Tomcat neu. Damit die die Migration nach UTF-8 beendet.

Migration von SuperX zu HISinOne / Edustore

Migration von Datenbank und Dateisystem

In HISinOne / Edustore ist folgendes fest vorgegeben:

  • Das DBMS ist Postgres
  • Die Zeichencodierung ist UTF-8

Vor einer Migration zu HISinOne / Edustore müssen Sie also o.g. zuerst erledigen. Eine Anleitung finden Sie oben.

  • Wenn die Migration zu Postgres / UTF-8 gelungen ist, müssen Sie wie folgt vorgehen:
  • Entpacken Sie das HISinOne Release auf dem Server, und richten Sie den Qisserver ein (databases.xml etc).
  • Bei der Neuinstallation von HISinOne müssen Sie normalerweise eine leere Postgres-Datenbank "eduetl" anlegen, dies in Ihrem Falle nicht notwendig. Sie verlinken die oben migrierte Datenbank in der databases.xml
  • Sie starten in der BI-Administration den Upgrade der jeweiligen Module, beginnend mit dem Kernmodul. Dies können Sie über den Browser realisieren, oder über Shell- bzw. ANT Scripte

Sie können nach der Migration der Datenbank die Konnektoren auf BI-Technik umstellen oder die SuperX-Shellscripte weiterhin nutzen. Die Datenbankseite liegt in der Webapp-Struktur unter $WEBAPP/WEB-INF/conf/edustore/db. Setzen Sie $SUPERX_DIR daher auf $WEBAPP/WEB-INF/conf/edustore und passen Sie Ihre SQL_ENV entsprechend an.

Einrichtung der BI Konnektoren

Die Technik der BI-Konnektoren ist identisch mit der von SuperX, allerdings lassen sich BI Konnektoren auch in der Komponentenverwaltung von HISinOne ausführen. Wenn Sie die Komponentenverwaltung nutzen wollen müssen Sie die Umgebung der bisherigen SuperX-Shellscripte des jew. Moduls (z.B. $SOS_LOAD_PFAD/SOS_ENV und die darin referenzierte DB_PROPERTIES) nach HISinOne (die Datei .../webapps/qissserver/WEB-INF/conf/databases_<


org.postgresql.Driver

jdbc:postgresql:

sospos

soshost

5432

sospos

anfang12

y


Das analoge Beispiel in $SOS_LOAD_PFAD/db-sos_pg.properties:

driverName=org.postgresql.Driver
connectionName=superx
connectionURL=jdbc\:postgresql\://localhost:5432/sospos
logLevelSQL=FINEST
connectionPassword=sx_des\#-1\#108\#-75\#72\#-110\#-117\#-34\#-94\#116\#120\#-97\#-28\#-54\#-55\#11\#8

Sie übertragen also die Connection Angaben in die databases.xml und starten den Tomcat neu.

Hinweis: Wenn Sie Vorsysteme mit einem anderen Datenbanksystem als PostgreSQL nutzen, beispielsweise MACH unter SQL Server, müssen Sie auch den JDBC-Treiber der Anwendung vom Rohdatenpfad nach $WEBAPP/WEB-INF/lib kopieren und Tomcat neu starten.

Weitere Infos:

https://wiki.his.de/mediawiki/index.php/Komponentenverwaltung_der_HISinOne-BI

https://wiki.his.de/mediawiki/index.php/Komponenten_Update-HISinOne-BI#Skriptgesteuerter_Update

Migration Webapp-Verzeichnisstruktur

Mit Kernmodul 6.0 wird die Verzeichnisstruktur von SuperX unterhalb von webapps/superx verlagert. Details siehe Migrationsleitfaden.

Tomcat aktualisieren

Wenn Sie den Tomcat benutzen, welcher mit SuperX ausgeliefert wird, wird dieser nicht automatisch vom System geupgradet. Dies muss manuell gemacht werden. Bei kleineren Versionssprüngen wird es sehr wahrscheinlich keine Probleme geben. Bei dem Upgrade auf eine neue Tomcat Version ist aber Vorsicht geboten.

Dieser Leitfaden zur Aktualisierung des Tomcats ist ein Vorschlag von uns, wie Sie den Tomcat aktualisieren können. Bitte sichern Sie zuvor das Dateisystem von SuperX und die Datenbank um bei eventuellen Problemen das System auf den funktionierenden Stand wieder zurück bringen zu können.

Bitte laden Sie sich hier: http://tomcat.apache.org/ die Version des Tomcats herunter, welche Sie verwenden möchten.

Beenden Sie Tomcat und sichern Sie $TOMCAT_HOME einschließlich der Konfiguration und der Webanwendung. Installieren beziehungsweise entpacken Sie die neue Tomcat-Version in ein separates Verzeichnis. Übernehmen Sie aus der alten Installation nur die weiterhin benötigten Konfigurationen und prüfen Sie diese gegen die Standardkonfiguration der neuen Version. Binden Sie anschließend die vorhandene Webanwendung unter $WEBAPP ein, starten Sie Tomcat und testen Sie die Anwendung zuerst direkt und danach gegebenenfalls über Apache oder den Load Balancer.