view doc/INSTALL_DE @ 7776:b972c7e1bfbe

INSTALL_DE: mention tested system and simplify dependency installation.
author Tom Gottfried <tom@intevation.de>
date Tue, 04 Mar 2014 17:42:31 +0100
parents 887795bbe854
children abf3cb9cb6c4
line wrap: on
line source
===============================================================================
Installation Dive4Elements-river
===============================================================================

Diese Anleitung geht davon aus, dass ein Benutzer 'd4euser' existiert, der
angemeldet ist und mit dem die Schritte der Installation durchgeführt werden.

Die Installationsanleitung wurde mit Debian wheezy getestet. Die Versionen
der im nächsten Schritt installierten Pakete waren zu diesem Zeitpunkt:
_ openjdk-7-jdk 7u25-2.3.10-1~deb7u1
_ tomcat6 6.0.35-6+deb7u1
_ postgresql-9.1-postgis 1.5.3-2
_ apache2 2.2.22-13+deb7u1
_ cgi-mapserver 6.0.1-3.2+deb7u2
_ ttf-freefont 20120503-1
Für die Installation aus den Quellen:
_ maven2 2.2.1-12
_ mercurial 2.2.2-3
_ subversion 1.6.17dfsg-4+deb7u4
_ build-essential 11.5

Erforderliche Pakete zum Installieren von D4E-river
===================================================
    $ su root
    $ apt-get install openjdk-7-jdk tomcat6 postgresql-9.1-postgis \
        apache2 cgi-mapserver ttf-freefont


Benutzer und Verzeichnis für die Serverkomponente anlegen
=========================================================
    $ useradd d4e
    $ cd /opt/
    $ mkdir d4e-river
    $ chown d4e d4e-river/


Benutzer und Gruppe für das Logging anlegen
===========================================
    $ su root
    $ groupadd d4e_log
    $ usermod -a -G d4e_log d4e
    $ usermod -a -G d4e_log tomcat6
    $ usermod -a -G d4e_log www-data


Anlegen des Logging Verzeichnisses
==================================
    $ mkdir /var/log/d4e-river
    $ chgrp d4e_log /var/log/d4e-river
    $ chmod 775 /var/log/d4e-river
    $ exit


Entpacken des Dive4Elements-river Installer-Pakets
==================================================
    $ tar -xzf d4e-river.tar.gz
    @TODO: eventuell anpassen


Installation von D4E-river aus den Quellen
==========================================
Erfolgt die Installation von D4E-river aus den Binärpaketen, können die
folgenden Schritte übersprungen werden.
Die weiteren Schritte sind ab dem Abschnitt 'Backenddatenbanken'
beschrieben.


Pakete zum Bauen von D4E-river
------------------------------
    $ apt-get install maven2 mercurial


Pakete zum Bauen von WSPLGEN
----------------------------
    $ apt-get install subversion build-essential


Installation der Intevationszertifikate für den Checkout von Wald.
------------------------------------------------------------------
Die Serverzertifikate von Intevation müssen für die Kommunikation mit
wald.intevation.org installiert werden, da sonst ein checkout der
hg-Repositories nicht möglich ist.
Siehe auch Anleitung im Intranet:
  https://intranet.intevation.de/SSL-Zertifikate#system

    $ apt-get install ca-certificates curl gnutls-bin
    $ curl https://ssl.intevation.de/Intevation-Root-CA-2010.crt | \
        certtool -i |   awk '/^-----BEGIN CERTIFICATE-----$/ , 0' > \
        /usr/local/share/ca-certificates/Intevation-Root-CA-2010.crt
    $ update-ca-certificates

#. Mercurial beibringen die Zertifikate zu nutzen
    $ vi /etc/mercurial/hgrc

    # Folgendes einfügen (siehe https://intranet.intevation.de/Mercurial#https)
    [web]
    cacerts = /etc/ssl/certs/ca-certificates.crt

    $ exit (d4euser werden)


Checkout der D4E-Quellen
------------------------
    $ mkdir d4e-river
    $ cd d4e-river
    $ hg clone https://scm.wald.intevation.org/hg/dive4elements/framework/
    $ hg clone https://scm.wald.intevation.org/hg/dive4elements/http-client/
    $ hg clone https://scm.wald.intevation.org/hg/dive4elements/river/


