Ubuntupaket für lokalen Tileserver

der Workaround scheint zu funktionieren, allerdings erfordert der Neustart auch wieder Adminrechte, so das die Zeile heißen muss:
sudo /etc/init.d/apache2 restart

Ich habe gerade (glaube ich) den Bug gefunden. Das neustarten von Apache im postinstall script hat einen filedescripter offen gelassen, sodass debconf dachte das das script nie fertig wurde. Ich lade gerade neue packete hoch die dann hoffentlich korrekt funktionieren.

Macht es einen Unterschied ob man 64 oder 32 Bit einsetzt?
Ist es denkbar auch postgres 9.0 einzusetzen?

Der Aufruf von osm2pgsql scheitert an dem richtigen Datenbankbenutzer. Ich habe bei der Installation die Standardwerte benutzt, mit welchem User kann ich die Datenbank füllen?

Theoretisch sollte es sowohl mit 64bit als auch mit 32bit funktionieren. Fuer die lauchpad PPA laedt man den sourcecode hoch und der Server compiliert dann die Packete sowohl fuer 32bit als auch fuer 64bit. Getestet habe ich es aber nur mit einer 64bit Ubuntu version.

Derzeit gibt es so weit ich weis kein postgresql-9.0 im standard Ubuntu repository fuer 11.04. Insofern wuerde die Installation von 9.0 etwas komplizierter. Die meisten der Packete sollten aber auch mit postgresql 9 funktionieren. Lediglich das openstreetmap-postgis-db-setup packet muesste man etwas anpassen. Alle anderen Packete sollte glaube ich auch mit postgresql 9 funktionieren, da sie lediglich “Recomends: postgresql-8.4” und nicht “Depends: postgresql-8.4” sind. Openstreetmap-postgis-db-setup is jedoch lediglich ein einfaches script, das eine neue db anlegt, die postgis extensions laedt und die Benutzer berechtigungen anpasst. Das kann man also ohne probleme manuell machen.

Bezueglich des Benutzers der genuegend Berechtigungen fuer ein osm2pgsql import hat, haette man einen normalen user bei der Frage nach den Berechtigungen im Config angeben sollen. Da man nicht voraus ahnen kann welche Benutzer Berechtigungen haben soll, kann man dafuer keine sinnvolle defaults haben. Die Beschreibung der Config Frage muss aber noch dahin angepasst werden um das klar zu machen.

Nachtraeglich die Berechtigungen zu korrigieren ist etwas kompliziert

sudo -u postgres createuser --no-superuser --no-create-db --no-createrole Peter
(
echo “GRANT ALL on geometry_columns TO Peter;”
echo “GRANT ALL ON SCHEMA PUBLIC TO Peter;”
echo “GRANT ALL on spatial_ref_sys TO Peter;”
)| sudo -u postgres psql -Upostgres gis

Dafuer sollte ich wohl die scripts noch etwas anpassen, das das leichter geht.

Der Upload neuer Packete war erfolgreich. Ich habe jedenfalls die Installation ohne Fehler durchführen können. Auch der Fehler mit dem User konnte bereinigt werden, nachdem ich als anzulegenden User einfach meinen Benutzernamen eingetragen habe.
Was noch nicht funktioniert ist osm2pgsql:

!! You are running this on 32bit system, so at most
!! 3GB of RAM can be used. If you encounter unexpected
!! exceptions during import, you should try running in slim
!! mode using parameter -s.

Reading in file: berlin.osm.pbf
Processing: Node(830k 207.5k/s) Way(0k 0.00k/s) Relation(0 0.00/s)Error allocating nodes
Error occurred, cleaning up

Es werden alle Knoten bearbeitet und dann tritt der Fehler auf. Zunächst dachte ich handelt es sich um einen Fehler in der heruntergeladenen Datei. Allerdings ist das auch bei einem zweiten Bundesland passiert.

So in der 64 Bitversion kann man dann auch die Daten importieren. Auch der Restart funktioniert. Allerdings bekomme ich keine Kacheln.
Eventuell fehlt dort noch etwas.
Versucht habe ich zum Beispiel: http://localhost/osm/15/17602/10746.png
importiert hatte ich berlin.osm.pbf

Sind die Hinweise auf fehlende Tabellen ok?


osm2pgsql SVN version 0.80.0 (32bit id space)

Using projection SRS 900913 (Spherical Mercator)
Setting up table: planet_osm_point
HINWEIS:  Tabelle »planet_osm_point« existiert nicht, wird übersprungen
HINWEIS:  Tabelle »planet_osm_point_tmp« existiert nicht, wird übersprungen
Setting up table: planet_osm_line
HINWEIS:  Tabelle »planet_osm_line« existiert nicht, wird übersprungen
HINWEIS:  Tabelle »planet_osm_line_tmp« existiert nicht, wird übersprungen
Setting up table: planet_osm_polygon
HINWEIS:  Tabelle »planet_osm_polygon« existiert nicht, wird übersprungen
HINWEIS:  Tabelle »planet_osm_polygon_tmp« existiert nicht, wird übersprungen
Setting up table: planet_osm_roads
HINWEIS:  Tabelle »planet_osm_roads« existiert nicht, wird übersprungen
HINWEIS:  Tabelle »planet_osm_roads_tmp« existiert nicht, wird übersprungen

