dustin@880: # Installation Lada-Client
dustin@880: 
dustin@880: Für allgemeine Informationen schauen Sie in die README Datei.
dustin@880: 
dustin@880: ## Installation
dustin@880: 
dustin@880: Für den Betrieb des Lada-Clients muss dieser innerhalb einer Webserver-Umgebung
dustin@880: installiert werden. Die folgenden Hinweise geben eine Kurze Anleitung zur
dustin@880: Installation eines Apache-Webserver.
dustin@880: 
dustin@880: Hinweis: Für den Betrieb einer vollständigen Installation ist neben dem
dustin@880: Klienten auch die Installation eines Servers und entsprechender Datenbank
dustin@880: notwendig. Für die Installation des Servers folgen Sie bitte den Hinweisen in
dustin@897: der README Datei des Server-Pakets.
dustin@897: Weitere Information finden Sie auf der Projektwebseite:
dustin@897: http://wald.intevation.org/projects/lada
dustin@880: 
dustin@880: Die folgenden Hinweise beziehen sich auf die Installation und Einrichtung auf
dustin@880: Basis eines Oracle-RedHat Linux Systems.
dustin@880: 
tom@948: Der Lada-Client ist eine Anwendung die auf dem Framework ExtJs 4.2.1
tom@948: (GPL-Version) basiert, welches mit `install-dependencies.sh` heruntergeladen
tom@948: und installiert wird.
dustin@896: 
dustin@896: 
dustin@886: ### Kompilieren und Minifizieren der Anwendung
dustin@880: 
dustin@896: Zum Kompilieren der Anwendung kommt das Tool Sencha Cmd 4.0.x zum Einsatz.
dustin@880: Mit Hilfe dieses Tools kann der Quellcode in eine einzelne Datei zusammengefasst
dustin@897: und minifiziert werden. Dies beschleunigt das Laden der Anwendung im Browser
dustin@897: erheblich
dustin@880: 
lechner@1273: Sencha bietet Sencha Cmd zum [Download](https://www.sencha.com/products/extjs/cmd-download/)
dustin@880: an. Beachten Sie: Sencha Cmd ist keine freie Software.
dustin@880: 
dustin@880: Die Fa. Sencha beschreibt die Installation von Sencha Cmd in der
dustin@880: [Dokumentation von ExtJs](http://docs.sencha.com/extjs/4.2.1/#!/guide/command)
dustin@880: 
dustin@886: Zur Installation von Sencha Cmd werden Ruby und Java benötigt.
dustin@886: 
dustin@886: Bevor Sie die Anwendung kompilieren können, müssen Sie die im Abschnitt
tom@948: *Lizenzen und Bibliotheken* genannten Bibliotheken mit
tom@948: `install-dependencies.sh` zum Projekt hinzufügen.
dustin@880: 
dustin@947: Um die Anwendung zu erzeugen und alle notwendigen Bibliotheken an den richtigen
dustin@947: Platz zu legen, passen Sie den Pfad zu SenchaCMD in der Datei `build.sh` an und
dustin@947: führen Sie das Shell-Skript aus.
dustin@947: Das Verzeichnis `lada-client-VERSIONSNUMMER` enthält dann eine Datei `index.html`
dustin@947: und eine Datei `lada.js`. Die Datei `lada.js` ist eine komprimierte Version der
dustin@947: Anwendung und enthält alle benötigten Klassen.
dustin@880: 
dustin@886: 
dustin@880: ### Installation Apache
dustin@880: Zunächst wird der Apache Webserver aus dem Repository installiert:
dustin@880: 
dustin@880: ```
dustin@880:     yum install httpd mod_ssl
dustin@880:     service httpd start
dustin@880: ```
dustin@880: 
dustin@880: ### Aktivierung der Apache Module
dustin@880: 
dustin@880: Die Konfiguration, welche Module beim Start des Apache geladen werden, erfolgt
dustin@880: in der Datei `/etc/httpd/conf`. Die zu ladende Module sind in dieser Datei mit
dustin@880: der Option `LoadModule` angegeben. Folgende Module werden benötigt:
dustin@880: 
tom@953:     * headers_module: Setzen der Header nach der Authentifizierung
dustin@897:     * proxy_module: Reverse Proxy des Apache zum Lada-Server
dustin@880: 
dustin@880: ### Einrichtung der Anwendung
dustin@880: 
dustin@880: Zunächst hinterlegen wir die Anwendung in dem Server. Hierzu verwenden wir die
dustin@880: gebaute Version, welche sich im `build` Ordner befindet.
dustin@880: 
dustin@880: ```
dustin@880: cd /var/www/html
dustin@880: mkdir lada
dustin@947: cp -r lada-client-VERSIONSNUMMER/* lada
dustin@880: ```
dustin@880: 
dustin@880: *Wichtig um SELinux dazu zu überreden das neue Verzeichnis auch zu servieren:*
dustin@880: 
dustin@880: ```
dustin@880: restorecon -Rv /var/www/html/
dustin@880: ```
dustin@880: 
dustin@880: Die Anwendung sollte nun bereits unter der Adresse `http://localhost/lada`
dustin@880: erreichbar sein.
dustin@880: 
dustin@888: Damit die Anwendung vollständig funktioniert, müssen ggfs. noch weitere
dustin@884: Bibliotheken hinzugefügt werden.
dustin@884: Dies wird im Abschnitt *Lizenzen und Bibliotheken* näher beschrieben
dustin@884: 
dustin@880: ### Konfiguration Proxy Server
dustin@880: 
dustin@880: Damit der Client eine Verbindung zu dem Server aufbauen kann, um von dort
dustin@880: Daten laden zu können, ist es notwendig den Server weiter zu konfigurieren.
dustin@880: 
dustin@880: ```
dustin@880:     togglesebool httpd_can_network_connect
dustin@880:     service httpd restart
dustin@880: ```
dustin@880: 
dustin@880: Dies erlaubt dem Apache grundsätzlich sich mit einem anderen Dienst zu verbinden.
dustin@942: 
tom@953: Nun muss noch ein Reverse-Proxy eingerichtet werden. Hierzu kann die Datei
tom@953: `custom-vhosts.conf` unter `/etc/httpd/conf.d/lada.conf` abgelegt werden.
tom@953: Die URL für den Lada-Server muss darin ggf. angepasst werden.
tom@953: Sollte aus dem Lada-Client heraus mittels PrintApp in mapfish-print gedruckt werden,
tom@953: so ist auch der zweite (in `custom-vhosts.conf` auskommentierte) Proxy
tom@953: notwendig.
tom@953: Die RequestHeader-Zeilen sind nur für ein Test-Setup ohne
tom@953: Shibboleth-Authentifizierung gedacht und müssen ansonsten entfernt werden.
dustin@880: 
dustin@880: ### Authentifizierung
dustin@880: 
dustin@949: Derzeit wird Authentifizierung durch Shibboleth gewährleistet. Dies wird
dustin@949: komplett durch den Webserver erledigt. Dieses muss daher entsprechen
dustin@949: konfiguriert werden. Die Anwendung selbst führt keine Authentifizierung mehr
dustin@949: durch.
dustin@949: Frühere Ansätze zur Authentifizierung nutzten OpenId oder LDAP
dustin@884: 
dustin@884: # Lizenzen und Bibliotheken
dustin@884: 
tom@948: Die Anwendung verwendet mehrere Unterkomponenten, die mit
tom@948: `install-dependencies.sh` in `resources/lib` installiert werden.
dustin@884: 
dustin@884: Folgende Bibliotheken werden neben ExtJs verwendet:
dustin@884: 
dustin@884:  * Filesaver.js
dustin@884:    https://github.com/eligrey/FileSaver.js
dustin@884:    MIT - License
dustin@884:  * Blob.js
dustin@884:    https://github.com/eligrey/Blob.js
dustin@884:    MIT - License
dustin@884:  * Openlayers 2.13.1
dustin@884:    http://www.openlayers.org
lechner@1273:    https://github.com/openlayers/ol2
dustin@884:    2-Clause BSD-License
dustin@886: 
tom@948: Diese werden in der `Index.html` referenziert.
dustin@886: 
tom@948: In `resources/lib/ext` werden Bibliotheken installiert, die ExtJs
tom@948: ergänzen und in der Datei `app.js` aufgeführt werden:
dustin@886: 
dustin@884:  * Ext.i18n.Bundle 0.3.3 (referenced as Ext.i18n in app.js)
dustin@884:    https://github.com/elmasse/Ext.i18n.Bundle/tree/v0.3.3
dustin@884:    MIT - License
dustin@884:  * Ext.ux.upload 1.1.1
dustin@884:    https://github.com/ivan-novakov/extjs-upload-widget/tree/1.1.1
dustin@884:    3-Clause BSD-License