FGS installieren

Aus kvwmap
Wechseln zu: Navigation, Suche

FGS ist ein vorkompiliertes Paket für LINUX-Systeme mit allen für WebGIS-Anwendungen notwendigen Komponenten. FGS gibt es als Installer-Pakete und dazugehörige Module, die einzeln nach Bedarf dazugeladen werden können.

Wenn man nicht das vorkompilierte Paket verwenden, sondern aus irgendeinem Grund die Pakete und Module selbst kompilieren möchte, kann man FGS-DEV verwenden. Siehe dazu



Vorarbeiten

Einen Benutzer "fgs" in Yast anlegen.

Die Installation von FGS soll mit einem Benutzer "fgs" erfolgen, d.h. nicht als root. FGS kann auch mit dem Benutzer root installiert werden, es ergeben sich dann aber einige schwerwiegende Probleme:

  • Der Benutzer root darf den Apache nicht starten
  • Wenn man für das starten des Apache einen unterprivilegierten User anlegt, darf der nicht in /opt/fgs schreiben

Der FGS-Benutzer kann natürlich statt "fgs" auch ganz anders heißen.


Download Link von FGS unter: http://dl.maptools.org/dl/fgs/releases/1.0/1.0.0/self-installers/

Den Download Button der gewünschten Version (aktuell: fgs-mapserver_5.2.1-fgs_1.0.0-linux-i386.bin) wählen.

Unter fgs-mapserver_5.2.1-fgs_1.0.0-linux-i386.versions kann man die dazugehörigen reinkompilierten Module und deren Versionen abfragen:

mapserver-php:5.2.1
mapserver-base:5.2.1
libstdc++-lib:6.0.8
libgcc-lib:1
apache-base:2.2.8
expat-base:2.0.1
gd-lib:2.0.35
jpeg-lib:6b
freetype-lib:2.3.5
libpng-lib:1.2.8
zlib-lib:1.2.3
curl-lib:7.16.4
openssl-lib:0.9.8a
proj-lib:4.5.0
postgresql-lib:8.3.1
gdal-base:1.5.0
tiff-lib:3.8.2
libgeotiff-lib:1.2.4
xerces_c-base:2_8_0
unixODBC-base:2.2.10
libungif-base:4.1.3
libiconv-base:1.9.1
proj4_epsg42xxx-support:1.0.0
geos-lib:3.0.0
libxml2-base:2.6.19
agg-lib:2.4
php-base:5.2.5
python_mapscript-module:5.2.1
python-base:2.5.2
gdal_ecw-module:1.5.0
libecw-base:3.3.20060906
postgis-lib:1.3.2

Den Installer im Home-Verzeichnis von fgs verstauen.



Installation

Installationsdatei ausführbar machen mit

#>chmod 700 fgs-mapserver_5.2.1-fgs_1.0.0-linux-i386.bin

und ausführen:

#>./fgs-mapserver_5.2.1-fgs_1.0.0-linux-i386.bin

FGS-Installation 01.png

Verzeichnis angeben, in dem fgs installiert werden soll. Default ist /opt/fgs (für die Installation als root). Das ändern in /home/fgs/fgs:

FGS-Installation 02.png

Port festlegen unter dem Apache laufen soll. Default ist 8080:

FGS-Installation 03.png

Letzte Ausgaben auf jeden Fall mal sichern (und wenn es nur ein Screenshot ist). Denn da steht, wie man fgs so startet, dass fgs nach dem Booten automatisch hochfährt und wie man die Umgebungsvariablen für fgs einrichtet und wie man das automatisiert für jedes login.

FGS-Installation 04.png


Vor dem händischen Starten müssen die Umgebungsvariablen gesetzt sein. Das geht durch das Ausführen der Datei setenv.sh. Erstmal nach /home/fgs/fgs wechseln:

#>cd /home/fgs/fgs

Dann die setenv.sh ausführbar machen mit:

#>chmod 700 setenv.sh

und ausführen mit:

#>source setenv.sh

Wenn man möchte, dass setenv.sh automatisch nach dem Einloggen ausgeführt wird, führt man folgendes aus:

#>echo "source /home/fgs/fgs/setenv.sh" >> ~/.bashrc

Damit wird der Aufruf der setenv.sh an die Datei .bashrc des Users angehängt, die immer ausgeführt wird, wenn man sich als fgs anmeldet.


Damit FGS beim Booten des Servers automatisch startet, wird der Startbefehl in die rc.local geschrieben (den Befehl als root ausführen!):

#>echo "su root -c \"( . /home/fgs/fgs/setenv.sh ; fgs start )\"" >> /etc/rc.d/rc.local