Ich hab bei dem DB-User “chris” eingegeben statt des web-users.


Reading in file: nordrhein-westfalen.osm.pbf
Processing: Node(11200k 42.7k/s) Way(0k 0.00k/s) Relation(0 0.00/s)Getötet

Hmmm, woran ist der jetzt gestorben?

Sind 2 GB Ram überhaupt genug? :wink:

Ja, das ist normal.

Im Prinzip ist das korrekt, aber man benoetigt sowohl “chris” (fuer den osm2pgsql import) als auch “www-data”, da renderd unter dem Benutzer www-data laeuft und sonst keinen Zugriff auf die Datenbank fuers Rendering hat. Man kann auch noch weitere Benutzer eintragen wenn man die Datenbank fuer andere Zwecke verwenden will.

Die Liste der Namen ist durch ein einfaches Leerzeichen zu trennen.

Ist das ein 32 bit System?

Ich frage mich ob es etwas mit der kuerzlichen Aenderung des Speicherreservierens fuer Nodes zu tun hat ( http://trac.openstreetmap.org/changeset/26665/applications/utils/export/osm2pgsql )

Vielleicht hilft es den Parameter “–alloc-chunk” zu setzen um es rueckgaengig zu machen. Wieviel Node Cache wurde verwendet? Hilft es den zu verringern?

64 bit.
Ja, ich denke es liegt am Speicher. Laut top krallt sich osm2pgsql die 2GB und darüber hinaus Swap, bis er stirbt.
-C habe ich mal ohne Erfolg auf 700 runter gesetzt.
Edit: --alloc-chunk hat auch nicht geholfen

Nur um sicherzustellen, wird der Slim mode verwendet? “–slim” Falls nicht, habe die verschiedenen Parameter keinen Einfluss da die komplette Datei im Ram vorgehalten wird.

Wollte es mal neu installieren, beim sudo apt-get remove kommt Fehler:


Die folgenden Pakete werden ENTFERNT:
  libapache2-mod-tile
0 aktualisiert, 0 neu installiert, 1 zu entfernen und 0 nicht aktualisiert.
Nach dieser Operation werden 168 kB Plattenplatz freigegeben.
Möchten Sie fortfahren [J/n]? j
(Lese Datenbank ... 142632 Dateien und Verzeichnisse sind derzeit installiert.)
Entfernen von libapache2-mod-tile ...
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.
   ...fail!
invoke-rc.d: initscript apache2, action "restart" failed.
dpkg: Fehler beim Bearbeiten von libapache2-mod-tile (--remove):
 Unterprozess installiertes pre-removal-Skript gab den Fehlerwert 1 zurück
Fehler traten auf beim Bearbeiten von:
 libapache2-mod-tile
E: Sub-process /usr/bin/dpkg returned an error code (1)

Edit: --slim sieht gut aus

Es funktioniert! Ubuntu 64 Bit und er zeigt mir erste Kacheln an!
Was jetzt noch schön wäre, wenn wir das irgendwie dokumentieren können, wo welche Konfigdateien abgelegt sind, damit man zum Beispiel den Style von Mapnik ändern kann oder anderweitig auf die Datenbank zugreifen kann. Aber ersteinmal vielen vielen Dank!

Welche Schritte waren nötig?


sudo add-apt-repository ppa:kakrueger/openstreetmap
sudo apt-get update
sudo apt-get install libapache2-mod-tile
wget http://download.geofabrik.de/osm/europe/germany/berlin.osm.pbf
osm2pgsql berlin.osm.pbf
sudo /etc/init.d/renderd restart

Anschließend meldet sich der Server brav unter: http://localhost/osm/0/0/0.png

Achtung!
Bei der Konfiguration während der Installation unbedingt bei Usernamen der Zugriff auf die Datenbank haben soll nur den eigenen User ergänzen und den Vorgabewert nicht löschen. Der Nutzer www-data wird zum rendern gebraucht. Alle anderen Defaultparameter kann man so übernehmen, wie sie da stehen.
Beim einlesen mit osm2pgsql darauf achten, das man genügend Hauptspeicher zur Verfügung hat. Das einlesen von Berlin kostet etwas über 2GB bei größeren Ländern wird es entsprechend mehr. Sollte der Hauptspeicher nicht ausreichen, dann osm2pgsql wie folgt aufrufen: osm2pgsql --slim - C XXXX berlin.osm.pbf
Wobei die XXXX die MB Hauptspeicher sind, welche osm2pgsql benutzen kann. Je weniger Hauptspeicher ihr zur Verfügung stellt, desto länger dauert der import, da jetzt die Datenbank als Zwischenspeicher bemüht werden muss.

Für WindowsNutzer sei an dieser Stelle erwähnt, dass es neben der Möglichkeit Mapnik und Co unter Windows zu installieren auch die Möglichkeit gibt, dies in eine virtuelle Maschiene auszulagern.
Dafür einfach unter https://www.virtualbox.org/wiki/Downloads die entsprechende Version auswählen und installieren. Während der Installation werdet ihr gefragt ob ihr unsignierte Hardwaretriber installieren möchtet. Dies unbedingt bestätigen, da sonst keine Netzwerkverbindung eingerichtet werden. Diese sind aber nötig um aus dem Internet die Pakete herunterzuladen.
Danach einfach noch die ISO Datei von linux herunterladen: http://www.ubuntu.com/download/ubuntu/download
Entsprechend Eurer Bedürfnisse die 32 oder 64 Bit Version.
Dann legt ihr eine neue virtuelle Maschiene an. Wählt am besten das richtige Betriebssystem und legt eine neue Festplatte an. Achtet darauf, dass genug Speicher vorhanden ist. Meit einlesen und installieren verbraucht meine Festplatte für das Berlinbeispiel jetzt knapp 10GB. Wenn ihr jedoch ersteinmal anfangt zu rendern, wird sicher weit mehr Platz benötigt.
Nachdem ihr alles eingerichtet habt unbedingt noch mal die Einstellung ändern! Sucht euch den Menüpunkt Massenspeicher und klickt auf das CD Symbol. Dort müsst ihr noch euer frisch heruntergeladenes Linuyimage einbinden, damit ihr nicht erst die CD brennen müsst. Eventuell wollt ihr auch noch mehr Ressourcen zur Verfügung stellen. Sprich Grafikspeicher und Ram. Danach könnt ihr die Maschiene starten und loslegen. Die Installation ist auf deutsch und eigentlich selbsterklärend.

Eine Verbindung vom Windows zum Server habe ich aber bisher noch nicht herstellen können. Sind hier eventuell noch Rechte im Linux zu setzen, damit man von außen auf den Server zugreifen kann?

Soweit ich mich erinnere ist deine VM vom Host-System aus nicht mehr localhost. Die IP-Addresse findest du entweder über den Netzwerkmanager, oder über den Kommandozeilenparameter “ifconfig -a”.
Dann müsste das eigentlich funktionieren.

Viel Erfolg!

Sehr schoen.

Was hast Du jetzt geaendert im Gegensatz zu gestern Abend, als es noch nicht funktionierte?

Bei mir geht es nicht, hab allerdings auch Debian 6 (squeeze).

Sind die Grenzen und Kuestenlinien notwendig (zu viel zum Downloaden, brauch eh nur Bayern)
oder geht es auch ganz ohne oder mit “Fake-boundaries”?

Merci.

Ciao,
Frank

Ok, das Einlesen der nrw.pbf hat geklappt (Dauer ca. 2,5h), allerdings ist das Modul durch meinen gescheiterten Neuinstallationsversuch anscheinend kaputt.


sudo /etc/init.d/apache2 restart
[sudo] password for chris: 
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.
   ...fail!

Chris’ Fehler hat’ ich gestern abend auch, hab’ dann ein
tile.load → …/mods-available/tile.load
unter /etc/apache2/mods-enabled reingefriemelt. Danach startet der Apache wieder.

Kacheln seh’ ich trotzdem keine :frowning:

Ciao,
Frank

Was ich geändert habe? Eigentlich nur eins. Nähmlich bei der Konfiguration den User www-data stehen lassen und den eigenen nach einem Leerzeichen ergänzen. Ersetzt man www-data dann kann man zwar importieren bekommt aber keine Kacheln. lässt man www-data stehen kann man nicht importieren.
Beid er grafischen Installation steht es auch in der Hilfe. Ich habe natürlich die Küstenlinien runtergeladen, auch wenn ich nur Berlin importiert habe. Ob es ohne genauso geht werde ich mal testen.

Ok, mit dem Link kann ich apache2 auch restarten. Nun wollte ich noch den User www-data hinzufügen.
Problem 1 : es muss --no-createdb heißen (nicht --no-create-db)
Problem 2 :


(
>         echo "GRANT ALL on geometry_columns TO www-data;"
>         echo "GRANT ALL ON SCHEMA PUBLIC TO www-data;"
>         echo "GRANT ALL on spatial_ref_sys TO www-data;"
>         )| sudo -u postgres psql -Upostgres gis
FEHLER:  Syntaxfehler bei »-«
ZEILE 1: GRANT ALL on geometry_columns TO www-data;
                                             ^
FEHLER:  Syntaxfehler bei »-«
ZEILE 1: GRANT ALL ON SCHEMA PUBLIC TO www-data;
                                          ^
FEHLER:  Syntaxfehler bei »-«
ZEILE 1: GRANT ALL on spatial_ref_sys TO www-data;