Ubuntupaket für lokalen Tileserver

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;

Ja dies hatte ich auch schon vermutet, auch habe ich von Nat auf Netzwerkbrücke umgestellt, aber dennoch erreiche ich keinen. Ein Ping ist aber erfolgreich. Ich vermute ja das liegt an Windows7. Er erkennt das Netzwerk nämlich nicht.
Edit:

Er meldet sich doch! aber nicht unter der IP die man im Windows lesen kann, sondern eben unter der welche er selbst vom dhcp erhalten hat! Also schaut man unter Linux in den Verbindungsinformationen nach und siehe da es geht!

Und wenn du den User in ’ einschließt?
Ich gebe ja zu in der virtualbox ist die Sache einfacher. Da wird einfach ein neues Linux installiert und fertig.

yep, man kann auch ein
"www-data"
verwenden, dann klappt es mit den “Bindestrich-user”

Mit dem verwendeten style sheet sind die Kuestenlinien notwending. Wenn man sie nicht hat startet Mapnik nicht. Wahrscheinlich koennte man den Kuesten layer aber relativ leicht aus dem Stylesheet herausnehmen. Mit den Stylesheets kenne ich mich aber nicht so aus.