PostgreSQL

From WickyWiki


Install PostgreSQL

sudo apt-get install postgresql

Configure authentication method:

sudo gedit /etc/postgresql/8.4/main/pg_hba.conf
# TYPE   DATABASE   USER    CIDR-ADDRESS   METHOD
  local  all        all                    trust   #Localhost

Assign password to user 'postgres':

sudo passwd postgres
Password: <root pwd>
Enter new UNIX password: **-postgres-pwd-**
Retype new UNIX password: **-postgres-pwd-**

Start SQL prompt:

sudo su postgres -c "psql"
  Password: **-root-pwd-**
psql

Configure password for user 'postgres' in PostgreSQL:

ALTER USER postgres WITH PASSWORD '**-postgres-pwd-**';
\q

Install GUI: pgAdmin III

sudo apt-get install pgadmin3
pgadmin3

Connection:

  • Host: localhost
  • User: postgres
  • Password: **-postgres-pwd-**

PostGIS

Install

sudo apt-get install postgresql-8.4-postgis postgis

Create a PostGIS database template

sudo su postgres
createdb postgistemplate
createlang plpgsql postgistemplate
psql -d postgistemplate -f /usr/share/postgresql/8.4/contrib/postgis.sql
psql -d postgistemplate -f /usr/share/postgresql/8.4/contrib/spatial_ref_sys.sql

PostGIS Viewer (didn't work)

Install

Install Python Qt:

sudo apt-get install python-qt4

Install Python Quantum-GIS:

X sudo apt-get install python-software-properties
X sudo add-apt-repository ppa:ubuntugis/ubuntugis-unstable
X sudo apt-get install qgis
X sudo apt-get install python-qgis
sudo gedit /etc/apt/sources.list
...
#qgis
deb    http://qgis.org/debian lucid main
deb-src http://qgis.org/debian lucid main
...
sudo apt-get update
sudo apt-get install qgis
sudo apt-get install python-qgis


Download viewer:

Extract postgis_viewer.zip to /usr/bin/.

sudo unzip postgis_viewer.zip -d /usr/bin/
sudo chmod 755 /usr/bin/postgis_viewer/ -R
sudo ln /usr/bin/postgis_viewer/postgis_viewer.py /usr/bin/postgis_viewer.py

Start viewer:

postgis_viewer.py -h localhost -U postgres -W postgres -s public -t "vpand2" -d "postgistemplate"

pgAdmin plugin

sudo gedit /usr/share/pgadmin3/plugins.ini
Title=View PostGIS layer
Command=$$PGBINDIR/postgis_viewer/postgis_viewer.py -h $$HOSTNAME -p $$PORT -U $$USERNAME -W $$PASSWORD -d $$DATABASE -s $$SCHEMA -t $$OBJECTNAME
Description=View PostGIS layer
Platform=unix
ServerType=postgresql
Database=Yes
SetPassword=Yes

ESRI shapefile to Postgres Script

#! /bin/bash
BASENAME="vpand2"
DBNAME="postgistemplate"
DBUSER="postgres"
SRID="28992"

#create script:  shp2pgsql [<options>] <shapefile> [<schema>.]<table>
shp2pgsql -s $SRID "$BASENAME.shp" "$BASENAME" > "import-$DBNAME-$BASENAME.sql"

#execute
echo Type $DBUSER password and press enter:
su $DBUSER -c "psql $DBNAME -f \"import-$DBNAME-$BASENAME.sql\"" &> "import-$DBNAME-$BASENAME.log"

#view
postgis_viewer.py -h localhost -U postgres -W **-postgres-pwd-** -s public -t $BASENAME -d $DBNAME

GeoServer

Install

Download, install and copy files:

sudo apt-get install gdal-bin openjdk-6-jdk openjdk-6-jre python-gdal unzip
cd ~
wget http://downloads.sourceforge.net/geoserver/geoserver-2.1.3-bin.zip
sudo mkdir /opt
cd /opt
sudo unzip ~/geoserver-2.1.3-bin.zip
sudo ln -s /opt/geoserver-2.1.3 /opt/geoserver

Add the user under which the GeoServer service will run:

sudo addgroup --system geoserver
sudo adduser --system --ingroup geoserver --no-create-home --disabled-password geoserver

Configure service

sudo gedit /etc/default/geoserver
GEOSERVER_DATA_DIR=/opt/geoserver/data_dir
GEOSERVER_HOME=/opt/geoserver
JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk
DAEMON="$JAVA_HOME/bin/java"
JAVA_OPTS="-Xms128m -Xmx512m -server"

Service startup script:

cd /opt/geoserver/bin
sudo wget -O initd.sh http://docs.geoserver.org/latest/en/user/_downloads/geoserver_deb
sudo ln -s /opt/geoserver/bin/initd.sh /etc/init.d/geoserver
sudo chmod +x ./initd.sh
sudo gedit /etc/init.d/geoserver

A minor change:

Change
# Default-Stop:      S 0 1 6
to
# Default-Stop:      0 1 6

Configure logfiles

sudo chown -R geoserver:geoserver /opt/geoserver-2.1.3/
sudo mkdir /opt/geoserver/webapps/geoserver/data
sudo mkdir /opt/geoserver/webapps/geoserver/data/logs
sudo chown geoserver:geoserver /opt/geoserver/webapps/geoserver/data/logs/

Start GeoServer

sudo /etc/init.d/geoserver start

Open admin page:

Login with admin, the default password is 'geoserver'. You may want to change that.

Trouble shooting

GeoServer process:

ps aux | grep java
5487 ?        Sl    0:21 /usr/lib/jvm/java-1.6.0-openjdk/bin/java -Xms128m -Xmx512m -server -DGEOSERVER_DATA_DIR=/opt/geoserver/data_dir -Djava.awt.headless=true -jar start.jar

GeoServer listener ports:

sudo lsof | grep TCP | grep geoserver
java      5487 geoserver  237u    IPv6      20420      0t0        TCP *:46378 (LISTEN)
java      5487 geoserver  249u    IPv6      20435      0t0        TCP *:http-alt (LISTEN)