NRW:Arbeitsgruppe/Technik/Mapserver
Die Dokumentation für Nutzer findet sich unter Map.
Inhaltsverzeichnis
Debian-Pakete
Im Verzeichnis /root/packages finden sich einige Hilfsmittel, um festzustellen, welche Pakete installiert wurden.
Anhand der dpkg-Logs wurde eine Liste der vor Übernahme vorhandenen Pakete /preexisting-packages.txt erstellt. Das Skript /list-custom-packages.sh verwendet diese Datei, um eine Liste der danach installierten Pakete aufzulisten: /custom-packages.txt
Darüber hinaus sind noch Ruby/Rails-Pakete nötig; diese werden i.d.R. automatisch installiert, falls welche fehlen findet sich Hinweise meistens in der Installationsanleitung des Moduls, welches das Paket benötigt oder per Google bei der Suche nach der Fehlermeldung.
Nginx
Der Webserver ist ein Nginx Passenger, installiert entsprechend der Anleitung [1].
Nginx ist installiert unter /opt/nginx und wird über das gemeinsame Startup-Skript (siehe unten) gestartet - das nginx-spezifische init-Skript wird nicht verwendet. Eine Kopie der Kofigurationsdatei (/opt/nginx/conf/nginx.conf) liegt im Haupt-Repository im Verzeichnis additional-doc: [2]
Datenbank
Als Datenbank wird PostgreSQL verwendet, da OpenStreetMap dies erfordert. Das Login ist in einer entsprechend benannten Datei unter /root/ hinterlegt.
OpenStreetMap-spezifische Software
Die OSM-spezifische Software wohnt in /var/openstreetmap/.
Rails Port
Der Rails Port ist die Software, welche für die gesamte Website zuständig ist. Sie ist in Ruby geschrieben und liegt im Unterordner openstreetmap-website. Es wird eine angepasste Version verwendet, welche unter https://github.com/janschejbal/openstreetmap-website/tree/piraten in einem Git-Repository liegt.
Dokumentation und (schlechte) Installationsanleitungen finden sich unter http://wiki.openstreetmap.org/wiki/Rails_port - die brauchbarste Anleitung, auch für Debian, ist unter "Ubuntu" zu finden. Die Software wurde grob nach dieser Anleitung installiert (ohne den Download/Import von OSM-Daten!) - insbesondere anzupassen sind die application- und database-Konfigurationsdateien.
osmosis
Osmosis dient zum erstellen von Dumps und Extrahieren von Kartendaten und wird u.A. vom Updateskript verwendet.
Die mit Debian ausgelieferte Version von Osmosis ist defekt und völlig unbrauchbar. Im Unterverzeichnis osmosis-0.41 findet sich daher eine aus dem offiziellen Download-Archiv entpackte, funktionierende Version.
Overpass API
Die Overpass API kann Daten auf Anfrage live filtern. Sie wohnt im Unterverzeichnis overpass und hat eine eigene Datenbank unter overpass-db, welche vom Updateskript aktuell gehalten wird.
Die Installationsdateien liegen im Home-Verzeichnis von Root; die Installationsanleitung gibt es unter [3] - Datenimport, Updates und Cleanup übernimmt das Updateskript; diese Teile sind NICHT zu installieren.
Die Anbinding an Nginx findet über fcgiwrap statt; siehe nginx-config
Skripte
Die Skripte finden sich im Git im additional-doc-Verzeichnis [4]. Init- und Updateskripte kommen direkt nach /var/openstreetmap/.
Initskript
Das Initskript wird wie folgt installiert:
ln -s /var/openstreetmap/openstreetmap-initscript /etc/init.d/openstreetmap /usr/sbin/update-rc.d -f openstreetmap defaults
Es startet automatisch nginx, die Schleife des Updateskripts und den Overpass-Dispatcher.
Updateskript
Das Updateskript wird vom Initskript automatisch aufgerufen führt regelmäßig folgende Aufgaben durch:
- Dump der Kartendaten ins Dumps-Verzeichnis legen (inkl. komprimierter Version)
- Overpass-Datenbank aktualisieren
- XAPI-Cleanup (für Overpass) durchführen (wird normalerweise von Overpass-eigenem Skript gemacht)
Prinzip der OSM-Software
Auf der Hauptseite wird mittels der JS-Bibliothek OpenLayers die Karte angezeigt. Die Hintergrund-Tiles (Karten-PNGs) kommen von einem OSM-kompatiblen Tileserver. Der Vordergrund wird live aus der Overpass-API geladen. Das Styling findet mittels OpenLayers-Stilen statt. Es können zusätzliche statische oder externe Layer eingebunden werden!
Die Daten können entweder mit einem Editor wie JOSM oder Vespucci über die API oder direkt über die Website mit dem Flash-basierten Potlatch2-Editor bearbeitet werden. Potlatch2 hat eigene Stlyes/Presets, für externe Editoren existieren Presets im JOSM-Format.
Es gibt also
* JOSM-Styles (MapCSS) * JOSM/Vespucci-Presets (Symboltypen - XML, gleiches Format für beide) * Potlatch2-Styles (angepasstes MapCSS) * Potlatch2-Featurefiles (Symboltypen - proprietär) * OpenLayers-Styles (proprietäres JavaScript, widerlich)
Symbole, Presets etc. liegen in einem separaten Repo, https://github.com/janschejbal/piratenmap-definitions