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: dustin@897: Der Lada-Client ist eine Anwendung die auf dem Framework ExtJs 4.2.1 basiert, dustin@897: Damit der Client funktioniert müssen Sie dieses Framework herunterladen und dustin@896: entpacken. Dies kann direkt in das root-Verzeichnis des Lada-Clients geschehen. dustin@896: dustin@896: Für Applikationen die ebenfalls unter der GPL lizenziert wird - so wie der Lada dustin@897: Client - kann ExtJs als [GPL Version heruntergeladen](http://cdn.sencha.com/ext/gpl/ext-4.2.1-gpl.zip) dustin@896: werden. dustin@896: dustin@896: Legen Sie nach dem Entpacken einen Symlink auf dieses Verzeichnis an: dustin@896: dustin@896: ``` dustin@896: ln -s ext-4.2.1.883 extjs 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: dustin@880: 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 dustin@886: *Lizenzen und Bibliotheken* genannten Bibliotheken 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@896: dustin@896: 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: dustin@880: * headers_module: Setzten 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@880: Nun muss noch ein Reverse-Proxy eingerichtet werden. Dieser ist nur für dustin@880: bestimmte Adressen aktiv. dustin@880: dustin@942: Sollte aus dem Lada-Client heraus mittels PrintApp in mapfish-print gedruckt werden, dustin@942: so ist auch der zweite Proxy notwendig. dustin@942: dustin@880: Folgende Datei sollte unter `/etc/httpd/conf.d/lada.conf` angelegt werden: dustin@880: ``` dustin@880: dustin@880: ServerAdmin webmaster@localhost dustin@880: #ServerName dummy-host.example.com dustin@880: ErrorLog logs/lada-error_log dustin@880: CustomLog logs/lada-access_log common dustin@880: dustin@880: # Set multiple Proxys dustin@897: ProxyPass /lada/server http://LADASERVER/lada dustin@897: ProxyPassReverse /lada/server http://LADASERVER/lada dustin@942: # Add Printing dustin@942: ProxyPass /lada-client/lada-printer http://MAPFISH-PRINT-URL/lada_print dustin@942: ProxyPassReverse /lada-client/lada-printer http://MAPFISH-PRINT-URL/lada_print dustin@880: dustin@880: ``` dustin@897: Alle Anfragen an die Adresse `/lada/service`, werden nun an den Server dustin@897: weitergeleitet. dustin@880: dustin@880: ### Authentifizierung dustin@880: dustin@897: Die Authentifizierung geschieht derzeit gegen einen OpenID-Server. dustin@897: Früher Ansätze nutzten LDAP, in Zukunft soll auch Authentifizierung via SAML2 dustin@897: möglich sein. dustin@880: dustin@880: Der Lada-Client leitet in Zusammenarbeit mit dem Server automatisch an diesen weiter. dustin@884: dustin@884: # Lizenzen und Bibliotheken dustin@884: dustin@884: Die Anwendung verwendet mehrere Unterkomponenten, diese sind typischerweise im dustin@886: Ordner `resources/lib` zu finden. 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 dustin@884: https://github.com/openlayers/openlayers dustin@884: 2-Clause BSD-License dustin@886: dustin@886: Diese sind im Ordner `resources/lib` zu finden, und werden in der `Index.html` dustin@886: referenziert. dustin@886: dustin@886: Im Ordner resources/lib/ext befinden sich Bibliotheken die ExtJs ergänzen und in dustin@886: 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 dustin@884: dustin@884: dustin@884: ## Installation der Bibliotheken dustin@884: dustin@884: Die aufgeführten Bibliotheken können über den Link zu Github als zip-Datei dustin@884: heruntergeladen werden. dustin@884: dustin@897: Dabei ist auf die korrekte Versionsnummer zu achten, falls dies in der Liste dustin@884: oben angegeben wurde. dustin@884: dustin@884: ``` dustin@884: cd /var/www/html/lada/resources/ dustin@884: mkdir lib/ dustin@884: cd lib dustin@884: wget https://github.com/eligrey/FileSaver.js/archive/master.zip -O FileSaver-js.zip dustin@884: wget https://github.com/eligrey/Blob.js/archive/master.zip -O Blob-js.zip dustin@884: wget https://github.com/openlayers/openlayers/archive/release-2.13.1.zip -O OpenLayers-2-13-1.zip dustin@886: dustin@886: mkdir ext dustin@886: cd ext dustin@884: wget https://github.com/elmasse/Ext.i18n.Bundle/archive/v0.3.3.zip -O Ext-i18n-Bundle-v0-3-3.zip dustin@884: wget https://github.com/ivan-novakov/extjs-upload-widget/archive/1.1.1.zip -O Ext-ux-Upload-1-1-1.zip dustin@884: ``` dustin@884: dustin@884: Die Dateien sind im Ordner `resources/lib/` zu entpacken dustin@884: dustin@947: Um OpenLayers als "Single File" Version bereit zu haben, gehen Sie in das dustin@947: Verzeichnis `build/resources/lib/OpenLayers` und führen Sie den folgenden Befehl dustin@947: aus: dustin@947: dustin@947: ``` dustin@947: python build.py dustin@947: ``` dustin@947: dustin@947: Dies erstellt eine Datei `OpenLayers.js` innerhalb des Verzeichnisses. dustin@947: dustin@947: dustin@884: ``` dustin@886: cd .. dustin@884: unzip FileSaver-js.zip dustin@884: unzip Blob-js.zip dustin@884: unzip OpenLayers-2-13-1.zip dustin@886: dustin@886: cd ext dustin@884: unzip Ext-i18n-Bundle-v0-3-3.zip dustin@884: unzip Ext-ux-Upload-1-1-1.zip dustin@884: ``` dustin@884: dustin@884: Zum einfacheren Zugriff auf die Bibliothek, symbolische Links erstellen. dustin@897: Dies ist praktisch wenn die Bibliothek ausgetauscht wird, dustin@884: dann müssen die Quelltexte nicht angepasst werden dustin@884: dustin@884: ``` dustin@886: cd .. dustin@884: ln -s Blob.js-master Blob dustin@884: ln -s FileSaver.js-master FileSaver dustin@886: ln -s openlayers-release-2.13.1/build OpenLayers dustin@886: dustin@886: cd ext dustin@884: ln -s Ext.i18n.Bundle-0.3.3/i18n i18n dustin@884: ln -s extjs-upload-widget-1.1.1/lib/upload upload dustin@884: ``` dustin@884: dustin@884: Somit ist die Installation der Bibliotheken abgeschlossen.