Tag Archive | PostgreSQL

Webbformulär för PostGIS

Det var ett tag sedan jag testade lite servertjänster, men nu är det dags igen. Inte minst då releasen av Postgres 10 på sikt kommer att innebära att jag behöver uppgradera min databas, och då kan det vara bra att ha något att testa med innan.

I detta inlägg blir det dock lite annat…

Läs mer…

Annonser

Postgres 10

Då har (nyligen) Postgres, eller PostgreSQL, släppts i en ny version. Tänk att det fortfarande finns företag som vågar kalla en version för ”10” och inte ”X”…

Vad är det som är nytt? Det tänkte jag kika lite närmare på…

Läs mer…

PgAdminIV

Om det kommer att heta PgAdminIV eller PgAdmin4 får vi väl se, och det spelar kanske inte så stor roll.

Hur står sig PgAdmin4 mot PgAdmin3? Här kommer mina första intryck… Läs mer…

Geosupportsystem IT-plattform – Installationsguide del 2

I detta inlägg så är det ”städning” av den OpenGeo Suite installation som gjordes i förra inlägget.

Det mesta är beskrivet i den dokumentation som följer med installationen och det jag ändrat på eller anpassat rör sådant jag vill uppnå senare för att ytterligare öka flexibiliteten i IT-plattformen. Det finns även en del steg som helt enkelt inte fungerade för mig, så jag fick klura ut ett annat sätt att få det att fungera.

Jag börjar med PostgreSQL och PostGIS.

Läs mer…

En databas på annan plats…

Nu när jag skaffat mig en ny dator med många diskar, så ville jag sätta upp PostGIS så att geodatabasen lagrades på min RAID enhet med 4 TB.

Hur man istallerar PostGIS lokalt (eller på en server) har jag gått igenom flera gånger tidigare, vilket även hjälpte mig nu, så det hoppar jag över här.

Postgres och PostGIS är installerat på min systemdisk (SSD), men där vill jag inte lagra ”enorma mängder” geodata, som sällan används.

Efter lite efterforskningar så visade det sig vara väldigt enkelt att få till.

  1. Skapa en tom katalog på enheten där den nya databasen skall placeras. Jag skapar katalogen /home/postgis, vilket är en sökväg som ligger på min RAID enhet.
  2. Skapa ett nytt ”Tablespace” i pgAdminIII genom att högerklicka i Tablespaces och välja ”New Tablespace…”Fyll i ett namn och en ägare på första fliken och sökvägen till den tidigare skapade katalogen på den andra.
  3. Skapa en ny databas på samma sätt (högerklick, ”New Database…”) och ange namn och ägare på första fliken.
    På den andra fliken skall du välja en PostGIS databas som mall (template) och det tidigare skapade ”Tablespace” för att tala om var databasen skall lagra sina data.

Mer än så är det inte.

Sedan är det bara att koppla upp sig och köra på. Postgres och PostGIS tar hand om resten.

Det stod i instruktionen att användaren ”postgres” skulle vara ägare till katalogen som skapades i steg ett, men jag är inte säker på att det behövs…

Om det behövs så är terminalkommandot i linux för detta:

sudo chown -R postgres /home/postgis

Då får du naturligtvis byta ut sökvägen på slutet till din egen motsvarighet.

PostGIS uppföljning

I går så installerade jag PostGIS för användning i QGIS och nu tänkte jag mest för egen skull dokumentera några erfarenheter till.

När man lägger upp användare i Postgresql (roller) så kan man använda dessa för att skapa nya data i QGIS. Om andra skall kunna läsa eller redigera dessa så måste man dock tilldela dem dessa rättigheter eftersom den användare som skapat tabellen blir ensam ägare av den.

I OpenGeo Explorer så kan man markera databasen och välja ”Run SQL…”

Om man skapat en tabell kallad ”data” och vill att rollen ”users” skall ha alla rättigheter i detta lager så skriver man:

GRANT ALL PRIVILEGES ON data TO users;

Om man har en funktion för att räkna upp id automatiskt (default när man skapar ny tabell) så måste man även tilldela rättigheter till denna ”sekvens”:

GRANT ALL ON SEQUENCE data_id_seq TO users;

Vad sekvensen heter kan man kontrollera i OpenGeo Explorer genom att klicka på tabellen. Som standard döps den till ”tabellnamn_fältnamn_seq”.

Nu bör alla i gruppen ”users” kunna läsa och redigera data i lagret.

Vill man ge andra rättigheter eller begränsa det till vissa användare så går det också att göra…

GRANT SELECT ... rätt att läsa
GRANT UPDATE ... rätt att ändra
GRANT INSERT ... rätt att lägga till

Det går även att styra om en specifik användare endast skall kunna läsa allt (eller vissa kolumner) men bara kunna uppdatera data i en specifik kolumn genom att lägga till kolumnnamnet inom parentes efter kommandot.

