Login lokale PostGIS (RenderingStack)

Hi,
ich habe mir mal den Ubuntu Renderingstack lokal installiert und der funktioniert auch wunderbar mit dem Apache.

Allerdings wollte ich auch große Bilder hiermit erzeugen:
http://svn.openstreetmap.org/applications/rendering/mapnik/generate_image.py
Ich habe also wie folgt das aufgerufen:

export MAPNIK_MAP_FILE=/etc/mapnik-osm-data/osm.xml
python generate_image.py

Da bekomme ich aber leider nur eine Fehlermeldung:

Hat da jemand einen Tipp? Passen da Sachen nicht zusammen?
Ich wollte mich auch mit pgAdmin mal in der lokalen DB umsehen, musste dabei jedoch feststellen, dass ich dort einfach nicht rein komme, obwohl ich beim Setup auch meinem Nutzer die Rechte an der DB gegeben hatte :confused:

www-data ist doch eigentlich für den webserver da. mit dieser userid kann apache die web-seiten lesen. damit dürfte der Zugriff auf die datenbak natürlich nicht möglich sein (ist auch nicht sinnvoll). Check mal username und password für die db in osm.xml

gruss
walter

Wenn Du noch als User “postgres” damit arbeiten kannst, kannst Du die Rechte mit

GRANT SELECT, INSERT, UPDATE, DELETE ON "public"."tabelle" TO "benutzername";

(oder halt entsprechend weniger)

Häufiger darf man sich nicht anmelden, weil die Rechte in “/etc/postgresql/ Versionsnummer /main/pg_hba.conf” nicht passen: Da steht bei mir z.B.

# Database administrative login by UNIX sockets
local   all         postgres                          ident

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD

# "local" is for Unix domain socket connections only
local   all         all                               md5
# IPv4 local connections:
host    all         all         127.0.0.1/32          md5

Was so viel heisst wie “Der Herr postgres darf ohne Passwort rein, wenn er am Server angemeldet ist. Alle anderen mit Passwort”.

Danke für eure Hinweise. Vielleicht bin ich ja auch einfach zu unerfahren damit.

Habe mal den Nutzer “gis” als Nutzer eingetragen, der sollte ja im Stack als default genutzt werden?
Leider bekomme ich nun:


python generate_image.pyTraceback (most recent call last):
  File "generate_image.py", line 42, in <module>
    mapnik.load_map(m,mapfile)
RuntimeError: Could not create datasource. No plugin found for type 'gis' (searched in: /usr/lib/mapnik/2.0/input) (encountered during parsing of layer 'landcover' in map '/etc/mapnik-osm-data/osm.xml')

Leider ist mir noch nicht klar, wie ich mich mit dem pgadmin in die DB einklinken kann. Vermutlich ist der gis Nutzer ja ohne Passwort ausgestattet? Genau das mag der DB Client aber nicht und meine pg_hba.conf ist genau wie deine. grübel

Zum Tileserver kann ich nichts sagen. aber vielleicht dazu:

Als User postgres:

postgres@server:~$ psql
postgres=# CREATE USER verwalter WITH PASSWORD '123456';
CREATE ROLE
postgres=# GRANT ALL ON DATABASE deindatenbankname TO verwalter;
GRANT

Damit hast Du einen User “verwalter” mit Passwort 123456, der deine Datenbank verwalten darf. Hilft vielleicht, sich mit pgadmin mal anzusehen, welche User und Datenbanken da rumliegen…

Sicher, dass der Benutzer “gis” heißt? Normalerweise lautet der Datenbankname “gis” und der Benutzer anders. Als welcher Benutzer wird denn das Ubuntu-Dingens ausgeführt? (Einfach mal was rendern und z.B. mit htop den Prozess suchen.)
Dann versuche dich als dieser Benutzer (“sudo -u username -i”) mit “psql gis” bei der Datenbank anzumelden. Mal drinnen mit “\d” nach Tabellen gucken und “\q” zum verlassen.