und prüfen ob der Aufruf auch in der Datei anschließend drin steht:

#>less /etc/rc.d/rc.local





FGS starten

Nun können wir fgs starten. Einmal abmelden, wieder anmelden und fgs starten:

#>exit
#>fgs start

Dabei stellen wir fest, dass er fgs nicht kennt. setenv.sh wurde ja auch noch nicht ausgeführt. Das machen wir aber nicht, sondern melden uns mal ab und wieder an und probieren dann noch mal und siehe da: Apache läuft schon. Macht nichts, den fahren wir runter mit:

#>fgs stop

Was bei der Gelegenheit gleich beschreibt, wie man fgs runter- und wieder hochfährt. Nu geht’s aber. "+Starting 'apache' :" ist ein gutes Zeichen:

FGS-Installation 05.png

Um zu prüfen, ob nun alles eingerichtet ist, einmal abmelden, als root neu booten und danach wieder anmelden als fgs:

#>exit
#>shutdown –r now

Danach sollten die Umgebungsvariablen gesetzt sein und fgs schon laufen.

Nun können wir uns fgs auch mal vom Internet aus ansehen. Dazu die Adresse des Servers eingeben plus Port 8080, z.B. http://www.pkorduan.de:8080/ Dann erscheint in einem leeren fgs:

FGS-Installation 06.png

Jetzt haben wir den Mapserver, PHP, Apache, Unterstützung für PostgreSQL (die Datenbank selbst aber noch nicht) sowie all die für den Mapserver wichtigen Pakete. Die Unterstützung für MySQL fehlt noch und wird später als Modul installiert (MySQL selbst muss separat installiert werden, wenn nicht schon vorhanden).



SSL Unterstützung für Apache

Die SSL-Unterstützung für den WebServer muss nur eingerichtet werden, wenn mit den Clients per https kommuniziert werden soll.

Das notwendige Modul heißt apache_mod_ssl-module:2.2.8 und kann entweder

#>fgs install apache_mod_ssl-module:2.2.8  http://dl.maptools.org/dl/fgs/releases/1.0/1.0.0/modules/

FGS-Installation 07.png

Dabei werden wir nach dem Port für HTTPS gefragt. Default ist 443.

Nun muss man eigentlich gar nichts mehr machen außer fgs stop und fgs start. Dabei wird Apache im SSL Mode gestartet. Wenn der SSL-Schlüssel mit Passwort versehen wurde, muß dieser vorher manuell eingegeben werden, was zu einem Problem beim automatischen Hochfahren wird.

So sieht es dann jedenfalls nach einem erfolgreichen Start aus:

FGS-Installation 08.png

Und so nach einem erfolgreichen Stop:

FGS-Installation 09.png






Eigenes Zertifikat erstellen

Grundsätzlich kann man das Zertifikat selbst erstellen oder ein Zertifikat kaufen. Dazu gibt es im WWW genügend gute Angebote. Das selbstgebaute Zertifikat hat den Vorteil, kostenlos zu sein. Allerdings wird es vom Internet Explorer (aktuell Version 7) als nicht vertrauenswürdig eingestuft, so dass der Client bei jedem Start erstmal eine böse Warnung wegklicken muss. Andere Browser haben mit selbstgebauten Zertifikaten keine Probleme.

Eine gute Doku zur Erstellung von selbstgebauten Zertifikaten gibt es unter: http://www.schirmacher.de/display/INFO/Apache+SSL+Zertifikat+erstellen+und+installieren

Zunächst sollte geprüft werden, ob das Modul openssl bereits im fgs packet enthalten ist. Es sollte unter /home/fgs/fgs/bin stehen. Dann einen Ort suchen, wo man die Dateien ablegt, z.B. unter /home/fgs/fgs/etc/ssl/certs.

Schlüssel mit 1024 Byte erzeugen. Der Name ist eigentlich egal (im Beispiel "nvp-geoport"). Diese müssen dann später nur in der httpd-ssl.conf richtig eingesetzt werden.

#>openssl genrsa -out /home/fgs/fgs/etc/ssl/certs/nvp-geoport.key 1024

Wenn man den Schlüssel mit einem Passwort schützen möchte, folgender Befehl:

#>openssl genrsa -des3 -out nvp-geoport.key 1024

Problem dabei ist, dass man dann fgs nicht im Batch Modus nach dem Hochfahren des Rechners starten kann, weil fgs bis zum St. Nimmerleinstag auf ein Passwort wartet.

Als nächstes ein Certificate Signing Request (CSR) erzeugen mit:

