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