Ubuntupaket für lokalen Tileserver

Im Mapnik-Verzeichnis, zusammen mit osm.xml.

Ich hab hier leider nur Windoofs. Aber mapnik rendert brav :wink:

Gruß,
ajoessen

also ich habe eine osm.xml in /etc/mapnik-osm-data … dort ist aber keine generate_tiles.py … hmmm

Hallo oneandonlycore,

also das Ganze läuft definitv unter Debian 6 (64 Bit), denn bei mir geht’s auch :wink:

Zum Debuggen könntest Du noch den renderd im Vordergrund laufen lassen:
# /usr/bin/renderd -f
(bei dessen Start könnten schon Fehlermeldungen auftauchen).
Desweitern hat mod_tile auch eine Art “Statusseite” unter
http://localhost/mod_tile
Diese diversen
NoRespZoom08: 34
müssten sich beim Verschieben/Reinzoomen der Karte hochzählen.

Bekommt der renderd dann Anfragen, muesste sowas wie
renderd[2302]: DEBUG: Got incoming connection, fd 11, number 1
renderd[2302]: DEBUG: Got incoming connection, fd 12, number 2
renderd[2302]: DEBUG: Got command RenderPrio fd(11) xml(default), z(13), x(4349), y(2801)
renderd[2302]: DEBUG: Got incoming connection, fd 13, number 3
auftauchen.

Hat er fertig gewuselt, dann
renderd[2302]: DEBUG: DONE TILE default 14 8696-8703 5600-5607
renderd[2302]: DEBUG: DONE TILE default 14 8696-8703 5600-5607 in 6.007 seconds

Ciao,
Frank

Hi,

also mit dem Renderd -f befehl bekomm ich die folgenden errors … hab das script jetzt ca 20 min laufen lassen und es kam nichts mehr … (CPU load war auch auf 0%)

renderd[6222]: Starting stats thread
renderd[6222]: An error occurred while loading the map layer 'default': /etc/mapnik-osm-data/world_boundaries/shoreline_300 does not exist (encountered during parsing of layer 'world')
renderd[6222]: An error occurred while loading the map layer 'default': /etc/mapnik-osm-data/world_boundaries/shoreline_300 does not exist (encountered during parsing of layer 'world')
renderd[6222]: An error occurred while loading the map layer 'default': /etc/mapnik-osm-data/world_boundaries/shoreline_300 does not exist (encountered during parsing of layer 'world')
renderd[6222]: An error occurred while loading the map layer 'default': /etc/mapnik-osm-data/world_boundaries/shoreline_300 does not exist (encountered during parsing of layer 'world')

Der Ordner “world_boundaries” ist nicht vorhanden … also weder so auf dem System noch in der Datenbank(falls es ein “Virtueller” Ordner/Tabelle etc. sein sollte)
und wenn ich die Statusseite von mod_tile aufrufen will bekomm ich nur ein 404 NOT FOUND Error.

So langsam habe ich das gefühl, dass irgendwas bei der installation schief gegangen ist ^^

Es sieht so aus als wurden die Kuestenlinien nicht korrekt heruntergeladen.

Man kann die mit dem script get-coastlines.sh neu herunterladen.

“sudo /usr/bin/get-coastlines.sh /etc/mapnik-osm-data”

Bitte vorsichtig. oneandonlycore benutzt nicht Ubuntu, sondern Debian. Zwar basiert Ubuntu auf Debian, aber es gibt eben auch Unterschiede, so dass zum Beispiel die Installation nicht richtig klappt. Dann ist die Ganze Sache Handarbeit.
Ich persönlich habe schlechte Erfahrung mit der Wiki Anleitung gemacht, als ich diesen Server hier nachbauen wollte: http://wiki.openstreetmap.org/wiki/DE:HowTo_minutely_hstore
Und das nur weil sich die Software weiterentwickelt. Es gab andere Versionsnummern. Plötzlich standen Skripte wo anders etc.
Die Pakete machen es einem wirklich sehr viel Leichter als bei Windows. Aber auch nur wenn sie direkt für diese Distribution gepackt wurden und nach Anleitung installiert werden.

@amm

ich habe den befehl grade ausgeführt und jetzt lädt er fleißig runter … nur stell ich mir grade die frage, ob er nun die küstenlinen für die ganze welt runterzieht … weil das anscheinend ja doch recht groß ist was da runtergeladen wird …

