Manualles Update auf DWH-J2EE-1.1rc1 für Debian und CentOS

Anmelden als ROOT

Für die Ausführung ist wichtig, dass der User als root angemeldet ist. Dazu führt man, falls der User auf der Sudoer-Liste steht (der User root hat dann meist kein eigenes Passwort), Folgendes aus:

sudo su -

Oder, wenn der User nicht auf der Sudoer-Liste steht (root hat eigenes Passwort), Folgendes:

su -

Alle folgende Befehle sollten als root-User ausgeführt werden.

Setzen der Umgebungsvariablen zur Vereinfachung des Updates und eventuell Laden des Updatepakets

Diese Variablen werden nur für diese Updatesession gesetzt.

Die Variable WILDFLY_HOME wird auf den Homedirectory von dem Wildfly-Service gesetzt, in Normalfall unter /opt/wildfly-9.0.2.Final/. Die Variable i2b2_WEBDIR linkt auf den Ordner des i2b2-Webclients. Diese befindet sich im Apache-Webordner, je nach Distribution /var/www/ oder /var/www/html/. In dem ursprünglichen Installationsschritt wurde zur Vereinfachung die Verlinkung /var/webroot/ erstellt.

WILDFLY_HOME=/opt/wildfly-9.0.2.Final
i2b2_WEBDIR=/var/webroot/webclient

Zur Vereinfachung kann das bereitgestellte Updatepaket heruntergeladen und entpackt werden.

wget http://www.aktin.org/software/repo/org/aktin/dwh/dwh-update/1.1u4/dwh-update-1.1u4.tar.gz
tar xvzf dwh-update-1.1u4.tar.gz

Installation der korrekten Java-Version

Vor dem Update sollte die Java-Version des Servers überprüft werden:

java -version
# openjdk version "1.8.0_121"
# OpenJDK Runtime Environment (build 1.8.0_121-8u121-b13-1~bpo8+1-b13)
# OpenJDK 64-Bit Server VM (build 25.121-b13, mixed mode)

Sollte in der Anzeige stattdessen Java Version 7 angezeigt werden, sollte diese auf Java Version 8 geupdatet werden.

Unter Debian muss dies über den Jessie-Backport geschehen. Dafür führen Sie bitte folgenden Code aus:

if [ $(grep -c -e "^deb http://ftp.de.debian.org/debian jessie-backports main" /etc/apt/sources.list) -le 0 ] ; then
    echo 'deb http://ftp.de.debian.org/debian jessie-backports main' >> /etc/apt/sources.list;
fi
apt-get update ; apt install -t jessie-backports -y openjdk-8-jre-headless ca-certificates-java
update-alternatives --set java $(update-alternatives --list java | grep "java-8")

Unter CentOS muss yum -y install java-1.8.0-openjdk-headless ausgeführt werden. Unter RedHat müssen Sie eventuell Ihren Serveradministrator um ein Repository-Update bitten.

Löschen der alten Software

Die alte Version von der DWH-J2EE-Software muss aus dem Wildfly-Service entfernt werden. Mit dem ersten Befehl des folgenden Blockes kann man alle in dem Service gelisteten Softwarepakete anzeigen lassen. Mit dem zweiten spezifisch die aktuell aktiven Pakete.

ls $WILDFLY_HOME/standalone/deployments/dwh-j2ee-*
# /.../dwh-j2ee-0.6.3.ear  
# /.../dwh-j2ee-0.6.3.deployed
ls $WILDFLY_HOME/standalone/deployments/dwh-j2ee-* | grep deployed
# /.../dwh-j2ee-0.6.3.deployed

Mit dem folgenden Befehl werden alle DWH-J2EE-Softwarepakete deaktiviert.

$WILDFLY_HOME/bin/jboss-cli.sh -c --command="undeploy --name=dwh-j2ee*.ear"

Anpassen der Konfigurationsdatei aktin.properties

