Manualles Update auf DWH-J2EE-0.8 für Debian, 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 Varialben werden nur für dieses 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/0.8.1/dwh-update-0.8.1.tar.gz
tar xvzf dwh-update-0.8.1.tar.gz

Java Version Check und Fix

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 folgendes 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 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"

Laden bzw Erstellen der Konfigurationsdatei aktin.properties

In diesem Update wird eine Konfigurationsdatei erstellt. Ein Template dafür kann dem Updatepaket entnommen (dwh-update/aktin.properties) oder per Hand erstellt werden.

Beispieldatei aktin.properties

# Currently not used, may be changed (Name of the installation)
local.cn=AKTIN DWH
# Used in AKTIN reports, should contain the name of the Organization (Hospital)
local.o=Ev. Klinikum Beispielhausen
# Used in AKTIN reports, should contain the name of the Unit (Notaufnahme, Rettungsstelle, ZNA, etc.)
local.ou=Notaufnahme
# Town / Stadt
local.l=Beispielhausen
# State / Bundesland
local.s=Niedersachen
# Country / Staat
local.c=Deutschland
# default E-Mail-Address for notifications, reports (non technical)
local.email=zna-contact@klinikum-beipielhausen.de
local.tz=Europe/Berlin
rscript.binary=/usr/bin/Rscript
# needed for read/write access to the i2b2 database
i2b2.project=AKTIN
i2b2.datasource.crc=java:/QueryToolDemoDS
# needed for i2b2 authentication and user management
i2b2.service.pm=http://localhost:8080/i2b2/services/PMService/
# TODO create dir /var/lib/aktin and chown to wildfly
report.data.path=/var/lib/aktin/reports
report.temp.path=/var/tmp/report-temp
report.archive.path=/var/lib/aktin/report-archive
broker.data.path=/var/lib/aktin/broker
broker.archive.path=/var/lib/aktin/broker-archive
broker.uris=https://broker.aktin.org/broker/
broker.intervals=PT15M
# Used in AKTIN to connect to the broker, you can get your API key from it-support@aktin.org
broker.keys=XXXyourapikeyXXX
db.datasource=java:jboss/datasources/AktinDS
email.session=java:jboss/mail/AktinMailSession
email.replyto=it-support@aktin.org
wildfly.management.url=http://localhost:19990/management
wildfly.management.user=admin
wildfly.management.password=admin2

Besonders wichtig ist local.email, wo die E-Mail-Adresse eingetragen wird, an die z.B. die Monatsberichte geschickt werden sollen. Es ist auch möglich eine Komma-separierte Liste von E-Mailadressen anzugeben, an die der Bericht gesendet werden soll (wie z.B. alle Oberärzte der Notaufnahme).

Per E-Mail sollten Ihnen eine alphanumerischen API-Key von uns zugesandt worden sein. Dies ist unter broker.keys einzutragen. Sollten Sie keinen Key erhalten haben, bitte melden Sie sich bei it-support(at)aktin.org.

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, in den meisten Fällen zu finden unter /opt/wildfly-9.0.2.Final/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 diesem Update wird einen E-Mail-Dienst eingerichtet, der z.B. die monatlich erzeugten Berichtsdokumente an die in aktin.properties angegebenen E-Mail-Adresse sendet.

Zum Zeitpunkt des Updates ist in dem Wildfly-Service noch kein E-Mail-Service eingerichtet. Für spätere Änderungen an dem Service muss zuerst das Skript dwh-update/email_config_reset.sh aus dem Updatepaket ausgeführt, um die vorhandenen Einstellungen zu entfernen, und der Wildfly-Service neugestartet werden.

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.8.jar entnommen oder über das Paket CDA-Ontologyheruntergeladen werden:

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

Man sollte das Paket in ein temporäres Verzeichnis entpacken und die enthaltene 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.8.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

Entfernen der Defaulteinträge im Webformular

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

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).

Anlegen benötiger Ordnerstruktur

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

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-*

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-0.8.ear) oder herunter geladen werden unter EAR Release 0.8. Es muss in das Wildfly-Deploymentordner kopiert werden.

cp dwh-update/packages/dwh-j2ee-0.8.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-0.8.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-0.8.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/test/ die Grundfunktionalität testen.

Der erste Button testet die Erreichbarkeit des zentralen Aktin-Broker. Der lokale Server übersendet dem zentralen Broker nur Statusinformationen wie die Serverversion und Aktivität. Der zweite Button testet die oben eingerichtete E-Mail-Adresse. Diese sendet nun eine E-Mail an die in aktin.properties angegebene Ziel-Adresse. Der dritte Button testet die R Bibliotheken. Diese werden zur Erzeugung der Berichte verwendet.

Sollte der E-Mail-Test fehlschlagen und das Textfeld zeigt keine grüne Erfolgsmeldung wie in dem obigen Bild, sondern Fehlermeldungen, könnte dies ein Hinweis auf fehlerhafte E-Maile-Einstellung sein. In dem Fall muss man die E-Mail-Konfiguration ändern wie in Abschnitt “E-Mail-Konfiguration und Änderungen” und die Softwarepakete erneut laden.

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