Ja die Küstenlinien gibt es nur Weltweit. Du hast die Möglichkeit entweder die zu nehmen oder den Mapnikstyle zu ändern. Je nach resourcen ist das eine oder andere besser.
Gemacht hat man das übrigens, da in der Datenbank öfter mal Wege verloren gehen und die Küsten dann nicht geschlossen sind. Das führt dann aber zu Überflutung ganzer Kontinente. Daher gibt es in bestimmten Abständen einen Prozess zu Erzeugung dieser Küstenlinien, aber eben nur weltweit und nicht nach Regionen oder gar Wunschausschnitten.

so … ich habe jetzt nochmal den renderd -f befehl gestartet … allerdings passiert da nicht mehr als das (das wurde mir vorher auch schon angezeigt … und danach kamen die errors … jetzt passiert das selbe nur ohne errors :/):

user@osm:~$  /usr/bin/renderd -f
renderd[18694]: Rendering daemon started
renderd[18694]: Parsing section renderd
renderd[18694]: Parsing render section 0
renderd[18694]: Parsing section mapnik
renderd[18694]: Parsing section default
renderd[18694]: config renderd: unix socketname=/var/run/renderd/renderd.sock
renderd[18694]: config renderd: num_threads=4
renderd[18694]: config renderd: num_slaves=0
renderd[18694]: config renderd: tile_dir=/var/lib/mod_tile
renderd[18694]: config renderd: stats_file=/var/run/renderd/renderd.stats
renderd[18694]: config mapnik:  plugins_dir=/usr/lib/mapnik/0.7/input
renderd[18694]: config mapnik:  font_dir=/usr/share/fonts/truetype/ttf-dejavu
renderd[18694]: config mapnik:  font_dir_recurse=0
renderd[18694]: config renderd(0): Active
renderd[18694]: config renderd(0): unix socketname=/var/run/renderd/renderd.sock
renderd[18694]: config renderd(0): num_threads=4
renderd[18694]: config renderd(0): tile_dir=/var/lib/mod_tile
renderd[18694]: config renderd(0): stats_file=/var/run/renderd/renderd.stats
renderd[18694]: config map 0:   name(default) file(/etc/mapnik-osm-data/osm.xml) uri(/osm/) htcp() host()
renderd[18694]: Initialising unix server socket on /var/run/renderd/renderd.sock
renderd[18694]: Created server socket 4
renderd[18694]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSerif-Bold.ttf
renderd[18694]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSansCondensed-Oblique.ttf
renderd[18694]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSerifCondensed-Bold.ttf
renderd[18694]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSerifCondensed.ttf
renderd[18694]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSerif.ttf
renderd[18694]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono.ttf
renderd[18694]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSansCondensed-BoldOblique.ttf
renderd[18694]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono-Oblique.ttf
renderd[18694]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttf
renderd[18694]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-BoldOblique.ttf
renderd[18694]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono-BoldOblique.ttf
renderd[18694]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-ExtraLight.ttf
renderd[18694]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-Bold.ttf
renderd[18694]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSerifCondensed-Italic.ttf
renderd[18694]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono-Bold.ttf
renderd[18694]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSerifCondensed-BoldItalic.ttf
renderd[18694]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSerif-Italic.ttf
renderd[18694]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSerif-BoldItalic.ttf
renderd[18694]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-Oblique.ttf
renderd[18694]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSansCondensed-Bold.ttf
renderd[18694]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSansCondensed.ttf
Running in foreground mode...
renderd[18694]: Starting stats thread

Das läuft jetzt ca schon 40min … CPU load ist bei 0% und beim Aufrufen von slippymap.html wird mir immernoch nichts angezeigt. Die Statusseite “mod_tile” und http://xxx.xxx.xxx.xxx/osm/0/0/0.png ist immernoch nicht verfügbar → 404Error!

OK, das sieht so aus als wuerde nun renderd funktionieren. Das ist also schon einmal ein Schritt in die richtige Richtung.

Allerdings scheint mod_tile nicht richtig zu laden. Somit werden keine Anfragen weiter an renderd geleitet.

Vermutlich wurde apache nicht korrekt configuriert um mod_tile zu verwenden.

Wenn apache neu gestartet wird, sind dort Meldungen zu mod_tile zu sehen?

hilft “sudo a2enmod mod_tile” und “sudo a2ensite tileserver_site”?

