view doc/INSTALL_DE @ 7774:2a5cc260c492

Replace FLYS-specific features.xml.
author Tom Gottfried <tom@intevation.de>
date Tue, 04 Mar 2014 15:23:50 +0100
parents 887795bbe854
children b972c7e1bfbe
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.

@TODO: auf Debian wheezy hinweisen


Erforderliche Pakete zum Installieren von D4E-river
===================================================
    $ su root
    $ apt-get install openjdk-7-jdk # installiert openjdk-7 7u25-2.3.10-1
    $ apt-get install tomcat6 # installiert tomcat 6.0.35-6
    $ apt-get install postgresql # installiert PostgreSQL 9.1
    $ apt-get install postgis # installiert PostGIS 1.5.3 gemeinsame Dateien
    $ apt-get install postgresql-9.1-postgis # installiert Postgis
    $ apt-get install apache2 # installiert Apache 2.2.22-13
    $ apt-get install cgi-mapserver # installiert cgi-mapserver 6.0.1
    $ apt-get install 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 # installiert maven 2.2.1-12
    $ apt-get install mercurial # installiert mercurial 2.2.2-3


Pakete zum Bauen von WSPLGEN
----------------------------
    $ apt-get install subversion # installiert subversion 1.6.17dfsg-4+deb7u4
    $ apt-get install build-essential # Zum bauen von wsplgen


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