
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 MULTIPOLYGONesto 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/geoserverTenemos que crear el ambiente con:
echo "export GEOSERVER_HOME=/usr/share/geoserver" >> ~/.profile
. ~/.profileY 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.jarFuncionó (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 postgresqlSi se llega a perder PostGIS nos da el error:
"could not access file "$libdir/postgis-3"" solo instalarlo nuevamente sudo dnf install postgis