#>openssl req -new -key /home/fgs/fgs/etc/ssl/certs/nvp-geoport.key -out /home/fgs/fgs/etc/ssl/certs/nvp-geoport.csr

Dabei wird man so einiges gefragt. Wenn man nicht antworten will, gibt man einen Punkt ein, z.B. bei Password (und das vermeidet die Abfrage des Passworts beim Booten!):

FGS-Installation 10.png

Jetzt kann man noch mal prüfen, ob alle Angaben richtig sind:

#>openssl req -noout -text -in /home/fgs/fgs/etc/ssl/certs/nvp-geoport.csr

FGS-Installation 11.png

Zum Schluss erstellt man schließlich das Zertifikat, welches dann von den Browsern akzeptiert werden muss:

#>openssl x509 -req -days 3650 -in /home/fgs/fgs/etc/ssl/certs/nvp-geoport.csr -signkey /home/fgs/fgs/etc/ssl/certs/nvp-geoport.key -out /home/fgs/fgs/etc/ssl/certs/nvp-geoport.crt

FGS-Installation 12.png

In der Datei /home/fgs/fgs/etc/http/conf/extra/httpd-ssl.conf ist schließlich folgendes noch einzutragen:

SSLCertificateFile "$FGS_HOME/etc/ssl/certs/nvp-geoport.crt"
SSLCertificateKeyFile "$FGS_HOME/etc/ssl/certs/nvp-geoport.key"

Fertig! fgs start kann nun ohne Eingabe eines Passwort erfolgen.

Wenn man später den Apache-SSL mit einem anderen Port laufen lassen möchte, den Port in der Datei /home/fgs/fgs/etc/fgs/pkgs/apache_mod_ssl-module/apache_mod_ssl.conf anpassen, z.B. SSLPORT=8443 => SSLPORT=443

Nach der Einstellung fgs neu starten.

Welcher Port nach dem fgs start belegt wird, kann man mit folgendem Befehl prüfen:

#>netstat –ln





Weitere FGS-Module hinzufügen

Im Weiteren sind einige Module nachzuinstallieren, die für kvwmap gebraucht werden. Das betrifft Postgresql Server, PostGIS Support sowie pgsql- und mysql-Support für PHP. Nach der Installation des postgres Datenbankservers müssen User, Datenbank als Template sowie die Unterstütztung für PostGIS innerhalb des Template eingerichtet werden und die kvwmap-Datenbank erzeugt werden. Siehe dazu die folgenden Abschnitte.

Für die Nutzung von Mysql in php brauchen wir das Modul fgs-php_mysql-module-5.2.5-linux-i386.tar.gz.

Die Installation erfolgt über:

#>fgs install php_mysql-module:5.2.5 http://dl.maptools.org/dl/fgs/releases/1.0/1.0.0/modules/

FGS-Installation 13.png

Das Gleiche für pgsql:

#>fgs install php_pgsql-module:5.2.5 http://dl.maptools.org/dl/fgs/releases/1.0/1.0.0/modules/





php.ini

Damit die Erweiterungen in PHP auch laufen, müssen die Bibliotheken als shared object library (*.so) in PHP eingebunden werden.

Dazu in /home/fgs/fgs/www/conf/php5.ini.template (nicht in php5.ini!!!!!! Die wird beim fgs start jedes mal neu erzeugt) im Abschnitt Dynamic Extension die folgenden Einträge vornehmen:

extension=php_mysql.so
extension=php_pgsql.so 

Für kvwmap sind außerdem folgende Einträge zu ändern:

session.auto_start = 1

und

magic_quotes_gpc = Off

und

max_execution_time = 3600     ; Maximum execution time of each script, in seconds
max_input_time = 300	      ; Maximum amount of time each script may spend parsing request data
memory_limit = 128M           ; Maximum amount of memory a script may consume (8MB)

und session.gc_maxlifetime, wenn die Login-Dauer der User länger als 24 Minuten sein soll.



httpd.conf

Damit in der URL nicht ständig explizit "index.php" angegeben werden muss, muss in /home/fgs/fgs/www/conf/httpd.conf (nicht in live.httpd.conf! Die wird beim fgs start jedes mal neu erzeugt) folgender Eintrag so geändert werden:

<IfModule dir_module>
   DirectoryIndex index.html index.php
</IfModule>


Wenn auf demselben Server z.B. der Geoserver unter tomcat laufen soll, kann der FGS-Apache dazu genutzt werden. Dazu muss ein weiterer Port freigegeben sein, z.B. Port 8080. Dieser Port muss in der tomcat-Konfiguration (Connector port="8080" in server.xml) angegeben werden. In der httpd.conf von FGS wird außerdem folgendes eingetragen:

PROXYPASS /geoserver http://localhost:8080/geoserver
PROXYPASSREVERSE /geoserver http://localhost:8080/geoserver





Postgresql-Server installieren

Das Modul (aktuell: postgresql-server:8.3.1) wie gehabt installieren:

#>fgs install postgresql-server:8.3.1 http://dl.maptools.org/dl/fgs/releases/1.0/1.0.0/modules/

(Falls man upgraden will: fgs erstmal runterfahren und force-install statt install verwenden. Dabei wird man nach dem Port für die Datenbank gefragt. Default ist 5432. Wenn man schon eine DB auf diesem Port laufen hat, kann man z.B. 5433 nehmen und die neue erstmal parallel laufen lassen. Der Port steht hinterher in der Datei /home/fgs/fgs/etc/fgs/pkgs/postgresql-server/pgsql.conf und kann angepasst werden)

Die Datenbank wird zunächst initialisiert:

#>cd /home/fgs/fgs/bin 
#>initdb --locale=POSIX -E LATIN1 -U fgs -D /home/fgs/fgs/apps/pgsql/data

Wenn der Parameter -E weggelassen wird, wird die Datenbank auf Encoding=UTF-8 festgelegt und es ist nicht möglich, Datenbanken mit anderen Encodings zu erzeugen. kvwmap benötigt Latin1.

Bei einer Fehlermeldung, dass die Datei snowball_create.sql nicht existiert, wie hier im Screenshot, muss die Option –L angeben mit Verweis auf /home/fgs/fgs/share. Oder man kopiert alle Dateien aus /home/fgs/fgs/apps/pgsql/share nach /home/fgs/fgs/share und startet ohne Option –L.

FGS-Installation 14.png

So sieht es aus nach Kopieren der Dateien und ohne Option –L:

FGS-Installation 15.png

Und die Ausschrift sollte so enden:

FGS-Installation 16.png

Danach die Konfiguration der Rechte in pg_hba.conf eintragen im Verzeichnis /home/fgs/fgs/apps/pgsql/data. In /home/fgs/fgs/apps/pgsql/postgresql.conf das Kommentarzeichen vor Parameter listen_addresses = 'localhost' rausnehmen und auf '*' setzen.

Anschließend fgs stop / fgs start nicht vergessen. Man kann auch nur die PgSQL-DB stoppen und starten:

#>fgs stop pgsql
#>fgs start pgsql





PostGIS installieren

Das PostGIS Modul (aktuell: postgis-lib:1.3.2) wie mehrfach erprobt installieren:

#>fgs install postgis-lib:1.3.2 http://dl.maptools.org/dl/fgs/releases/1.0/1.0.0/modules/

Es sollten zwei User in der Datenbank angelegt werden, ein Superuser und ein normaler User, der für die Zugriffe auf die DB von den Anwendungen aus verwendet wird. Im Beispiel heißt der Superuser kvwmap_super und der normale User kvwmap.

Die neuen User werden mit Hilfe des Users fgs angelegt (der anschließend keine Rolle mehr spielt). Damit der Superuser fgs weitere User anlegen kann, muss in /home/fgs/fgs/apps/pgsql/data/pg_hba.conf der Eintrag rein:

local   all         fgs        trust

Danach:

#>fgs stop apache
#>fgs start apache
#>cd /home/fgs/fgs/bin 
#>createuser -p 5433 -U fgs -s kvwmap_super -P
#>createuser -p 5433 -U fgs -s kvwmap -P

FGS-Installation 19.png

Die Angabe des Ports mit -p ist nur nötig, wenn nicht der Standard-Port 5432 verwendet wird. Anschließend in pg_hba.conf den obigen Eintrag wieder entfernen und dafür Einträge für kvwmap_super und kvwmap machen. Dann fgs stoppen und starten.


Eventuell kann folgender Fehler auftreten:

FGS-Installation 17.png

Das liegt daran, weil in dieser FGS-Version (1.0) das Programm psql auf eine falsche Bibliothek zeigt, die in fgs-dev liegt. Geholfen hat, das Ziel mit einem Link auf die aktuelle Datei zu überschreiben.

#> ldd /home/fgs/fgs/bin/psql

zeigt folgendes:

FGS-Installation 18.png

Mit dem Befehl

#>ln -s /home/fgs/fgs/lib/libpq.so.5.1 /home/fgs/fgs-dev/built/postgresql/lib/libpq.so.5

wird der neue Link angelegt, der auf die richtige libpq.so verweist. Vorher - je nachdem was es war - den alten Link oder Datei löschen (/home/fgs/fgs-dev/built/postgresql/lib/libpq.so.5).