In einem früheren Update wurd eine Konfigurationsdatei erstellt. Sollten Änderungen an dieser Datei notwendig sein, fügen Sie bitte die neue Einstellungen durch. Die Änderungen können durch den diff-Befehl erkannt werden. Sie können den Code-Abschnitt aus dem automatischen Updateskript unter dem Abschnitt STEP 0.02 entnehmen und verwenden. Dazu werden auf dem Server die Pakete diff, sed und patch benötigt. Dieser Code-Abschnitt geht davon aus, dass die aktive aktin.properties-Datei unter $WILDFLY_HOME/standalone/configuration/ zu finden ist. Sollten Sie noch keine $WILDFLY_HOME/standalone/configuration/aktin.properties eingerichtet haben, richten Sie es bitte wie folgt ein. Ein Template dafür kann dem Updatepaket entnommen (dwh-update/aktin.properties) oder per Hand erstellt werden.

Ein Template sowie weiterführende Erläuterungen zu wichtigen Einstellungen finden Sie auf der Seite Installationsskript im Bereich “Aktin-Properties”.

In dieser Datei werden Angaben zum lokalen DWH und Standort-spezifische Änderungen gemacht. Falls die Datei manuell angelegt wird, sollte darauf geachtet werden, dass als Encoding UTF-8 und Unix-Zeilenendungen verwendet werden.

Diese Datei muss dann in den Konfigurationsordner des Wildfly gelegt werden, zu finden unter $WILDFLY_HOME/standalone/configuration/:

cp aktin.properties $WILDFLY_HOME/standalone/configuration/

Änderungen an der Konfigurationsdatei aktin.properties (nicht relevant für Ersteinrichtung)

Sollten zu einem späteren Zeitpunkt Änderungen an der Datei erfolgen, muss dies auch in dem Ordner übernommen werden und der Wildfly-Service muss neugestartet werden (diese Befehle müssen beim Update nicht an dieser ausgeführt werden):

# debian
service wildfly stop
service wildfly start

Unter CentOS sind diese Befehle wie folgt, sofern der Wildfly als Service eingerichtet wurde:

# centos
systemctl stop wildfly
systemctl start wildfly

E-Mail-Konfiguration

Mit einem früheren Update wurde ein E-Mail-Dienst eingerichtet, der z.B. die monatlich erzeugten Berichtsdokumente an die in aktin.properties angegebenen E-Mail-Adresse sendet.

Sollten Sie bereits den E-Mail-Dienst eingerichtet haben, jedoch die Daten ändern wollen, rufen Sie bitte zuerst das Skript dwh-update/email_config_reset.sh aus dem Updatepaket auf, um die vorhandenen Einstellungen zu entfernen. Nach einem Neustart des Wildfly-Service fahren Sie dann bitte wie bei einer Neueinrichtung fort.

Ein Template und weiterführende Erläuterungen der Parameter finden Sie auf der Seite Installationsskript im Bereich “E-Mail-Konfiguration”.

Zum Einrichten des E-Mail-Services steht auch ein Skript aus dem Updatepaket bereit. Dazu muss die Datei dwh-update/email.config angepasst und das Skript dwh-update/lib/email_create.sh ausgeführt werden.

Alternativ können auch direkt die folgenden Befehle aufgerufen werden, wobei die Variablen XXXsmtphostXXX, XXXsmtpportXXX, XXXsmtpuserXXX, XXXsmtppassXXX, XXXusetlsXXX, XXXusesslXXX sowie XXXmailfromXXX durch die lokalen Daten ersetzt werden müssen.

$WILDFLY_HOME/bin/jboss-cli.sh -c "/socket-binding-group=standard-sockets/remote-destination-outbound-socket-binding=aktin-smtp-binding:add(host=XXXsmtphostXXX, port=XXXsmtpportXXX)"
$WILDFLY_HOME/bin/jboss-cli.sh -c "/subsystem=mail/mail-session=AktinMailSession:add(jndi-name=java:jboss/mail/AktinMailSession)"
$WILDFLY_HOME/bin/jboss-cli.sh -c "/subsystem=mail/mail-session=AktinMailSession/server=smtp:add(outbound-socket-binding-ref=aktin-smtp-binding, username=XXXsmtpuserXXX, password=XXXsmtppassXXX, tls=XXXusetlsXXX, ssl=XXXusesslXXX)"
$WILDFLY_HOME/bin/jboss-cli.sh -c "/subsystem=mail/mail-session=AktinMailSession/:write-attribute(name=from, value=XXXmailfromXXX)"