Ich habe nun verzweifelt in die renderd.conf geschaut und auch im Wiki konnte ich keinen Hinweis finden wie ich dort einen weiteren Rendering style eintragen soll.
Unter [default] ist der eigentliche Mapnikstyle angemeldet. Lege ich dann jetzt einfach ein weiteres [ownstyle] an in dem ich das von Mapnik kopiere und die xml tausche?
Wie kann ich dann beide Styles in der Slippymap übereinander legen? Vorallem überschreiben sich die Tiles dann nicht gegenseitig?

@amm
also mod_tile existiert wohl überhaput nicht bei mir auf dem System

Apache läuft auf Standardeinstellungen … also soll heissen, dass ich selbst nichts daran verändert habe … aber wenn ich mich nicht irre dann ist das Apache Paket doch sowieso aus dem repository von Kai Krueger oder nicht ?


root@osm:~# a2enmod mod_tile
ERROR: Module mod_tile does not exist!

root@osm:~# a2ensite tileserver_site
Enabling site tileserver_site.
Run '/etc/init.d/apache2 reload' to activate new configuration!

root@osm:~# /etc/init.d/apache2 reload
Syntax error on line 20 of /etc/apache2/sites-enabled/tileserver_site:
Invalid command 'LoadTileConfigFile', perhaps misspelled or defined by a module not included in the server configuration
Action 'configtest' failed.
The Apache error log may have more information.
 failed!

und hier noch der auszug aus dem error log von apache, was aber wohl nicht überraschen wird:


[Wed Nov 02 10:15:00 2011] [error] [client xxx.xxx.xxx.xxx] File does not exist: /var/www/osm/0
[Wed Nov 02 10:15:02 2011] [error] [client xxx.xxx.xxx.xxx] File does not exist: /var/www/mod_tile

Nach einem erneuten Datenimport in die Datenbank bekomme ich dennoch die alten Tiles ausgeliefert. Wie kann ich das umgehen?

@oneandonly: OK, die Frage ist nun wieso wurde mod_tile nicht installiert? Da a2ensite tileserver_site funktioniert hat, wurde das packet libapach2-mod-tile zu mindestens teilweise installiert.

mod_tile wird in das Verzeichnis /usr/lib/apache2/modules/mod_tile.so installiert und im Verzeichniss /etc/apache2/mods-available/ sollte eine Datei tile.load existieren. Moeglicherweise verwendet Debian andere Verzeichnisse hier?

Mod_tile bestimmt das “alter” der Daten anhand der Datei /var/lib/mod_tile/planet-import-complete. Wurde eine Kachel vor der letzten Aenderung dieser Datei gerendert, betrachtet mod_tile sie als veraltet und veranlasst ein neu rendern.

In sofer sollte ein “touch /var/lib/mod_tile/planet-import-complete” alle bereits gerenderten Kacheln expiren, Ausserdem muss man moeglicherweise nach einem komplett neu Import renderd neu starten.

Ich habe jetzt eine neue Sektion angelegt
[pt]
URI=/pt/
XML=/etc/mapnik-osm-data/mapnik_pt.xml

Leider weiß ich immer noch nicht wie ich dann auf diesen Layer zugreifen kann.
die Vermutung localhost/pt/0/0/0.png bringt keinen Erfolg

Das standardverzeichnis heißt eigentlich auch http://localhost/osm_tiles2/0/0/0.png
http://svn.openstreetmap.org/applications/utils/mod_tile/readme.txt

Aber auch dort bekomme ich keine Tiles irgendwo ist also noch etwas verändert, so dass ich nicht an diesen neuen Style herankomme.

Diese Lösung klappt hervoragend, wenn man ein sudo voranstellt, da man sonst nicht die Berechtigung hat.

mit der von dir erwaehnten Sektion in renderd.conf sollte localhost/pt/0/0/0.png eigentlich funktionieren.

Allerdings muss man sowohl apache als auch renderd neu starten nachdem die renderd.conf geaendert wurde
“/etc/init.d apache2 restart” “/etc/init.d/renderd restart”

ok es liegt am Stylefile. Wenn ich osm.xml nehme dann läuft es. Danke für deine Mühe.

ja die beiden Dateien mod_tile.so und mod.tile existiert bei mir, auch in dem von dir angegebenen Pfad.
Ich hab jetzt keinen plan mehr wie ich weiter vorgehen soll …