rrenkert@7769: =============================================================================== rrenkert@7769: Installation Dive4Elements-river rrenkert@7769: =============================================================================== rrenkert@7769: rrenkert@7769: Diese Anleitung geht davon aus, dass ein Benutzer 'd4euser' existiert, der rrenkert@7769: angemeldet ist und mit dem die Schritte der Installation durchgeführt werden. rrenkert@7769: tom@7776: Die Installationsanleitung wurde mit Debian wheezy getestet. Die Versionen tom@7776: der im nächsten Schritt installierten Pakete waren zu diesem Zeitpunkt: tom@7776: _ openjdk-7-jdk 7u25-2.3.10-1~deb7u1 tom@7776: _ tomcat6 6.0.35-6+deb7u1 tom@7776: _ postgresql-9.1-postgis 1.5.3-2 tom@7776: _ apache2 2.2.22-13+deb7u1 tom@7776: _ cgi-mapserver 6.0.1-3.2+deb7u2 tom@7776: _ ttf-freefont 20120503-1 tom@7776: Für die Installation aus den Quellen: tom@7776: _ maven2 2.2.1-12 tom@7776: _ mercurial 2.2.2-3 tom@7776: _ subversion 1.6.17dfsg-4+deb7u4 tom@7776: _ build-essential 11.5 rrenkert@7769: rrenkert@7769: Erforderliche Pakete zum Installieren von D4E-river rrenkert@7769: =================================================== rrenkert@7769: $ su root tom@7776: $ apt-get install openjdk-7-jdk tomcat6 postgresql-9.1-postgis \ tom@7776: apache2 cgi-mapserver ttf-freefont rrenkert@7769: rrenkert@7769: rrenkert@7769: Benutzer und Verzeichnis für die Serverkomponente anlegen rrenkert@7769: ========================================================= rrenkert@7769: $ useradd d4e rrenkert@7769: $ cd /opt/ rrenkert@7769: $ mkdir d4e-river rrenkert@7769: $ chown d4e d4e-river/ rrenkert@7769: rrenkert@7769: rrenkert@7769: Benutzer und Gruppe für das Logging anlegen rrenkert@7769: =========================================== rrenkert@7769: $ su root rrenkert@7769: $ groupadd d4e_log rrenkert@7769: $ usermod -a -G d4e_log d4e rrenkert@7769: $ usermod -a -G d4e_log tomcat6 rrenkert@7769: $ usermod -a -G d4e_log www-data rrenkert@7769: rrenkert@7769: rrenkert@7769: Anlegen des Logging Verzeichnisses rrenkert@7769: ================================== rrenkert@7769: $ mkdir /var/log/d4e-river rrenkert@7769: $ chgrp d4e_log /var/log/d4e-river rrenkert@7769: $ chmod 775 /var/log/d4e-river rrenkert@7769: $ exit rrenkert@7769: rrenkert@7769: rrenkert@7769: Entpacken des Dive4Elements-river Installer-Pakets rrenkert@7769: ================================================== rrenkert@7769: $ tar -xzf d4e-river.tar.gz rrenkert@7769: @TODO: eventuell anpassen rrenkert@7769: rrenkert@7769: rrenkert@7769: Installation von D4E-river aus den Quellen rrenkert@7769: ========================================== rrenkert@7769: Erfolgt die Installation von D4E-river aus den Binärpaketen, können die rrenkert@7769: folgenden Schritte übersprungen werden. rrenkert@7769: Die weiteren Schritte sind ab dem Abschnitt 'Backenddatenbanken' rrenkert@7769: beschrieben. rrenkert@7769: rrenkert@7769: rrenkert@7769: Pakete zum Bauen von D4E-river rrenkert@7769: ------------------------------ tom@7776: $ apt-get install maven2 mercurial rrenkert@7769: rrenkert@7769: rrenkert@7769: Pakete zum Bauen von WSPLGEN rrenkert@7769: ---------------------------- tom@7776: $ apt-get install subversion build-essential rrenkert@7769: rrenkert@7769: rrenkert@7769: Installation der Intevationszertifikate für den Checkout von Wald. rrenkert@7769: ------------------------------------------------------------------ rrenkert@7769: Die Serverzertifikate von Intevation müssen für die Kommunikation mit rrenkert@7769: wald.intevation.org installiert werden, da sonst ein checkout der rrenkert@7769: hg-Repositories nicht möglich ist. rrenkert@7769: Siehe auch Anleitung im Intranet: rrenkert@7769: https://intranet.intevation.de/SSL-Zertifikate#system rrenkert@7769: rrenkert@7769: $ apt-get install ca-certificates curl gnutls-bin rrenkert@7769: $ curl https://ssl.intevation.de/Intevation-Root-CA-2010.crt | \ rrenkert@7769: certtool -i | awk '/^-----BEGIN CERTIFICATE-----$/ , 0' > \ rrenkert@7769: /usr/local/share/ca-certificates/Intevation-Root-CA-2010.crt rrenkert@7769: $ update-ca-certificates rrenkert@7769: rrenkert@7769: #. Mercurial beibringen die Zertifikate zu nutzen rrenkert@7769: $ vi /etc/mercurial/hgrc rrenkert@7769: rrenkert@7769: # Folgendes einfügen (siehe https://intranet.intevation.de/Mercurial#https) rrenkert@7769: [web] rrenkert@7769: cacerts = /etc/ssl/certs/ca-certificates.crt rrenkert@7769: rrenkert@7769: $ exit (d4euser werden) rrenkert@7769: rrenkert@7769: rrenkert@7769: Checkout der D4E-Quellen rrenkert@7769: ------------------------ rrenkert@7769: $ mkdir d4e-river rrenkert@7769: $ cd d4e-river rrenkert@7769: $ hg clone https://scm.wald.intevation.org/hg/dive4elements/framework/ rrenkert@7769: $ hg clone https://scm.wald.intevation.org/hg/dive4elements/http-client/ rrenkert@7769: $ hg clone https://scm.wald.intevation.org/hg/dive4elements/river/ rrenkert@7769: rrenkert@7769: rrenkert@7769: Anpassen der Clientkonfiguration rrenkert@7769: -------------------------------- rrenkert@7769: #. Rollen und Berechtigungen rrenkert@7769: rrenkert@7769: $ cd river/gwt-client/src/main/webapp/WEB-INF/ rrenkert@7769: $ vi features.xml rrenkert@7769: rrenkert@7769: Den Inhalt mit folgendem ersetzen: rrenkert@7769: rrenkert@7769: rrenkert@7769: rrenkert@7769: rrenkert@7769: module:winfo rrenkert@7769: module:minfo rrenkert@7769: module:new_map rrenkert@7769: module:new_chart rrenkert@7769: module:fixanalysis rrenkert@7769: river:Beispielfluss rrenkert@7769: rrenkert@7769: rrenkert@7769: module:winfo rrenkert@7769: module:minfo rrenkert@7769: river:Beispielfluss rrenkert@7769: rrenkert@7769: rrenkert@7769: rrenkert@7769: #. Ändern der Authentifizierung von GGinA auf plain (lokal) rrenkert@7769: rrenkert@7769: $ vi web.xml rrenkert@7769: rrenkert@7769: Ändern der Konfiguration von: rrenkert@7769: rrenkert@7769: rrenkert@7769: authentication rrenkert@7769: GGinA rrenkert@7769: rrenkert@7769: rrenkert@7769: in: rrenkert@7769: rrenkert@7769: rrenkert@7769: authentication rrenkert@7769: plain rrenkert@7769: rrenkert@7769: rrenkert@7769: #. Die Print-URL anpassen rrenkert@7769: rrenkert@7769: $ vi web.xml rrenkert@7769: rrenkert@7769: rrenkert@7769: rrenkert@7769: MapPrintService rrenkert@7769: org.dive4elements.river.client.server.MapPrintServiceImpl rrenkert@7769: rrenkert@7769: config rrenkert@7769: WEB-INF/config.yaml rrenkert@7769: rrenkert@7769: rrenkert@7769: print-url rrenkert@7769: rrenkert@7769: http://localhost:8080/d4e/flys/mapfish-print rrenkert@7769: rrenkert@7769: rrenkert@7769: rrenkert@7769: #. Mapfishprint config.yaml anpassen rrenkert@7769: rrenkert@7769: $ vi config.yaml rrenkert@7769: rrenkert@7769: Folgenden Eintrag im Abschnitt 'the list of allowed hosts' hinzufügen: rrenkert@7769: rrenkert@7769: - !dnsMatch rrenkert@7769: host: menippe # Hier den Hostnamen verwenden auf dem der MapServer läuft. rrenkert@7769: port: 8081 # Den entsprechenden Port eintragen. rrenkert@7769: rrenkert@7769: rrenkert@7769: Anpassen der Serverkonfiguration rrenkert@7769: -------------------------------- rrenkert@7769: $ cd ~/de4-river/river/artifacts/doc/conf/ rrenkert@7769: rrenkert@7769: #. Pfad zu den DGMs anpassen: rrenkert@7769: $ vi conf.xml rrenkert@7769: ${artifacts.config.dir}/../dgm/ rrenkert@7769: rrenkert@7769: #. Einstellen der WMS Urls rrenkert@7769: # Anstatt mennippe:8081 den korrekten Host eintragen! rrenkert@7769: $ vi rivermap.xml rrenkert@7769: # Den Inhalt durch folgendes ersetzen rrenkert@7769: rrenkert@7769: rrenkert@7769: rrenkert@7769: rrenkert@7769: rrenkert@7769: rrenkert@7769: rrenkert@7769: rrenkert@7769: rrenkert@7769: rrenkert@7769: rrenkert@7769: rrenkert@7769: rrenkert@7769: rrenkert@7769: rrenkert@7769: rrenkert@7769: rrenkert@7769: rrenkert@7769: rrenkert@7769: rrenkert@7769: rrenkert@7769: rrenkert@7769: $ vi floodmap.xml rrenkert@7769: # Den Inhalt durch folgendes ersetzen rrenkert@7769: rrenkert@7769: rrenkert@7769: rrenkert@7769: rrenkert@7769: rrenkert@7769: rrenkert@7769: rrenkert@7769: rrenkert@7769: rrenkert@7769: rrenkert@7769: rrenkert@7769: rrenkert@7769: rrenkert@7769: rrenkert@7769: rrenkert@7769: rrenkert@7769: rrenkert@7769: rrenkert@7769: rrenkert@7769: rrenkert@7769: rrenkert@7769: rrenkert@7769: rrenkert@7769: Konfigurieren des Logging rrenkert@7769: ------------------------- rrenkert@7769: #. Pfade in den log4j.properties anpassen rrenkert@7769: rrenkert@7769: $ vi river/gwt-client/src/main/webapp/WEB-INF/log4j.properties rrenkert@7769: rrenkert@7769: # Die Zeile rrenkert@7769: rrenkert@7769: log4j.appender.FLYS.File=/tmp/flys-client.log rrenkert@7769: rrenkert@7769: # ändern in: rrenkert@7769: rrenkert@7769: log4j.appender.FLYS.File=/var/log/d4e-river/d4e-client.log rrenkert@7769: rrenkert@7769: $ vi river/artifacts/doc/conf/log4j.properties rrenkert@7769: rrenkert@7769: # Den Inhalt mit folgendem ersetzen: rrenkert@7769: rrenkert@7769: # Set root logger level to DEBUG and its only appender to A1. rrenkert@7769: log4j.rootLogger=DEBUG, A1 rrenkert@7769: rrenkert@7769: # A1 uses PatternLayout. rrenkert@7769: log4j.appender.A1.layout=org.apache.log4j.PatternLayout rrenkert@7769: log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c - %m%n rrenkert@7769: rrenkert@7769: log4j.appender.A1=org.apache.log4j.RollingFileAppender rrenkert@7769: log4j.appender.A1.File=/var/log/d4e-river/d4e-server.log rrenkert@7769: log4j.appender.A1.MaxFileSize=5000KB rrenkert@7769: log4j.appender.A1.MaxBackupIndex=3 rrenkert@7769: rrenkert@7769: rrenkert@7769: Bauen der Server- und Clientkomponenten rrenkert@7769: --------------------------------------- rrenkert@7769: $ cd framework/ rrenkert@7769: $ mvn clean compile package install rrenkert@7769: $ cd ../http-client/ rrenkert@7769: $ mvn clean compile package install rrenkert@7769: $ cd ../river/backend/ rrenkert@7769: $ mvn clean compile package install rrenkert@7769: $ cd ../artifacts/ rrenkert@7769: $ mvn clean compile package dependency:copy-dependencies rrenkert@7769: $ cd ../gwt-client/ rrenkert@7769: $ curl -O http://openlayers.org/download/OpenLayers-2.11.tar.gz rrenkert@7769: $ tar xvfz OpenLayers-2.11.tar.gz rrenkert@7769: $ mv OpenLayers-2.11 src/main/webapp/ rrenkert@7769: $ mvn clean compile package rrenkert@7769: $ cd ../../ rrenkert@7769: rrenkert@7769: rrenkert@7769: Kopieren der Serverkomponenten rrenkert@7769: ------------------------------ rrenkert@7769: $ su root rrenkert@7769: $ su d4e rrenkert@7769: $ cd /opt/d4e-river/ rrenkert@7769: $ mkdir -p bin/lib rrenkert@7769: $ cp /home/d4euser/d4e-river/river/artifacts/target/river-artifacts-1.0-SNAPSHOT.jar bin/lib/ rrenkert@7769: $ cp /home/d4euser/d4e-river/river/artifacts/target/dependency/* bin/lib/ rrenkert@7769: $ mkdir conf rrenkert@7769: $ cp /home/d4euser/d4e-river/framework/artifact-database/doc/example-conf/log4j.properties conf/ rrenkert@7769: $ cp -R ../river/artifacts/doc/conf/* conf/ rrenkert@7769: rrenkert@7769: rrenkert@7769: Artefaktdatenbank erstellen rrenkert@7769: =========================== rrenkert@7769: $ su root rrenkert@7769: $ su d4e rrenkert@7769: $ cd /opt/d4e-river/ rrenkert@7769: $ /home/d4euser/d4e-river/river/contrib/make_flys_release/h2/createArtifacts.sh \ rrenkert@7769: /home/d4euser/d4e-river/framework/artifact-database/doc/schema-h2.sql rrenkert@7769: $ exit rrenkert@7769: $ exit rrenkert@7769: rrenkert@7769: rrenkert@7769: Datenkorbdatenbank erstellen rrenkert@7769: ============================ rrenkert@7769: $ su root rrenkert@7769: $ su d4e rrenkert@7769: $ cd /opt/d4e-river/ rrenkert@7769: $ /home/d4euser/d4e-river/river/contrib/make_flys_release/h2/createDatacage.sh \ rrenkert@7769: /home/d4euser/d4e-river/river/artifacts/doc/conf/datacage.sql rrenkert@7769: $ exit rrenkert@7769: $ exit rrenkert@7769: rrenkert@7769: rrenkert@7769: Backenddatenbanken (Fachdatenbank und Seddb) rrenkert@7769: ============================================ rrenkert@7769: rrenkert@7769: Anlegen und befüllen der Datenbanken rrenkert@7769: ------------------------------------ rrenkert@7769: #. Einspielen des Schemas für die Backenddatenbank rrenkert@7769: $ su root rrenkert@7769: $ su postgres rrenkert@7769: $ cd /home/d4euser/d4e-river/river/backend/doc/schema/ rrenkert@7769: $ ./postgresql-setup.sh d4e . localhost rrenkert@7769: rrenkert@7769: #. Einspielen der Daten in die erstellte DB rrenkert@7769: $ psql -d d4e -f /home/d4euser/d4e-river/d4e_demodata.dump.sql rrenkert@7769: rrenkert@7769: #. Erstellen der Seddb rrenkert@7769: $ createuser -S -D -R sedb rrenkert@7769: $ createdb seddb rrenkert@7769: $ psql -d seddb -c "ALTER USER sedb WITH PASSWORD 'sedb';" rrenkert@7769: $ psql -d seddb -U sedb -h localhost -f /home/d4euser/d4e-river/seddb.dump.sql rrenkert@7769: rrenkert@7769: #. wieder d4euser werden rrenkert@7769: $ exit rrenkert@7769: $ exit rrenkert@7769: rrenkert@7769: rrenkert@7769: Konfiguration der Datenbankverbindungen rrenkert@7769: --------------------------------------- rrenkert@7769: #. Anpassen des Benutzers und des Datenbanknames rrenkert@7769: $ su root rrenkert@7769: $ su d4e rrenkert@7769: $ cd /opt/d4e-river/conf/ rrenkert@7769: $ sed -i s@flys@d4e@ backend-db.xml rrenkert@7769: rrenkert@7769: rrenkert@7769: Kopieren der DGMs rrenkert@7769: ================= rrenkert@7769: $ su root rrenkert@7769: $ su d4e rrenkert@7769: $ mkdir /opt/d4e-river/dgm rrenkert@7769: $ cp /home/d4euser/d4e-river/dgm/* /opt/d4e-river/dgm rrenkert@7769: rrenkert@7769: rrenkert@7769: Einrichten von WSPLGEN rrenkert@7769: ====================== rrenkert@7769: rrenkert@7769: Bauen von WSPLGEN aus den Quellen rrenkert@7769: --------------------------------- rrenkert@7769: Die Quellen und die Dokumentation von WSPLGEN sind zu finden unter rrenkert@7769: rrenkert@7769: https://wald.intevation.org/projects/wsplgen/ rrenkert@7769: rrenkert@7769: Das nach der Anleitung erstellte Binary muss in das 'bin' Verzeichnis des rrenkert@7769: D4E-river Servers kopiert werden. rrenkert@7769: rrenkert@7769: $ su root rrenkert@7769: $ su d4e rrenkert@7769: $ cp /path/to/wsplgen.exe /opt/d4e-river/bin rrenkert@7769: rrenkert@7769: rrenkert@7769: WSPLGEN Binary rrenkert@7769: -------------- rrenkert@7769: WSPLGEN kann als ausführbare Datei heruntergeladen werden rrenkert@7769: (https://wald.intevation.org/projects/wsplgen/). Die Datei 'wsplgen.exe' muss rrenkert@7769: dann nur noch in das 'bin' Verzeichnis des D4E-river Servers kopiert werden. rrenkert@7769: rrenkert@7769: $ su root rrenkert@7769: $ su d4e rrenkert@7769: $ cp /path/to/wsplgen.exe /opt/d4e-river/bin rrenkert@7769: rrenkert@7769: rrenkert@7769: Einrichten des Mapserver und Apache rrenkert@7769: =================================== rrenkert@7769: #. Anlegen der cgi-Skripte für die WMS-Dienste rrenkert@7769: rrenkert@7769: $ su root rrenkert@7769: $ cd /usr/lib/cgi-bin/ rrenkert@7769: $ touch user-wms rrenkert@7769: $ vi user-wms rrenkert@7769: # folgendes einfügen: rrenkert@7769: #!/bin/sh rrenkert@7769: export MS_MAPFILE=/opt/d4e-river/flys.map rrenkert@7769: ./mapserv rrenkert@7769: $ touch river-wms rrenkert@7769: $ vi river-wms rrenkert@7769: # folgendes einfügen: rrenkert@7769: #!/bin/sh rrenkert@7769: export MS_MAPFILE=/home/d4e-river/rivers.map rrenkert@7769: ./mapserv rrenkert@7769: $ chmod 755 user-wms rrenkert@7769: $ chmod 755 river-wms rrenkert@7769: $ exit rrenkert@7769: rrenkert@7769: #. Der Apache ist vorkonfiguriert und braucht keine weitere Anpassung. rrenkert@7769: rrenkert@7769: rrenkert@7769: Einrichtung der D4E-Benutzer und -Rollen rrenkert@7769: ======================================== rrenkert@7769: #. Authentifizierung über lokale Datei rrenkert@7769: $ su root rrenkert@7769: $ cd /usr/share/tomcat6/ rrenkert@7769: $ touch flys_user_file rrenkert@7769: $ vi flys_user_file rrenkert@7769: # folgendes einfügen: rrenkert@7769: d4e_demo demo d4e_demo_all rrenkert@7769: d4e_demo1 demo rrenkert@7769: d4e_demo_extern demo d4e_demo_extern rrenkert@7769: $ exit rrenkert@7769: rrenkert@7769: Anlegen des Start-Skripts rrenkert@7769: ============================ rrenkert@7769: $ su root rrenkert@7769: $ su d4e rrenkert@7769: $ cp /home/d4euser/d4e-river/river/contrib/make_flys_release/bin/run.sh /opt/d4e-river/bin/ rrenkert@7769: $ exit rrenkert@7769: $ exit rrenkert@7769: rrenkert@7769: Client in Tomcat Servlet-Container ablegen rrenkert@7769: ========================================== rrenkert@7769: $ su root rrenkert@7769: $ cp /home/d4euser/d4e-river/river/gwt-client/target/gwt-client-1.0-SNAPSHOT.war /var/lib/tomcat6/webapps/d4e-river.war rrenkert@7769: $ chown tomcat6 /var/lib/tomcat6/webapps/d4e-river.war rrenkert@7769: $ exit rrenkert@7769: rrenkert@7769: Starten der Serverkomponente rrenkert@7769: ============================ rrenkert@7769: $ su root rrenkert@7769: $ su d4e rrenkert@7769: $ cd /opt/d4e-river rrenkert@7769: $ bin/run.sh rrenkert@7769: rrenkert@7769: Die Anwendung ist dann im Browser unter rrenkert@7769: rrenkert@7769: http://servername:8080/d4e-river rrenkert@7769: rrenkert@7769: erreichbar.