Einspielen der neuen Ontologie-Metadaten

Die neue Ontologie kann dem Updatepaket dwh-update/packages/cda-ontology-0.13.jar entnommen oder über das Paket CDA-Ontology heruntergeladen werden:

wget http://www.aktin.org/software/repo/org/aktin/cda-ontology/0.13/cda-ontology-0.13.jar

Man sollte das Paket in ein temporäres Verzeichnis entpacken und die enthaltenen sql-Skripte über den postgres-User ausführen. Anschließend kann das temporäre Verzeichnis wieder gelöscht werden.

CDATMPDIR=/var/tmp/cda-ontology
unzip dwh-update/packages/cda-ontology-0.13.jar -d $CDATMPDIR
chmod 777 -R $CDATMPDIR

su - postgres bash -c "psql -d i2b2 -f $CDATMPDIR/sql/remove_ont.sql"
su - postgres bash -c "psql -d i2b2 -f $CDATMPDIR/sql/meta.sql"
su - postgres bash -c "psql -d i2b2 -f $CDATMPDIR/sql/data.sql"

rm -r $CDATMPDIR

Anpassung der Datumsangaben

Diese Einstellung muss nur einmal ausgeführt werden. Sollte sie bereits vorhanden sein, kann dieser Abschnitt übersprungen werden.

Es kann eventuell notwendig sein, die Genauigkeit der Datumsangaben für Patienten und Besuche anzupassen. Dies geschieht durch die Datei lib/fix_visit_patient_date_accuracy.sql im Update-Paket.

CDATMPDIR=/var/tmp/cda-ontology
mkdir $CDATMPDIR
cp dwh-update/lib/fix_visit_patient_date_accuracy.sql $CDATMPDIR/sql/
chmod 777 -R $CDATMPDIR

su - postgres bash -c "psql -d i2b2 -f $CDATMPDIR/sql/fix_visit_patient_date_accuracy.sql"

rm -r $CDATMPDIR

Entfernen der Defaulteinträge im Webformular

Diese Einstellung muss nur einmal ausgeführt werden. Sollte sie bereits vorhanden sein, kann dieser Abschnitt übersprungen werden.

Aus Sicherheitsgründen und zur verbesserten Nutzung werden die Defaultlogindaten aus dem Webformular des i2b2 entfernt. Die Logindaten werden dabei nicht geändert, es werden lediglich die Vorbelegungen aus der Login-Maske gelöscht.

Mittels der folgenden beiden Befehlen werden die Einträge gelöscht:

sed -i "s/name=\"uname\" id=\"loginusr\" value=\"demo\"/name=\"uname\" id=\"loginusr\" value=\"\"/g" $i2b2_WEBDIR/js-i2b2/cells/PM/PM_misc.js
sed -i "s/name=\"pword\" id=\"loginpass\" value=\"demouser\"/name=\"pword\" id=\"loginpass\" value=\"\"/g" $i2b2_WEBDIR/js-i2b2/cells/PM/PM_misc.js

Zudem sollten, sofern noch nicht geschehen, die Passwörter der Benutzer “i2b2” und “demo” für den Zugang zum i2b2-Web-Client geändert werden. Die Standardpasswörter für beide Nutzer lauten “demouser”. Das Ändern der Passwörter können Sie nach dem Update in der Adminoberfläche des i2b2 durchführen. Sollte dazu Fragen auftauchen, kontaktieren Sie uns gerne.

Anlegen der AKTIN-Datenbanken und der AKTIN-Datasource in Wildfly

Diese Einstellung muss nur einmal ausgeführt werden. Sollte sie bereits vorhanden sein, bitte diesen Abschnitt überspringen.