Leere Datenbank anlegen. Wenn es eine ALK-DB für kvwmap sein soll, bei kvwmap-Datenbank_für Postgresql weitermachen. Das Anlegen der DB kann man als kvwmap machen, denn die neue Datenbank gehört dann gleich kvwmap:

#> createdb -p 5433 -U kvwmap postgistemplate

Die Angabe des Ports mit -p ist nur nötig, wenn nicht der Standard-Port 5432 verwendet wird.

Sparachunterstützung für Postgresql installieren mit:

#>createlang -p 5433 -U kvwmap plpgsql postgistemplate

Die Angabe des Ports mit -p ist nur nötig, wenn nicht der Standard-Port 5432 verwendet wird.

Abschließend werden die PostGIS Erweiterungen eingelesen. Dazu muss in der Datei /home/fgs/fgs/share/lwpostgis.sql der Text "$FGS_HOME" durch den richtigen Pfad "/home/fgs/fgs" ersetzt werden. Den Befehl zum Eintragen der Funktionen muss kvwmap_super vornehmen, wenn User kvwmap kein Superuser ist:

#>psql -p 5433 -U kvwmap_super -f /home/fgs/fgs/share/lwpostgis.sql -d postgistemplate

Die Angabe des Ports mit -p ist nur nötig, wenn nicht der Standard-Port 5432 verwendet wird.



kvwmap-Datenbank für Postgresql

Zuerst wird eine Template-Datenbank eingerichtet und die Spracherweiterung installiert:

#>cd /home/fgs/fgs/bin
#>createdb -p 5433 -U kvwmap alktemplate
#>createlang -p 5433 -U kvwmap plpgsql alktemplate
#> psql -p 5433 -U kvwmap_super -f /home/fgs/fgs-1.0/share/lwpostgis.sql -d alktemplate

Die Angabe des Ports mit -p ist nur nötig, wenn nicht der Standardport 5432 verwendet wird.

Dann wird die Template-DB in PostgreSQL als Template-Datenbank markiert (das muss wieder der Superuser machen):

#> psql -p 5433 -d alktemplate -U kvwmap_super -c "update pg_database set datistemplate = 't' where datname = 'alktemplate';"

Den Erfolg kann man in pgAdmin3 mit folgendem Befehl testen:

select * from pg_database where datname='alktemplate'

Außerdem müssen noch die bundeslandspezifischen Tabellen erzeugt werden. Diese sind im Verzeichnis SQL_Template im Installationspfad von edbs2wkt zu finden:

  • die Schlüsseltabelle der Folien (ALK_Folientabelle_MV.SQL)
  • die Schlüsseltabelle der Standardtexte (ALK_Standardtext_MV.SQL)
  • die Tabelle der Objektarten für Schraffurwinkel (ALK_SchraffurWinkel_MV.SQL)

Damit der edbs2wkt-Konverter auf die richtige PostgreSQL-Installation zugreift, muss im ODBC-Treiber der richtige Port (im Beispiel: 5433) angegeben werden!

Wenn die Template-Datenbank vorbereitet ist, kann die ALK-DB für kvwmap mit dem edbs2wkt-Konverter angelegt werden. Dafür im Menü Datenbank den Punkt "anlegen" wählen und z.B. folgende Konfiguration vornehmen (PostGIS Template=alktemplate und Encoding=LATIN1 ist wichtig!):

FGS-Installation 20.png FGS-Installation 21.png






MySQL für kvwmap

Wenn MySQL Server unter SuSE mit YaST installiert wurde, wird der Server defaultmäßig mit dem Socket /var/lib/mysql/mysql.sock gestartet. FGS verlangt den Socket aber unter /tmp. Daher muss in der Datei /etc/my.cnf für MySQL Server und MySQL Client folgendes gesetzt werden:

socket = /tmp/mysql.sock

Anschließend den MySQL Server neu starten.

kvwmap

Wenn kvwmap installiert ist, müssen noch bestimmte Parameter gesetzt werden, die Mapserver und PostGIS betreffen.

  • Wenn eigene Dienste (WMS) über den Mapserver angebunden werden, muss im entsprechenden Mapfile die maximale Kartengröße gesetzt werden, wenn diese 2048 Pixel (= Standardeinstellung des FGS-Mapservers) überschreitet. Dazu im Mapobjekt notieren:
MAXSIZE 4096 # oder anderen Wert
  • Die URL muss stimmen, speziell wenn SSL-verschlüsselt wird:
define('URL','https://geoportal.lk-nvp.de/');