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
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
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
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>
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.
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.
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)