Zur lokalen Verwaltung wird eine zusätzliche AKTIN-Datenbank angelegt, in der z.B. das Datum des letzten Monatsberichts oder die Angaben der Abfragen gespeichert werden.

Dazu muss der User auf postgres gewechselt werden:

su - postgres

Die folgenden Befehle müssen zum Anlegen des Datenbanknutzers und der Datenbank ausgeführt werden:

createdb aktin
psql -c "CREATE ROLE aktin with password 'aktin'" aktin
psql -c "CREATE SCHEMA IF NOT EXISTS  aktin AUTHORIZATION aktin" aktin
psql -c "GRANT ALL ON SCHEMA aktin to aktin" aktin
psql -c "ALTER ROLE aktin WITH LOGIN" aktin

Anschließend wird der User zurück auf root gewechselt (postgres-User wird abgemeldet):

exit

Um die erstellte Datenbank anzuwenden, muss im Wildfly-Service die AKTIN-Datasource angelegt werden:

$WILDFLY_HOME/bin/jboss-cli.sh -c --command="data-source add --name=AktinDS --jndi-name=java:jboss/datasources/AktinDS --driver-name=postgresql-9.2-1002.jdbc4.jar --jta=false --connection-url=jdbc:postgresql://localhost:5432/aktin --user-name=aktin --password=aktin"

Zur Überprüfung kann dann folgender Befehl ausgeführt werden:

$WILDFLY_HOME/bin/jboss-cli.sh -c --command="/subsystem=datasources:read-resource"

Die Änderungen treten erst nach einem Neustart des Services in Kraft. (In der Konsole wird reload-required angezeigt. Da im Updateverlauf noch der Neustart erfolgt, wird der Neustart in diesem Schritt übersprungen).

Änderung der Logging-Einstellungen

Diese Einstellung muss nur einmal ausgeführt werden. Sollte sie bereits vorhanden sein, bitte diesen Abschnitt überspringen.

Zur Vermeidung von Überfüllung des Servers durch Log-Dateien und Konsolausgaben, wird hier die Logging-Einstellung der Wildfly-Service umgestellt.

Zur Sicherheit sollte die betreffende Datei gesichert werden:

cp $WILDFLY_HOME/standalone/configuration/standalone.xml $WILDFLY_HOME/standalone/configuration/standalone.xml.$NEW_VERSION.orig

Zur Entfernung der alten Konsolen- und Daterotating-Logging:

/subsystem=logging/root-logger=ROOT:remove-handler(name="FILE")
/subsystem=logging/root-logger=ROOT:remove-handler(name="CONSOLE")

Und Einstellung eines neuen Filerotating-Logging, mit maximal 64 Dateien je maximal 50MB:

/subsystem=logging/size-rotating-file-handler=srf:add(named-formatter="PATTERN", file={"relative-to"=>"jboss.server.log.dir", "path"=>"server.log"}, autoflush=true, max-backup-index=64, rotate-size=50m, rotate-on-boot=true)
/subsystem=logging/root-logger=ROOT:add-handler(name="srf")

Anlegen benötiger Ordnerstruktur

Diese Einstellung muss nur einmal ausgeführt werden. Sollte sie bereits vorhanden sein, kann dieser Abschnitt übersprungen werden.

Die später erzeugten Berichte werden in dem Ordner /var/lib/aktin/ abgelegt. Dazu wird der Ordner angelegt und die Benutzerrechte gesetzt:

mkdir -p /var/lib/aktin
chown wildfly /var/lib/aktin

Erhöhung des JAVA-VM-Arbeitsspeichers für den Wildfly-Service

Diese Einstellung muss nur einmal ausgeführt werden. Sollte sie bereits vorhanden sein, bitte diesen Abschnitt überspringen.

Standardmäßig wird der Wildfly-Service nur 1GB bzw 1024MB Arbeitsspeicher zugeordnet. Dies kann bei Abfragen sehr schnell ausgereizt werden. Daher wird in diesem Schritt der Arbeitsspeicher auf 2GB erhöht.