Ich habe es nun auch mit pgadmin hinbekommen, man muss einfach ganz hart die Standartwerte drin lassen (kein Nutzer, kein Passwort), dann kann man sich als normaler Nutzer auch mit der lokalen DB verbinden.

Mein eigentliches Problem mit dem Skript besteht aber immernoch. Es findet kein Plugin für die GIS DB. Komisch, da der RenderD im Hintergrund ja fröhlich mit dem Setup vor sich hin läuft :confused:

wenn das dein Problem von hier sein sollte: Type ist nicht der User und muß postgis sein. maximal user, dbname und password ändern. Type definiert den Treiber, den die Software verwenden soll.

inc/datasource-settings.xml.inc


<!--
Settings for your postgres setup.

Note: feel free to leave password, host, port, or use blank
-->

<Parameter name="type">postgis</Parameter>                           <---------------------- 
<Parameter name="password">%(password)s</Parameter>
<Parameter name="host">localhost</Parameter>
<Parameter name="port">5432</Parameter>
<Parameter name="user">osmuser</Parameter>
<Parameter name="dbname">osmdb</Parameter>
<!-- this should be 'false' if you are manually providing the 'extent' -->
<Parameter name="estimate_extent">'false'</Parameter>
<!-- manually provided extent in epsg 900913 for whole globe -->
<!-- providing this speeds up Mapnik database queries -->
<Parameter name="extent">-20037508,-20037508,20037508,20037508</Parameter>

Gruß
walter

Wie wambacher beschrieben hat, enthaelt die Datei inc/datasource-settings.xml.inc einige wichtige Parameter fuer die Verbindung zu Postgresql. Unter anderem auch den username. Falls du die PPA packete von switch2osm.org verwendest, dann ist dort der username default maessig auf “www-data” gesetzt, da renderd unter dem namen laeuft.

Die standard Authentifizierung die in Ubuntu fuer postgresql aktiviert ist, ist das Postgresql dem lokalen Betriebsystem vertraut den lokalen Benutzer bereits authentifiziert zu haben. Demzufolge braucht man dann kein Passwort, wenn man sich bei Postgresql mit seinem Unix Benutzername anmeldet. Allerdings klappt das nur fuer lokale Zugriffe und nur ueber “unix domain sockets”, nicht TCP/IP Verbindungen. Demzufolge muss der Parameter “host” auskommentiert bleiben, denn auch “localhost” zwingt die Verbindung ueber TCP/IP.

Als Loesung fuer das Problem ist moeglicherweise, einfach auch noch den “user” parameter auskommentieren. Dann verwendet er hoffentlich jeweils den korrekten. Ansonsten muesstest du ihn manuell auf den korrekten user namen setzen.

er hat ja weiter oben geschrieben, dass er bei Type=gis angemotzt wird. Eventuell hat er ja vor Tagen postgis nach gis geändert und nur vergessen, das rückgängig zu machen.
Aber schaun mer mal.

Gruss
walter

Da habt ihr genau richtig getippt :slight_smile:

Ich dachte mir dann nämlich auch, dass das ja eigentlich den Zugang zur Datenquelle beschreiben muss. Komisch, kann mich nicht entsinnen da was verstellt zu haben. Naja…
Ansonsten habe ich noch ein Verständnisproblem: Ich musste für generate_image.py nämlich mich als user eintragen, damit es klappt.
Wie kann ich mich denn als der www-data Nutzer ausgeben? Mit sudo -u hat das mangels Passwort leider nicht geklappt.

Ich hab in solchen fällen immer ein PHP-Script geschrieben das neue Berechtigungen für die Datei setzt. Da PHP als www-data arbeitet hat das Script die entsprechende Berechtigung dazu.

Probier mal “sudo su - www-data

max@offler:~$ id
uid=1000(max) gid=113(max) Gruppen=...
max@offler:~$ sudo su - www-data
[sudo] password for max: 
$ id
uid=33(www-data) gid=33(www-data) Gruppen=33(www-data)