Instalación PostGIS+Geoserver en Fedora

postgis
geoserver
Autor/a

Elio Lagunes-Díaz

Fecha de publicación

16 de enero de 2023

Imagen de la capa final, leída de PostGIS, en WMS con estilo sld hecho en QGIS

Aquí documentamos cómo se llevó a cabo la instalación de PostgreSQL + PostGIS + Geoserver; con una serie de indicaciones y una sección de troubleshooting

POSTGRESQL

instalamos postgresql según https://docs.fedoraproject.org/en-US/quick-docs/postgresql/

sudo dnf install postgresql-server postgresql-contrib
sudo systemctl enable postgresql # activar (viene desactivado por default)
sudo postgresql-setup --initdb --unit postgresql # popular con data inicial
sudo systemctl start postgresql # arrancar
sudo -u postgres psql # abrir psql
postgres=# CREATE USER datamarindo WITH PASSWORD 'C********';
postgres=# CREATE DATABASE inecol OWNER datamarindo;
postgres=# \password postgres
# C***********

POSTGIS

Se instala de los repositorios de Fedora y se crean las extensiones correspondientes dentro de la sesión psql, entrando como superusuario, lo que conlleva una serie de pasos especiales para este caso, descritos en los comentarios del código siguiente.

sudo dnf install postgis # versión 3.2.2 en enero 2023

# para crear la extensión postgis es necesario entrar como superusuario, postgres no es un usuario, así que hay que entrar como el usuario que sí es superusuario 
sudo -i -u postgres
#[sudo] password for datamarindo: # ponemos nuestra clave
# ora sí, creamos la extensión
[postgres@fedora ~]$ psql inecol # checa el usuario, cambió a postgres!!!
psql (14.3)
Type "help" for help.

inecol=# CREATE EXTENSION postgis;
inecol=# CREATE EXTENSION postgis_raster;
inecol=# CREATE EXTENSION postgis_topology;

Y le cargamos una capa cualquiera con el comando ogr2ogr

ogr2ogr -f "PostgreSQL" PG:"dbname='inecol'" mun20gw.shp -nlt MULTIPOLYGON

esto debe ser en un directorio escribible como /home/datamarindo/ ; si no da un error poco orientador de: ERROR 1: attempt to write a readonly database: this file is a WAL-enabled database.

Instalación Geoserver

En Fedora el su viene sin asignar, por lo que antes de instalar openjdk, tenemos que asignarle una clave al su

sudo passwd root

y así ya instalamos openjdk con

su -c "yum install java-1.8.0-openjdk"

En la página de geoserver escogemos platform independent binary: https://geoserver.org/release/stable/

Y luego descargamos el geoserver de esta página sourceforge https://sourceforge.net/projects/geoserver/postdownload

Descomprimimos el archivo, pasamos los contenidos al

sudo mkdir /usr/share/geoserver

sudo cp /home/datamarindo/Downloads/geoserver-2.22.0-bin/* /usr/share/geoserver

Tenemos que crear el ambiente con:

echo "export GEOSERVER_HOME=/usr/share/geoserver" >> ~/.profile
. ~/.profile

Y cambiamos propietario

sudo chown -R datamarindo /usr/share/geoserver/

Abrirlo desde cd /usr/share/geoserver/bin y mandar el comando sh startup.sh tenía una problemática con los paths que no pude resolver; correrlo como

java -jar start.jar

Funcionó (aunque es mejor el archivo startup.sh)

Abrimos en

localhost:8080/geoserver # tarda como 10 segundos en cargar

Y luego cargamos una capa a geoserver desde PostGIS 1. Entrar como admin + geoserver; 1. Creamos un workspace 1. Le añadimos una store 1. Conectamos con PostGIS (hay que revisar la autenticación en pg_hba.conf, instrucciones más abajo)

PARA CONECTAR EN QGIS TIENE QUE LLEGAR A UN WORKSPACE O AL GENERAL OWS http://localhost:8080/geoserver/ows

TROUBLESHOOTING

Revisar el puerto de escucha: postgres=> select * from pg_settings where name = 'port';

Revisar que la autenticación sea md5 y no ident https://stackoverflow.com/questions/52031377/ident-authentication-failed-for-user-ckan-default de ser el caso, cambiar pg_hba.conf

sudo nano /var/lib/pgsql/data/pg_hba.conf

# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5
# Y REINICIAR POSTGRES 

[datamarindo@fedora bin]$ sudo systemctl stop postgresql
[datamarindo@fedora bin]$ sudo systemctl restart postgresql

Si se llega a perder PostGIS nos da el error:

"could not access file "$libdir/postgis-3"" solo instalarlo nuevamente sudo dnf install postgis