Anpassen der Clientkonfiguration
--------------------------------
#. Rollen und Berechtigungen

    $ cd river/gwt-client/src/main/webapp/WEB-INF/
    $ vi features.xml

    Den Inhalt mit folgendem ersetzen:

    <?xml version="1.0" encoding="UTF-8"?>
    <ftr:features xmlns:ftr="http://www.intevation.de/2012/flys/features">
        <ftr:role name="d4e_demo_all">
            <ftr:feature>module:winfo</ftr:feature>
            <ftr:feature>module:minfo</ftr:feature>
            <ftr:feature>module:new_map</ftr:feature>
            <ftr:feature>module:new_chart</ftr:feature>
            <ftr:feature>module:fixanalysis</ftr:feature>
            <ftr:feature>river:Beispielfluss</ftr:feature>
        </ftr:role>
        <ftr:role name="d4e_demo_extern">
            <ftr:feature>module:winfo</ftr:feature>
            <ftr:feature>module:minfo</ftr:feature>
            <ftr:feature>river:Beispielfluss</ftr:feature>
        </ftr:role>
    </ftr:features>

#. Ändern der Authentifizierung von GGinA auf plain (lokal)

    $ vi web.xml

    Ändern der Konfiguration von:

    <context-param>
        <param-name>authentication</param-name>
        <param-value>GGinA</param-value>
    </context-param>

    in:

    <context-param>
        <param-name>authentication</param-name>
        <param-value>plain</param-value>
    </context-param>

#. Die Print-URL anpassen

    $ vi web.xml

    <!-- Servlet to bridge between MapFish Print and FLYS3 -->
    <servlet>
      <servlet-name>MapPrintService</servlet-name>
      <servlet-class>org.dive4elements.river.client.server.MapPrintServiceImpl</servlet-class>
      <init-param>
        <param-name>config</param-name>
        <param-value>WEB-INF/config.yaml</param-value>
      </init-param>
      <init-param>
        <param-name>print-url</param-name>
        <!-- Hier die URL zu dem Tomcat6 Container angeben. -->
        <param-value>http://localhost:8080/d4e/flys/mapfish-print</param-value>
      </init-param>
    </servlet>

#. Mapfishprint config.yaml anpassen

    $ vi config.yaml

    Folgenden Eintrag im Abschnitt 'the list of allowed hosts' hinzufügen:

    - !dnsMatch
      host: menippe # Hier den Hostnamen verwenden auf dem der MapServer läuft.
      port: 8081 # Den entsprechenden Port eintragen.


Anpassen der Serverkonfiguration
--------------------------------
    $ cd ~/de4-river/river/artifacts/doc/conf/

#. Pfad zu den DGMs anpassen:
    $ vi conf.xml
        <dgm-path>${artifacts.config.dir}/../dgm/</dgm-path>

#. Einstellen der WMS Urls
    # Anstatt mennippe:8081 den korrekten Host eintragen!
    $ vi rivermap.xml
    # Den Inhalt durch folgendes ersetzen

    <?xml version="1.0" encoding="UTF-8" ?>
    <!--// configuration fragment for static river WMS //-->
    <rivermap>
        <mapserver>
            <server path="http://menippe:8081/cgi-bin/"/>
            <mapfile path="${artifacts.config.dir}/../rivers.map"/>
            <templates path="${artifacts.config.dir}/mapserver/"/>
            <map-template path="river-mapfile.vm"/>
        </mapserver>

        <velocity>
            <logfile path="${artifacts.config.dir}/../rivermap_velocity.log"/>
        </velocity>

        <river name="Beispielfluss">
            <srid value="31467"/>
            <river-wms url="http://menippe:8081/cgi-bin/river-wms" layers="Beispielfluss"/>
            <background-wms url="http://osm.intevation.de/bfg/service?" layers="OSM-WMS-Dienst"/>
        </river>
    </rivermap>

    $ vi floodmap.xml
    # Den Inhalt durch folgendes ersetzen

    <?xml version="1.0" encoding="UTF-8" ?>
    <floodmap>
        <shapefile-path value="${artifacts.config.dir}/../shapefiles"/>
        <mapserver>
            <server path="http://menippe:8081/cgi-bin/"/>
            <mapfile path="${artifacts.config.dir}/../flys.map"/>
            <templates path="${artifacts.config.dir}/mapserver/"/>
            <map-template path="mapfile.vm"/>
        </mapserver>

        <velocity>
            <logfile path="${artifacts.config.dir}/../velocity.log"/>
        </velocity>

        <river name="Beispielfluss">
            <srid value="31467"/>
            <river-wms url="http://menippe:8081/cgi-bin/river-wms" layers="Beispielfluss"/>
            <background-wms url="http://osm.intevation.de/bfg/service?" layers="OSM-WMS-Dienst"/>
        </river>
    </floodmap>