if [ ! -f $WILDFLY_HOME/bin/standalone.conf.orig.$NEW_VERSION ] ;
then
    cp -v $WILDFLY_HOME/bin/standalone.conf $WILDFLY_HOME/bin/standalone.conf.orig.$NEW_VERSION
fi

sed 's/Xmx1024m/Xmx2g/g' $WILDFLY_HOME/bin/standalone.conf > $WILDFLY_HOME/bin/standalone1.conf
mv $WILDFLY_HOME/bin/standalone1.conf $WILDFLY_HOME/bin/standalone.conf

Neustart des Wildfly-Services und Löschen der alten Softwarepakete

In diesem Schritt wird der Wildfly-Service gestoppt, um eine fehlerfreie Entfernung der alten Softwarepakete zu garantieren. Danach wird der Service neugestartet. (Für CentOS muss der Code entsprechend angepasst werden.)

service wildfly stop # debian
# systemctl stop wildfly # centos

rm -v $WILDFLY_HOME/standalone/deployments/dwh-j2ee-*

Sollten noch alte Log-Dateien aus dem Daterotating-Logging vorhanden sein, werden diese komprimiert und die Originaldateien gelöscht:

if [ $( ls /opt/wildfly-9.0.2.Final/standalone/log/server.log.201* 2>/dev/null | wc -l ) -gt 0 ] ; 
then
    current=$(date +%Y%h%d%H%M)
    tar cvfz $WILDFLY_HOME/standalone/log/serverlog_pre_${NEW_VERSION}_${current}.tgz $WILDFLY_HOME/standalone/log/server.log.201* 
    rm -v $WILDFLY_HOME/standalone/log/server.log.201*
fi

Anschließend wird die Wildfly-Service wieder gestartet.

service wildfly start # debian
# systemctl start wildfly # centos

Deployment des neuen Softwarepaketes

Das neue Softwarepaket kann entweder dem geladenen Updatepaket entnommen werden (dwh-update/packages/dwh-j2ee-1.1rc1.ear) oder herunter geladen werden unter EAR Release 1.1rc1. Es muss in denWildfly-Deploymentordner kopiert werden.

cp dwh-update/packages/dwh-j2ee-1.1rc1.ear $WILDFLY_HOME/standalone/deployments/

Das Deployment wird damit automatisch gestartet und kann einige Minuten andauern.

Nach erfolgereichem Deployment wird die Datei $WILDFLY_HOME/standalone/deployments/dwh-j2ee-1.1rc1.ear.deployed erstellt.

ls /opt/wildfly-9.0.2.Final/standalone/deployments/dwh-j2ee-*.deployed

Sollte eine Datei angezeigt werden, war das Update erfolgreich.Sollte stattdessen $WILDFLY_HOME/standalone/deployments/dwh-j2ee-1.1rc1.ear.failed auftauchen, melden Sie uns bitte den Fehler zusammen mit dem Wildfly-Konsolenlog, zufinden unter /var/log/wildfly/console.log oder /opt/wilfly*/standalone/logs/...

Nach dem erfolgreichen Update können Sie auf der Seite http://IHRSERVER/aktin/admin/plain/test.html die Grundfunktionalität testen.

Eine weiterführende Anleitung zum Testen der Verbindung finden Sie auf der Seite Installationsskript im Bereich “Test der Betriebsfähigkeit”.

Sollten weitere Probleme entstehen, kontaktieren Sie uns bitte unter it-support(at)aktin.org

Aktin Diagnose-Skript

Sollten Probleme beim mauellen Update auftreten, so führen Sie bitte das Aktin-Diagnose-Skript aus. Eine genauere Beschreibung finden Sie auf der Seite Installationsskript im Bereich “Aktin Diagnose-Skript”.

Senden Sie diese Datei bitte an den Aktin-Support, unter it-support(at)aktin.org, mit einer Support-Anfrage. Die erzeugten Logs helfen bei der Identifizierung von Problemen.