rrenkert@411: Installation rrenkert@411: ============ torsten@412: Allgemeine Informationen finden Sie in der README Datei 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@415: Zum Bauen der Anwendung aus den Quellen wird zusätzlich das Build-Tool 'maven' rrenkert@415: benötigt. rrenkert@415: rrenkert@415: Installation JBoss-AS rrenkert@415: ------------------------- rrenkert@415: rrenkert@415: Im folgenden ist die Installation des JBoss-AS in dem Ordner /opt beschrieben. rrenkert@415: rrenkert@415: $ cd /opt rrenkert@415: $ curl -O http://download.jboss.org/jbossas/7.1/jboss-as-7.1.1.Final/jboss-as-7.1.1.Final.zip rrenkert@415: # Integrität prüfen. Leider bietet Redhat für diese "Community Edition" keinen rrenkert@415: # Überprüfungsweg an. Vermutlich als Verkaufsanreiz für die professionelle rrenkert@415: # Version. Beim Herunterladen am 2013-05-09 hatte die Datei folgende sha256 rrenkert@415: # Prüfsumme: rrenkert@415: # 0aece7899b54c0219732112307b2bede78ab9b39ee14140ce89ac8c1b716d0ee rrenkert@415: # jboss-as-7.1.1.Final.zip rrenkert@415: $ unzip jboss-as-7.1.1.Final.zip rrenkert@415: rrenkert@415: # Der Jboss Server soll nicht als root, sondern unter einem dedizierten Nutzer rrenkert@415: # laufen. In diesem Fall als Nutzer "lada". Hierfür müssen einige rrenkert@415: # Berechtigungen angepasst werden. rrenkert@415: $ USER=lada rrenkert@415: $ chgrp -R ${USER} jboss-as-7.1.1.Final rrenkert@415: $ cd jboss-as-7.1.1.Final rrenkert@415: $ chmod 775 standalone/ rrenkert@415: $ chmod 775 standalone/deployments rrenkert@415: $ chmod 775 standalone/tmp rrenkert@415: $ chmod 775 standalone/configuration rrenkert@415: $ chmod 660 standalone/configuration/mgmt-users.properties rrenkert@415: $ chmod 660 standalone/configuration/application-users.properties rrenkert@415: rrenkert@415: Einrichten eines Admin Zugangs rrenkert@415: `````````````````````````````` rrenkert@415: Um den JBoss Server über die Weboberfläche administrieren zu können muss rrenkert@415: zunächst ein neuer Nutzer erstellt werden: rrenkert@415: rrenkert@415: $ cd jboss-as-7.1.1.Final rrenkert@415: $ sh bin/add-user.sh rrenkert@415: rrenkert@415: Einrichten von JBoss als Service rrenkert@415: ```````````````````````````````` rrenkert@415: JBoss soll als Service start und beendbar sein. rrenkert@415: rrenkert@415: $ cd /etc/init.d rrenkert@415: $ cp /opt/jboss-as-7.1.1.Final/bin/init.d/jboss-as-standalone.sh jboss rrenkert@415: rrenkert@415: # In diesem SCRIPT müssen dann folgene Variablen angepasst werden: rrenkert@415: # 1. JBOSS_HOME=/opt/jboss-as-7.1.1.Final rrenkert@415: # 2. JBOSS_USER=lada rrenkert@415: rrenkert@415: $ servive jboss start rrenkert@415: 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@414: Hierzu sollte vorher ein Benutzer in der Datenbank angelegt werden. In der rrenkert@414: folgenden Installationsanleitung wird davon ausgegangen, dass ein Benutzer rrenkert@414: 'lada' in der Datenbank existiert. 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@414: b) Nutzer (lada) 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@415: Erstellen der Anwendung aus den Quellen (optional) rrenkert@415: -------------------------------------------------- rrenkert@415: rrenkert@415: Befehle zum Bauen der Anwendung aus den Quellen: rrenkert@415: rrenkert@415: $ cd /path/to/sources/ rrenkert@415: $ mvn clean compile package rrenkert@415: rrenkert@415: Das WAR-Archiv der Anwendung wird in dem Ordner 'target/' abgelegt. rrenkert@415: rrenkert@415: Installation des Pakets rrenkert@415: ----------------------- rrenkert@415: rrenkert@415: $ cd /opt/jboss-as-7.1.1.Final/standalone/deployments rrenkert@415: $ cp /path/where/the/war/file/is/lada.war . torsten@412: touch lada.war.dodeploy torsten@412: 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.