Konfigurieren des Logging
-------------------------
#. Pfade in den log4j.properties anpassen

    $ vi river/gwt-client/src/main/webapp/WEB-INF/log4j.properties

    # Die Zeile

    log4j.appender.FLYS.File=/tmp/flys-client.log

    # ändern in:

    log4j.appender.FLYS.File=/var/log/d4e-river/d4e-client.log

    $ vi river/artifacts/doc/conf/log4j.properties

    # Den Inhalt mit folgendem ersetzen:

    # Set root logger level to DEBUG and its only appender to A1.
    log4j.rootLogger=DEBUG, A1

    # A1 uses PatternLayout.
    log4j.appender.A1.layout=org.apache.log4j.PatternLayout
    log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c - %m%n

    log4j.appender.A1=org.apache.log4j.RollingFileAppender
    log4j.appender.A1.File=/var/log/d4e-river/d4e-server.log
    log4j.appender.A1.MaxFileSize=5000KB
    log4j.appender.A1.MaxBackupIndex=3


Bauen der Server- und Clientkomponenten
---------------------------------------
    $ cd framework/
    $ mvn clean compile package install
    $ cd ../http-client/
    $ mvn clean compile package install
    $ cd ../river/backend/
    $ mvn clean compile package install
    $ cd ../artifacts/
    $ mvn clean compile package dependency:copy-dependencies
    $ cd ../gwt-client/
    $ curl -O http://openlayers.org/download/OpenLayers-2.11.tar.gz
    $ tar xvfz OpenLayers-2.11.tar.gz
    $ mv OpenLayers-2.11 src/main/webapp/
    $ mvn clean compile package
    $ cd ../../


