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@880: dustin@886: Zum Kompilieren nutzen Sie die folgende Anweisung: dustin@880: dustin@880: ``` dustin@884: $PATHTOSENCHACMD --sdk-path $PATHTOEXTJS compile \ dustin@886: --classpath=app,resources/lib/ext/upload,resources/lib/ext/i18n page \ dustin@884: -yui -i index.html -o build/index.html dustin@880: ``` dustin@880: dustin@896: Ersetzen Sie heirbei `$PATHTOSENCHACMD` mit dem Pfad zu Ihrer Installation von dustin@897: Sencha Cmd. $PATHTOEXTJS gibt den Pfad an, an dem sich Ihre Kopie von ExtJs dustin@896: befindet. dustin@896: dustin@896: dustin@880: Das Verzeichnis `build` enthält dann eine Datei `index.html` und eine Datei dustin@880: `lada.js`. Die Datei `lada.js` ist eine komprimierte Version der Anwendung und dustin@880: enthält alle benötigten Klassen. dustin@880: Für die Produktivversion müssen die folgenden Dateien zusätzlich in das dustin@880: Verzeichnis `build` kopiert werden: dustin@880: dustin@880: | Quelldatei | Zieldatei | dustin@880: |--------------------------------------------------------|-------------------------------------------------------------| dustin@880: | extjs/resources/css/ext-all-gray.css | build/extjs/resources/css/ext-all-gray.css | dustin@880: | extjs/resources/ext-theme-gray/ext-theme-gray-all.css | build/extjs/resources/ext-theme-gray/ext-theme-gray-all.css | dustin@896: | resources/i18n/Lada.properties | build/resources/i18n/Lada.properties | dustin@896: | resources/i18n/Lada_de-DE.properties | build/resources/i18n/Lada_de-DE.properties | dustin@896: | resources/img/* | build/ressources/img* | dustin@896: | resources/lib/* (alles ausser ext Ordner) | build/resources/lib | dustin@880: dustin@880: dustin@897: Um OpenLayers als "Single File" Version bereit zu haben, gehen Sie in das dustin@897: Verzeichnis `build/resources/lib/OpenLayers` und führen Sie den folgenden Befehl dustin@897: aus: dustin@886: dustin@886: ``` dustin@886: python build.py dustin@886: ``` dustin@886: dustin@886: Dies erstellt eine Datei `OpenLayers.js` innerhalb des Verzeichnisses. dustin@886: Diese wird in der Webanwendung referenziert. 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@880: cp -r build/* 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@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.