rrenkert@7769: ===============================================================================
rrenkert@7769: Installation Dive4Elements-river
rrenkert@7769: ===============================================================================
rrenkert@7769: 
rrenkert@7769: Diese Anleitung geht davon aus, dass ein Benutzer 'd4euser' existiert, der
tom@8797: angemeldet ist und mit dem die Installation begonnen werden kann.
tom@8797: Kommandos, die mit dem Prefix '#' angegeben sind, müssen als Nutzer 'root'
tom@8797: ausgeführt werden, solche mit dem Prefix '$' als Nutzer 'd4euser' oder 'd4e'.
rrenkert@7769: 
tom@8797: Die Installationsanleitung wurde mit Debian jessie getestet.
rrenkert@7769: 
rrenkert@7769: Erforderliche Pakete zum Installieren von D4E-river
rrenkert@7769: ===================================================
rrenkert@7769:     $ su root
tom@8797:     # apt-get install tomcat7 postgresql-9.4-postgis-2.1 postgis \
rrenkert@7812:         apache2 cgi-mapserver ttf-freefont libapache2-mod-jk
rrenkert@7769: 
rrenkert@7769: 
rrenkert@7769: Benutzer und Verzeichnis für die Serverkomponente anlegen
rrenkert@7769: =========================================================
teichmann@7814:     # useradd -d /home/d4e d4e
teichmann@7814:     # cd /opt/
teichmann@7814:     # mkdir d4e-river
teichmann@7814:     # chown d4e d4e-river/
rrenkert@7769: 
rrenkert@7769: 
rrenkert@7769: Benutzer und Gruppe für das Logging anlegen
rrenkert@7769: ===========================================
teichmann@7814:     # groupadd d4e_log
teichmann@7814:     # usermod -a -G d4e_log d4e
tom@8797:     # usermod -a -G d4e_log tomcat7
teichmann@7814:     # usermod -a -G d4e_log www-data
rrenkert@7769: 
rrenkert@7769: 
rrenkert@7769: Anlegen des Logging Verzeichnisses
rrenkert@7769: ==================================
teichmann@7814:     # mkdir /var/log/d4e-river
teichmann@7814:     # chgrp d4e_log /var/log/d4e-river
teichmann@7814:     # chmod 775 /var/log/d4e-river
teichmann@7814:     # exit
rrenkert@7769: 
rrenkert@7769: 
tom@7786: Installation von D4E-river aus Binärpaket
tom@7786: =========================================
tom@7786: 
tom@8797: Installation der Intevationszertifikate für den Download von Wald
tom@8797: -----------------------------------------------------------------
tom@8797: Installation der Serverzertifikate von Intevation
tom@8797: (siehe auch https://ssl.intevation.de)
tom@8797: 
tom@8797:     # apt-get install gnutls-bin
tom@8797:     # wget -O - https://ssl.intevation.de/Intevation-Root-CA-2010.crt | \
tom@8797:         certtool -i |   awk '/^-----BEGIN CERTIFICATE-----$/ , 0' > \
tom@8797:         /usr/local/share/ca-certificates/Intevation-Root-CA-2010.crt
tom@8797:     # update-ca-certificates
tom@8797: 
tom@8797:     Als Nutzer 'd4e' herunterladen von
tom@8743:     - d4e-river-VERSION.tar.bz2
tom@8797:     - d4eriver-VERSION.war
tom@8743:     VERSION ist hier und im Folgenden durch die entsprechende
tom@8743:     Versionsbezeichnung im Paketnamen zu ersetzen.
teichmann@7874: 
tom@8797:     $ cd /opt/d4e-river
tom@8797:     $ tar xvjf d4e-river-VERSION.tar.bz2
teichmann@7874: 
teichmann@7874:     In das Verzeichnis /opt/d4e-river/dgm/ müssen noch die DGMs der
teichmann@7874:     Demo-Daten kopiert werden. (s.u.)
teichmann@7874: 
tom@8797:     # mv d4eriver-VERSION.war /var/lib/tomcat7/webapps/d4e-river.war
teichmann@7874: 
teichmann@7874:     Der Tomcat muss wie unten dokumentiert konfiguriert werden.
teichmann@7874:     Gleiches gilt für die MapServer-Installation.
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: 
tom@7786: Installation von D4E-river aus den Quellen
tom@7786: ==========================================
tom@7786: 
rrenkert@7769: Pakete zum Bauen von D4E-river
rrenkert@7769: ------------------------------
tom@7786:     $ su root
tom@8798:     # apt-get install openjdk-7-jdk maven2 mercurial
rrenkert@7769: 
rrenkert@7769: 
tom@7785: Installation der Intevationszertifikate für den Checkout von Wald
tom@7785: -----------------------------------------------------------------
tom@8511: Installation der Serverzertifikate von Intevation
tom@7785: (siehe auch https://ssl.intevation.de)
rrenkert@7769: 
tom@8797:     # apt-get install gnutls-bin
tom@8797:     # wget -O - 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
teichmann@7814:     # update-ca-certificates
rrenkert@7769: 
tom@7786: #. Mercurial beibringen die Zertifikate zu nutzen:
tom@7786:     # hierzu kann beispielsweise die Systemweite mercurial Konfiguration
tom@7786:     # editiert werden, z.B. mit dem Editor nano:
tom@7786:     $ nano /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: 
teichmann@7814:     # 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:     $ cd river/gwt-client/src/main/webapp/WEB-INF/
rrenkert@7769: 
rrenkert@7769: #. Mapfishprint config.yaml anpassen
rrenkert@7769: 
tom@7786:     $ nano config.yaml
rrenkert@7769: 
tom@7788:     Folgenden Eintrag im Abschnitt 'the list of allowed hosts' hinzufügen
tom@7788:     (darauf achten, dass die Einrückung mit den bestehenden Einträgen übereinstimmt):
rrenkert@7769: 
rrenkert@7769:     - !dnsMatch
teichmann@7814:       host: localhost # Hier den Hostnamen verwenden auf dem der MapServer läuft.
rrenkert@7769:       port: 8081 # Den entsprechenden Port eintragen.
rrenkert@7769: 
rrenkert@7769: 
rrenkert@7769: Konfigurieren des Logging
rrenkert@7769: -------------------------
tom@8511:     # Anpassungen des Loggings können für den Client in
tom@7783:     # river/gwt-client/src/main/webapp/WEB-INF/log4j.properties
tom@7783:     # und für den Server in river/artifacts/doc/conf/log4j.properties
tom@7783:     # vorgenommen werden
rrenkert@7769: 
rrenkert@7769: 
rrenkert@7769: Bauen der Server- und Clientkomponenten
rrenkert@7769: ---------------------------------------
tom@7788:     $ cd ~/d4e-river/framework
tom@7788:     $ mvn install
rrenkert@7769:     $ cd ../http-client/
tom@7788:     $ mvn install
rrenkert@7769:     $ cd ../river/backend/
tom@7788:     $ mvn install
rrenkert@7769:     $ cd ../artifacts/
tom@7788:     $ mvn 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/
tom@7788:     $ mvn package
rrenkert@7769: 
rrenkert@7769: 
rrenkert@7769: Kopieren der Serverkomponenten
rrenkert@7769: ------------------------------
rrenkert@7769:     $ su root
teichmann@7814:     # 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
tom@7788:     $ cp -R /home/d4euser/d4e-river/river/artifacts/doc/conf/* conf/
rrenkert@7769: 
rrenkert@7769: 
rrenkert@7769: Artefaktdatenbank erstellen
rrenkert@7769: ===========================
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: 
rrenkert@7769: 
rrenkert@7769: Datenkorbdatenbank erstellen
rrenkert@7769: ============================
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: 
rrenkert@7769: 
tom@8797: Client in Tomcat Servlet-Container ablegen
tom@8797: ==========================================
tom@8797:     # mv /home/d4euser/d4e-river/river/gwt-client/target/gwt-client-1.0-SNAPSHOT.war \
tom@8797:       /var/lib/tomcat7/webapps/d4e-river.war
tom@8797: 
tom@8797: 
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
teichmann@7814:     # su postgres
rrenkert@7769:     $ cd /home/d4euser/d4e-river/river/backend/doc/schema/
tom@8797:     $ ./postgresql-setup.sh
rrenkert@7769: 
tom@8743: #. bzw. bei Installation aus den Binaries:
tom@8743:     # su postgres
tom@8743:     $ cd /opt/d4e-river/schema
tom@8797:     $ ./postgresql-setup.sh
tom@8743: 
rrenkert@7769: #. Einspielen der Daten in die erstellte DB
tom@7788:     # Demodaten von www.dive4elements.org herunterladen und entpacken
tom@7788:     $ psql -d d4e -f /home/d4euser/d4e-river/demodaten/d4e_demodata.dump.sql
rrenkert@7769: 
tom@7788: #. Erstellen der SedDB
tom@7788:     $ createuser -S -D -R seddb
rrenkert@7769:     $ createdb seddb
tom@8797:     $ psql -c "ALTER USER seddb WITH PASSWORD 'seddb'"
tom@7788:     $ psql -U seddb -h localhost -f /home/d4euser/d4e-river/demodaten/seddb_demodata.dump.sql
rrenkert@7769: 
rrenkert@7769: 
rrenkert@7769: Kopieren der DGMs
rrenkert@7769: =================
teichmann@7814:     # su d4e
rrenkert@7769:     $ mkdir /opt/d4e-river/dgm
tom@7788:     $ cp /home/d4euser/d4e-river/demodaten/dem* /opt/d4e-river/dgm
rrenkert@7769: 
rrenkert@7769: 
rrenkert@7769: Einrichten von WSPLGEN
rrenkert@7769: ======================
rrenkert@7769: WSPLGEN kann als ausführbare Datei heruntergeladen werden
tom@7797: (https://wald.intevation.org/projects/wsplgen/). Die Datei muss
rrenkert@7769: dann nur noch in das 'bin' Verzeichnis des D4E-river Servers kopiert werden.
rrenkert@7769: 
teichmann@7814:     # su d4euser
tom@7797:     $ cd ~/d4e-river
teichmann@7814: 
teichmann@7814:   Für 64bit Systeme:
teichmann@7814: 
tom@7797:     $ wget https://wald.intevation.org/frs/download.php/1496/wsplgen-linux-64bit-static.gz
tom@7797:     $ gunzip wsplgen-linux-64bit-static.gz
tom@7797:     $ echo "16d60047aa114d69e9435dbbe56b6981b4e1c445  wsplgen-linux-64bit-static" | \
tom@7797:       sha1sum -c
rrenkert@7769:     $ su root
teichmann@7814:     # su d4e
tom@8797:     $ cp /home/d4euser/d4e-river/wsplgen-linux-64bit-static \
tom@8797:          /opt/d4e-river/bin/wsplgen
teichmann@7814:     $ chmod +x /opt/d4e-river/bin/wsplgen
teichmann@7814:     $ exit
teichmann@7814: 
teichmann@7814:   Für 32bit Systeme:
teichmann@7814: 
teichmann@7814:     $ wget https://wald.intevation.org/frs/download.php/1498/wsplgen-linux-32bit-static.gz
teichmann@7814:     $ gunzip wsplgen-linux-32bit-static.gz
teichmann@7814:     $ echo "aafd2b770ff8293d452ad3eb3321f2ed04f3f371  wsplgen-linux-32bit-static" | \
teichmann@7814:       sha1sum -c
teichmann@7814:     $ su root
teichmann@7814:     # su d4e
tom@8797:     $ cp /home/d4euser/d4e-river/wsplgen-linux-32bit-static \
tom@8797:          /opt/d4e-river/bin/wsplgen
teichmann@7814:     $ chmod +x /opt/d4e-river/bin/wsplgen
tom@7802:     $ exit
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: 
teichmann@7814:     # cd /usr/lib/cgi-bin/
teichmann@7814:     # cat > user-wms <<EOF
tom@7802: #!/bin/sh
tom@7802: export MS_MAPFILE=/opt/d4e-river/flys.map
teichmann@7814: exec ./mapserv
tom@7802: EOF
teichmann@7814:     # cat > river-wms <<EOF
tom@7802: #!/bin/sh
teichmann@7814: export MS_MAPFILE=/opt/d4e-river/rivers.map
teichmann@7814: exec ./mapserv
tom@7802: EOF
teichmann@7814:     # chmod 755 user-wms
teichmann@7814:     # chmod 755 river-wms
rrenkert@7769: 
rrenkert@7812: Der Apache wird für den Mapserver, sowie als Proxy für den im Tomcat
rrenkert@7812: laufenden d4e-river Client eingerichtet. Eine Beispielkonfiguration befindet
tom@8797: sich in doc/d4e-apache.conf. Folgende Schritte sind notwendig:
rrenkert@7769: 
tom@8797:     # cp /home/d4euser/d4e-river/river/doc/d4e-apache.conf \
tom@8797:          /etc/apache2/sites-available/
teichmann@7814:     # a2ensite d4e-apache.conf
teichmann@7814:     # a2enmod proxy_ajp
tom@8799:     # a2enmod cgi
teichmann@7814:     # sed -i s/80/8081/ /etc/apache2/ports.conf
teichmann@7814:     # service apache2 restart
rrenkert@7812: 
rrenkert@7812: In der Datei
tom@8797: /var/lib/tomcat7/conf/server.xml
rrenkert@7812: muss die Zeile
rrenkert@7812: 
rrenkert@7812:     <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
rrenkert@7812: 
tom@8797: einkommentiert bzw. aktiviert werden.
rrenkert@7769: 
tom@8797:    # /etc/init.d/tomcat7 restart
teichmann@7814: 
rrenkert@7769: Einrichtung der D4E-Benutzer und -Rollen
rrenkert@7769: ========================================
rrenkert@7769: #. Authentifizierung über lokale Datei
tom@8511: # Die Datei enthält durch Leerzeichen getrennt je Zeile
tom@7786: # Benutzer, Passwort und Gruppe
tom@8797:     # cd /usr/share/tomcat7/
teichmann@7814:     # cat > flys_user_file <<EOF
tom@7788: d4e_demo demo d4e_demo_all
tom@7788: d4e_demo1 demo
tom@7788: d4e_demo_extern demo d4e_demo_extern
tom@7788: EOF
rrenkert@7769: 
tom@8511: # Die Konfiguration der je Gruppe freigeschalteten Module und Gewässer
tom@7786: # befindet sich in river/gwt-client/src/main/webapp/WEB-INF/features.xml
tom@7786: 
tom@7786: 
rrenkert@7769: Starten der Serverkomponente
rrenkert@7769: ============================
tom@8798:     # apt-get install tmux
teichmann@7814:     # su d4e
rrenkert@7769:     $ cd /opt/d4e-river
teichmann@7814:     $ tmux new -s SERVER bin/run.sh
rrenkert@7769: 
rrenkert@7769: Die Anwendung ist dann im Browser unter
rrenkert@7769: 
teichmann@7814:     http://yourhost:8081/d4e-river
rrenkert@7769: 
rrenkert@7769: erreichbar.