Kopieren der Serverkomponenten
------------------------------
    $ su root
    $ su d4e
    $ cd /opt/d4e-river/
    $ mkdir -p bin/lib
    $ cp /home/d4euser/d4e-river/river/artifacts/target/river-artifacts-1.0-SNAPSHOT.jar bin/lib/
    $ cp /home/d4euser/d4e-river/river/artifacts/target/dependency/* bin/lib/
    $ mkdir conf
    $ cp /home/d4euser/d4e-river/framework/artifact-database/doc/example-conf/log4j.properties conf/
    $ cp -R ../river/artifacts/doc/conf/* conf/


Artefaktdatenbank erstellen
===========================
    $ su root
    $ su d4e
    $ cd /opt/d4e-river/
    $ /home/d4euser/d4e-river/river/contrib/make_flys_release/h2/createArtifacts.sh \
      /home/d4euser/d4e-river/framework/artifact-database/doc/schema-h2.sql
    $ exit
    $ exit


Datenkorbdatenbank erstellen
============================
    $ su root
    $ su d4e
    $ cd /opt/d4e-river/
    $ /home/d4euser/d4e-river/river/contrib/make_flys_release/h2/createDatacage.sh \
      /home/d4euser/d4e-river/river/artifacts/doc/conf/datacage.sql
    $ exit
    $ exit


Backenddatenbanken (Fachdatenbank und Seddb)
============================================

Anlegen und befüllen der Datenbanken
------------------------------------
#. Einspielen des Schemas für die Backenddatenbank
    $ su root
    $ su postgres
    $ cd /home/d4euser/d4e-river/river/backend/doc/schema/
    $ ./postgresql-setup.sh d4e . localhost

#. Einspielen der Daten in die erstellte DB
    $ psql -d d4e -f /home/d4euser/d4e-river/d4e_demodata.dump.sql

#. Erstellen der Seddb
    $ createuser -S -D -R sedb
    $ createdb seddb
    $ psql -d seddb -c "ALTER USER sedb WITH PASSWORD 'sedb';"
    $ psql -d seddb -U sedb -h localhost -f /home/d4euser/d4e-river/seddb.dump.sql

#. wieder d4euser werden
    $ exit
    $ exit


Konfiguration der Datenbankverbindungen
---------------------------------------
#. Anpassen des Benutzers und des Datenbanknames
    $ su root
    $ su d4e
    $ cd /opt/d4e-river/conf/
    $ sed -i s@flys@d4e@ backend-db.xml


Kopieren der DGMs
=================
    $ su root
    $ su d4e
    $ mkdir /opt/d4e-river/dgm
    $ cp /home/d4euser/d4e-river/dgm/* /opt/d4e-river/dgm


Einrichten von WSPLGEN
======================

Bauen von WSPLGEN aus den Quellen
---------------------------------
Die Quellen und die Dokumentation von WSPLGEN sind zu finden unter

  https://wald.intevation.org/projects/wsplgen/

Das nach der Anleitung erstellte Binary muss in das 'bin' Verzeichnis des
D4E-river Servers kopiert werden.

    $ su root
    $ su d4e
    $ cp /path/to/wsplgen.exe /opt/d4e-river/bin


WSPLGEN Binary
--------------
WSPLGEN kann als ausführbare Datei heruntergeladen werden
(https://wald.intevation.org/projects/wsplgen/). Die Datei 'wsplgen.exe' muss
dann nur noch in das 'bin' Verzeichnis des D4E-river Servers kopiert werden.

    $ su root
    $ su d4e
    $ cp /path/to/wsplgen.exe /opt/d4e-river/bin


Einrichten des Mapserver und Apache
===================================
#. Anlegen der cgi-Skripte für die WMS-Dienste

    $ su root
    $ cd /usr/lib/cgi-bin/
    $ touch user-wms
    $ vi user-wms
    # folgendes einfügen:
        #!/bin/sh
        export MS_MAPFILE=/opt/d4e-river/flys.map
        ./mapserv
    $ touch river-wms
    $ vi river-wms
    # folgendes einfügen:
        #!/bin/sh
        export MS_MAPFILE=/home/d4e-river/rivers.map
        ./mapserv
    $ chmod 755 user-wms
    $ chmod 755 river-wms
    $ exit

#. Der Apache ist vorkonfiguriert und braucht keine weitere Anpassung.


Einrichtung der D4E-Benutzer und -Rollen
========================================
#. Authentifizierung über lokale Datei
    $ su root
    $ cd /usr/share/tomcat6/
    $ touch flys_user_file
    $ vi flys_user_file
    # folgendes einfügen:
        d4e_demo demo d4e_demo_all
        d4e_demo1 demo
        d4e_demo_extern demo d4e_demo_extern
    $ exit

Anlegen des Start-Skripts
============================
    $ su root
    $ su d4e
    $ cp /home/d4euser/d4e-river/river/contrib/make_flys_release/bin/run.sh /opt/d4e-river/bin/
    $ exit
    $ exit

Client in Tomcat Servlet-Container ablegen
==========================================
    $ su root
    $ cp /home/d4euser/d4e-river/river/gwt-client/target/gwt-client-1.0-SNAPSHOT.war /var/lib/tomcat6/webapps/d4e-river.war
    $ chown tomcat6 /var/lib/tomcat6/webapps/d4e-river.war
    $ exit

Starten der Serverkomponente
============================
    $ su root
    $ su d4e
    $ cd /opt/d4e-river
    $ bin/run.sh

Die Anwendung ist dann im Browser unter

    http://servername:8080/d4e-river

erreichbar.

http://dive4elements.wald.intevation.org