GRANT SELECT(kolumn1, kolumn3, kolumn6), UPDATE(kolumn3) ON data TO some_user;

Glöm nu slutligen inte heller att om man sparar QGIS projektet så sparas inskrivna lösenord också… i klartext!

Egen server för geodatatjänster – Del 2

I denna andra del installeras OpenGeo Suite 4.0. Jag har tidigare visat hur sviten installeras flera gånger, men företaget bakom envisas med att uppdatera mjukvaran hela tiden, så mina instruktioner inte längre fungerar så bra. Jag vill också passa på att varna för att kopiera och klistra in kommandon i texten nedan direkt i terminalen på servern. Det är inte alltid som ett ”-tecken blir rätt när WordPress har formaterat om alla texter jag skriver, så se upp lite.

OpenGeo Suite 4.0

Denna svit från Boundless består av ett antal Open Source program, anpassade och paketerade för att fungera ihop på ett bra sätt. Genom att installera OpenGeo Suite så får man följande installerat:

  • Postgresql, databas
  • PostGIS, rumsligt tillägg till Postgresql
  • GeoServer, tjänsteserver för OGC-tjänster
  • OpenLayers, javaskript-bibliotek för hantering av webbkartor
  • GeoExplorer, grafiskt skapa webbkartor på ett enkelt sätt.

En mängd tillägg och beroenden löses också automatiskt genom att installera sviten i stället för alla paket var för sig.

Installationen görs genom nedanstående kommandon.

sudo su
wget -qO- http://apt.opengeo.org/gpg.key | apt-key add -
echo ”deb http://apt.opengeo.org/suite/v4/ubuntu precise main” > /etc/apt/sources.list.d/opengeo.list
apt-get update
apt-get install opengeo

Nu körs en ganska omfattande installation, som i princip gör i ordning allt det ovanstående, men det behöver justeras lite för att fungera helt och hållet.

Två konfigurationsfiler behöver ändra för att Postgresql skall fungera. Jag använder ”vim”, men det går bra med ”nano” eller annan editor.

Först så behöver man ta reda på serverns IP-adress med kommandot:

ifconfig

I filen /etc/postgresql/9.3/main/postgresql.conf så letar man reda på raden som börjar med #listen_addresses och tar bort brädgårdstecknet och ändrar ‘localhost’ till ‘192.168.1.10’, där IP-adressen är serverns.

I filen /etc/postgresql/9.3/main/pg_hba.conf skall rätt adressrymd läggas till på en ny rad under ”IPv4”. På samma format som den raden som redan är där lägger man till:

host all all 192.168.1.1/24 md5

Adressen ovan är samma som serverns, förutom att sista siffran byts mot en ”etta” med tillägget ”/24”. Detta innebär att man avser alla adresser som börjar på 192.168.1. Ett annat sätt att ange nätmask 255.255.255.0 om det är mer bekant.

Starta om Postgresql med kommandot:

/etc/init.d/postgresql restart

För att kunna använda PostGIS så måste även en sådan databas skapas. Detta görs genom att köra ett antal skript, men först så måste man sätta lösenord för användaren ”postgres”. Detta görs först i operativsystemet och sedan internt i postgres. Det behöver inte vara samma lösenord, men det blir betydligt enklare att komma ihåg om man skapar ett ”super-admin lösen”. Ytterligare användare och lösenord för olika syften kan skapas separat.

passwd postgres
sudo -u postgres psql 
\password postgres
\q

Ange lösenordet när det efterfrågas ovan. Mera kommandon i terminalen:

cd /usr/share/postgresql/9.3/contrib/postgis-2.1/
sudo -u postgres createdb geodata
sudo -u postgres psql -d geodata -f postgis.sql
sudo -u postgres psql -d geodata -f spatial_ref_sys.sql
sudo -u postgres psql -d geodata -f postgis_comments.sql
sudo -u postgres psql -d geodata -f rtpostgis.sql
sudo -u postgres psql -d geodata -f raster_comments.sql
sudo -u postgres psql -d geodata -f topology.sql
sudo -u postgres psql -d geodata -f topology_comments.sql

Kommandona ovan skapar en PostGIS databas kallad ”geodata”, men vill du att den skall heta något annat så är det bara att ändra på alla rader.

Om man inte vill använda ett kommersiellt företags paketlösning för en geoserver så behöver man inte det heller. Om man exempelvis inte tänker använda GeoExplorer för att skapa webbkartor och nöjer sig med det alternativ till OGC-tjänster som redovisas i senare delar så kan ett alternativ vara att installera endast Postgresql och PostGIS. Då får man fördelarna med databaslagring, men utan en stor programpaketsinstallation som man ändå inte använder.