rrenkert@411: Einrichtung der Anwendung LADA rrenkert@411: ============================== rrenkert@411: rrenkert@411: Dies ist die Prototypversion der Serverkomponente für die Anwendung LADA zur rrenkert@411: Verarbeitung und Erfassung von Labordaten. rrenkert@411: rrenkert@411: Die Software bietet grundlegende Funktionalität zur Erfassung und Bearbeitung rrenkert@411: von Messdaten. Weitere Informationen finden sich auf der Projektwebseite unter rrenkert@411: der Adresse: rrenkert@411: rrenkert@411: https://wald.intevation.org/projects/lada/ rrenkert@411: rrenkert@411: Die Software entstand im Rahmen einer Software Entwicklung durch die rrenkert@411: Intevation GmbH im Auftrag des Bundesamt für Strahlenschutz im Jahre 2013. rrenkert@411: rrenkert@411: Lizenz rrenkert@411: ------ rrenkert@411: Die Software unter der GNU GPL v>=3 Lizenz verfügbar. Details siehe die Datei rrenkert@411: COPYING. rrenkert@411: rrenkert@411: Quelltext rrenkert@411: --------- rrenkert@411: Die Quelldateien lassen sich wie folgt auschecken: rrenkert@411: hg clone https://scm.wald.intevation.org/hg/lada/lada-server rrenkert@411: rrenkert@411: rrenkert@411: Installation rrenkert@411: ============ rrenkert@411: rrenkert@411: Die Installation der Serverkomponente erfordert folgende Vorraussetzungen: rrenkert@411: rrenkert@411: * PostgreSQL-9.2/PostGIS-2.0 Datenbank inklusive Testdaten rrenkert@411: * JBoss-AS rrenkert@411: rrenkert@411: rrenkert@411: Datenbank rrenkert@411: --------- rrenkert@411: Die LADA Anwendung basiert auf einer PostgreSQL/PostGIS Datenbank in den rrenkert@411: Versionen PostgreSQL 9.2/PostGIS 2.0. rrenkert@411: Beipieldaten sind in dem Datenbankdump lada-db.zip verfügbar und können rrenkert@411: in eine PostgreSQL/PostGIS Datenbank importiert werden. rrenkert@411: Der dadurch verfügbare Testdatensatz enthält zusätzlich Daten zu Gemeinden und rrenkert@411: Verwaltungen in Deutschland, die vom BKG zur Verfügung gestellt werden. rrenkert@411: rrenkert@411: Einrichtung der Datenbankverbindung im JBoss AS rrenkert@411: ----------------------------------------------- rrenkert@411: Die Datenbankverbindung wird im Application Server eingerichtet. Hierzu muss der rrenkert@411: entsprechende Treiber zunächst als Modul eingefügt werden. Die folgenden rrenkert@411: Schritte setzen vorraus, dass der JBoss AS in dem Ordner rrenkert@411: /opt/jboss-as-7.1.1-Final installiert ist. rrenkert@411: rrenkert@411: 1. Anlegen des Verzeichnisses und herunterladen der Treiber. rrenkert@411: rrenkert@411: $cd /opt/jboss-as-7.1.1.Final/modules/org rrenkert@411: $mkdir -p postgresql/main/ rrenkert@411: $cd postgresql/main rrenkert@411: $curl -O "http://jdbc.postgresql.org/download/postgresql-9.2-1002.jdbc4.jar" rrenkert@411: $curl -O "http://www.hibernatespatial.org/repository/org/postgis/postgis-jdbc/1.5.2/postgis-jdbc-1.5.2.jar" rrenkert@411: rrenkert@411: 2. In dem Ordner /opt/jboss-as-7.1.1.Final/modules/org/postgresql/main/ eine rrenkert@411: Datei module.xml mit folgendem Inhalt anlegen. rrenkert@411: rrenkert@411: rrenkert@411: rrenkert@411: rrenkert@411: rrenkert@411: rrenkert@411: rrenkert@411: rrenkert@411: rrenkert@411: rrenkert@411: rrenkert@411: rrenkert@411: rrenkert@411: 3. Einfügen der Hibernate-Spatial Komponenten. rrenkert@411: rrenkert@411: $cd /opt/jboss-as-7.1.1.Final/modules/org/hibernate/main rrenkert@411: $curl -O "http://www.hibernatespatial.org/repository/org/hibernate/hibernate-spatial/4.0/hibernate-spatial-4.0.jar" rrenkert@411: $curl -O "http://repo1.maven.org/maven2/com/vividsolutions/jts/1.13/jts-1.13.jar" rrenkert@411: rrenkert@411: 4. Eintragen der Hibernate-Spatial Komponenten in rrenkert@411: /opt/jboss-as-7.1.1.Final/modules/org/hibernate/main/module.xml rrenkert@411: rrenkert@411: rrenkert@411: ... rrenkert@411: rrenkert@411: rrenkert@411: rrenkert@411: rrenkert@411: ... rrenkert@411: rrenkert@411: rrenkert@411: rrenkert@411: 5. Einfügen des PostgreSQL Moduls als Treiber in die JBoss Konfiguration. rrenkert@411: rrenkert@411: In den Abschnitt folgenden Block einfügen: rrenkert@411: rrenkert@411: rrenkert@411: org.postgresql.xa.PGXADataSource rrenkert@411: rrenkert@411: rrenkert@411: rrenkert@411: Nun kann man eine neue Datenbankverbindung mit dem neuen Treiber einrichten. rrenkert@411: Dazu verbindet man sich mit dem soeben angelegten Management-Nutzer mit der rrenkert@411: Administrations-Webinterface unter der Adresse: http://localhost:9990 rrenkert@411: rrenkert@411: 1. Datesources auswählen. Hier werden alle derzeit eingerichteten Datenquellen rrenkert@411: angzeigt. Wir wollen eine neue einrichten. Hierzu rrenkert@411: 2. Oben rechts von "Runtime" auf "Profile" wechseln. rrenkert@411: 3. "Add" wählen. rrenkert@411: 4. Name: Lada, JNDI: java:/jboss/Lada rrenkert@411: 5. Treiber Wählen: postgis rrenkert@411: 6. Weitere Verbindungsparameter angeben. rrenkert@411: a) connection url: jdbc:postgresql_postGIS://localhost:5432/lada rrenkert@411: b) Nutzer rrenkert@411: c) Password rrenkert@411: rrenkert@411: 7.Da während dieser Einrichtung die Standard PostgreSQL Treiberklasse gewählt rrenkert@411: wird, muss diese noch in der Datei rrenkert@411: /opt/jboss-as-7.1.1.Final/standalone/configuration/standalone.xml rrenkert@411: geändert werden: rrenkert@411: Hierzu wird im Abschnitt für die neu angelegte Datenquelle rrenkert@411: org.postgresql.Driver gegen rrenkert@411: org.postgis.DriverWrapper ausgetauscht. rrenkert@411: rrenkert@411: Installation der LADA Anwendung rrenkert@411: =============================== rrenkert@411: Zur Installation der LADA Anwendung müssen folgende Schritte unternommen werden: rrenkert@411: rrenkert@411: $cd /opt/jboss-as-7.1.1.Final/standalone/deployments rrenkert@411: $cp /path/where/the/war/file/is/lada.war . rrenkert@411: $touch lada.war.dodeploy rrenkert@411: rrenkert@411: Zum Aktualisieren der Anwendung genügt es, wenn die lada.war Datei aktualisiert rrenkert@411: wird. rrenkert@411: rrenkert@411: Die Anwendung ist dann unter dem Pfad "/lada" (abhängig vom Archivnamen) rrenkert@411: erreichbar. rrenkert@411: rrenkert@411: Konfiguration der LADA Anwendung rrenkert@411: ================================ rrenkert@411: Die Konfigurationsdateien sind Dateien im JSON-Format und können an einer rrenkert@411: beliebigen Stelle im System abgelegt werden, solang diese Dateien für den rrenkert@411: Nutzer, mit dem JBoss-Server gestartet wird, gelesen werden kann. rrenkert@411: rrenkert@411: Bei Änderungen an der Konfigurationsdatei muss der Server nicht neu gestartet rrenkert@411: werden. Es reicht ein erneutes Laden der Anwendung durch den Client. rrenkert@411: Vorbereitete und vollständige Konfigurationsdateien sind in dem Ordner rrenkert@411: 'config' zu finden. rrenkert@411: rrenkert@411: Importer rrenkert@411: -------- rrenkert@411: Der Pfad an dem diese Konfigurationsdatei zu finden ist wird in einer JBoss rrenkert@411: Konfigurationsdatei "standalone.xml" abgelegt. Diese Datei findet sich im JBoss rrenkert@411: Ordner ($JBOSSHOME/standalone/configuration/standalone.xml). rrenkert@411: rrenkert@411: In dieser Datei wird der Pfad in Form einer Property abgelegt: rrenkert@411: rrenkert@411: rrenkert@411: ... rrenkert@411: rrenkert@411: rrenkert@411: rrenkert@411: rrenkert@411: rrenkert@411: ... rrenkert@411: rrenkert@411: rrenkert@411: Flexible Suche rrenkert@411: -------------- rrenkert@411: Der Pfad an dem diese Konfigurationsdatei zu finden ist wird in einer JBoss rrenkert@411: Konfigurationsdatei "standalone.xml" abgelegt. Diese Datei findet sich im JBoss rrenkert@411: Ordner ($JBOSSHOME/standalone/configuration/standalone.xml). rrenkert@411: rrenkert@411: In dieser Datei wird der Pfad in Form einer Property abgelegt: rrenkert@411: rrenkert@411: rrenkert@411: ... rrenkert@411: rrenkert@411: rrenkert@411: ... rrenkert@411: rrenkert@411: rrenkert@411: rrenkert@411: ... rrenkert@411: rrenkert@411: rrenkert@411: Einrichtung des Webservers (Apache) rrenkert@411: =================================== rrenkert@411: Die folgenden Module des Apache Webserver sind nötig, um die LADA Anwendung zu rrenkert@411: betreiben: rrenkert@411: * ldap_module: Authenitfizierung gegen den LDAP rrenkert@411: * headers_module: Setzten der Header nach der Authenitifizierung rrenkert@411: * proxy_module: Reverse Proxy des Apache zum Jboss-Server rrenkert@411: rrenkert@411: Damit der Client eine Verbindung zu dem Server aufbauen kann, um von dort Daten rrenkert@411: laden zu können ist es notwendig den Server weiter zu konfigurieren. rrenkert@411: rrenkert@411: togglesebool httpd_can_network_connect rrenkert@411: service httpd restart rrenkert@411: rrenkert@411: Dies erlaubt dem Apache grundsätzlich sich an einen anderen Dienst zu verbinden. rrenkert@411: rrenkert@411: Nun muss noch ein Reverse-Proxy eingerichtet werden. Dieser ist nur für rrenkert@411: bestimmte Adressen aktiv rrenkert@411: rrenkert@411: Folgende Datei sollte unter "/etc/httpd/conf.d/lada.conf" angelegt werden: rrenkert@411: rrenkert@411: rrenkert@411: ServerAdmin webmaster@localhost rrenkert@411: #ServerName dummy-host.example.com rrenkert@411: ErrorLog logs/lada-error_log rrenkert@411: CustomLog logs/lada-access_log common rrenkert@411: rrenkert@411: # Set multiple Proxys rrenkert@411: ProxyPass /lada/server http://localhost:8080/lada rrenkert@411: ProxyPassReverse /lada/server http://localhost:8080/lada rrenkert@411: rrenkert@411: rrenkert@411: Alles Anfragen an die Adresse "/lada/service" werden nun an den JBoss rrenkert@411: weitergeleitet. rrenkert@411: rrenkert@411: Authentifizierung rrenkert@411: rrenkert@411: Die Authentifizierung geschieht gegen einen LDAP-Server. rrenkert@411: rrenkert@411: rrenkert@411: AuthType basic rrenkert@411: AuthName "test" rrenkert@411: AuthBasicProvider ldap rrenkert@411: AuthLDAPURL "ldap://ike.polyhedra.intevation.de:389/cn=users,dc=icosahedron,dc=polyhedra,dc=intevation,dc=de?uid,memberof??(&(objectClass=inetOrgPerson)(memberOf=*))" rrenkert@411: Require valid-user rrenkert@411: rrenkert@411: rrenkert@411: rrenkert@411: RequestHeader unset Authorization rrenkert@411: RequestHeader set X-LDAP-User "%{AUTHENTICATE_uid}e" rrenkert@411: RequestHeader set X-LDAP-Groups "%{AUTHENTICATE_memberof}e" rrenkert@411: rrenkert@411: rrenkert@411: Sofern gewünscht ist die Authentifizierung für Testzwecke zu deaktivieren muss rrenkert@411: trotz allem die entsprechenden Header gesetzt werden, da der Server diese rrenkert@411: derzeit erwartet. rrenkert@411: rrenkert@411: # Set Headers to simulate Authentification. rrenkert@411: rrenkert@411: RequestHeader set X-LDAP-User "mst_06010" rrenkert@411: RequestHeader set X-LDAP-Groups "cn=Imis_world,cn=groups,dc=icosahedron,dc=polyhedra,dc=intevation,dc=de;cn=mst_06010,cn=groups,dc=icosahedron,dc=polyhedra,dc=intevation,dc=de;cn=mst_11010,cn=groups,dc=icosahedron,dc=polyhedra,dc=intevation,dc=de" rrenkert@411: rrenkert@411: rrenkert@411: Dokumentation rrenkert@411: ============= rrenkert@411: Eine HTML-Dokumenation des Quellcodes(Javadoc) ist in dem Ordner 'doc' hinterlegt und rrenkert@411: kann über einen Webserver (z.B. Apache WebServer) bereitgestellt werden.